From 7b115c316e5f4b7e0fdcfb370cdb0e4363099270 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 9 Apr 2022 22:31:59 +0200 Subject: [PATCH 01/83] Add containerized build --- .gitignore | 2 + Makefile | 173 ++------------------------- MakefileContainer.mk | 125 +++++++++++++++++++ MakefileLocal.mk | 219 ++++++++++++++++++++++++++++++++++ README.md | 33 ++++- submodules/ledger-app-builder | 1 + submodules/template.sh | 60 ++++++++++ 7 files changed, 446 insertions(+), 167 deletions(-) create mode 100644 MakefileContainer.mk create mode 100644 MakefileLocal.mk create mode 160000 submodules/ledger-app-builder create mode 100755 submodules/template.sh diff --git a/.gitignore b/.gitignore index 356539b2..7ed227fe 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ src/u2f_crypto_data.h src/glyphs.h src/glyphs.c .vscode +output-scan-build +pkg diff --git a/Makefile b/Makefile index c68e4d1c..25d3738e 100644 --- a/Makefile +++ b/Makefile @@ -15,176 +15,17 @@ # limitations under the License. #******************************************************************************* -ifeq ($(BOLOS_SDK),) -$(error Environment variable BOLOS_SDK is not set) -endif -include $(BOLOS_SDK)/Makefile.defines +# We use BOLOS_SDK to determine the development environment that is being used +# BOLOS_SDK IS DEFINED We use the plain Makefile for Ledger +# BOLOS_SDK NOT DEFINED We use a containerized build approach +# containerize build is recommended -SIGNKEY = `cat sign.key` -APPSIG = `cat bin/app.sig` NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" PIN = 5555 -APPNAME = "FIO" -APPVERSION_M = 0 -APPVERSION_N = 0 -APPVERSION_P = 2 -APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" - -APP_LOAD_PARAMS =--appFlags 0x240 --curve secp256k1 --path "44'/235'" -APP_LOAD_PARAMS += $(COMMON_LOAD_PARAMS) - -ifeq ($(TARGET_NAME),TARGET_NANOS) - ICONNAME=icon_fio_nanos.gif -else - ICONNAME=icon_fio_nanox.gif -endif - -################ -# Default rule # -################ -all: default - -############ -# Platform # -############ -DEFINES += OS_IO_SEPROXYHAL -DEFINES += HAVE_BAGL HAVE_SPRINTF HAVE_SNPRINTF_FORMAT_U -DEFINES += APPVERSION=\"$(APPVERSION)\" -DEFINES += MAJOR_VERSION=$(APPVERSION_M) MINOR_VERSION=$(APPVERSION_N) PATCH_VERSION=$(APPVERSION_P) - -# Ledger: add the "Pending security review" disclaimer -APP_LOAD_PARAMS += --tlvraw 9F:01 -DEFINES += HAVE_PENDING_REVIEW_SCREEN - -## USB HID? -DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU - -## USB U2F -DEFINES += HAVE_U2F HAVE_IO_U2F U2F_PROXY_MAGIC=\"FIO\" USB_SEGMENT_SIZE=64 - -## WEBUSB -#WEBUSB_URL = https://www.ledger.com/pages/supported-crypto-assets -#DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=$(shell echo -n $(WEBUSB_URL) | wc -c) WEBUSB_URL=$(shell echo -n $(WEBUSB_URL) | sed -e "s/./\\\'\0\\\',/g") -DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" - -## BLUETOOTH -ifeq ($(TARGET_NAME),TARGET_NANOX) - DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000 HAVE_BLE_APDU -endif - -## Protect stack overflows -DEFINES += HAVE_BOLOS_APP_STACK_CANARY - -ifeq ($(TARGET_NAME),TARGET_NANOS) -DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 -else -DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 -DEFINES += HAVE_GLO096 -DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64 -DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX -DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX -DEFINES += HAVE_UX_FLOW -endif - -DEFINES += RESET_ON_CRASH - -## Use developer build -# DEVEL = 1 -# DEFINES += HEADLESS - -# Enabling debug PRINTF -ifeq ($(DEVEL), 1) - DEFINES += DEVEL HAVE_PRINTF - ifeq ($(TARGET_NAME),TARGET_NANOS) - DEFINES += PRINTF=screen_printf - else - DEFINES += PRINTF=mcu_usb_printf - endif -else - DEFINES += PRINTF\(...\)= -endif - -############## -# Compiler # -############## -ifneq ($(BOLOS_ENV),) -$(info BOLOS_ENV=$(BOLOS_ENV)) -CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ -GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ -else -$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) -endif -ifeq ($(CLANGPATH),) -$(info CLANGPATH is not set: clang will be used from PATH) -endif -ifeq ($(GCCPATH),) -$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) -endif - -ifeq ($(TARGET_NAME),TARGET_NANOS) -WERROR := -Werror=incompatible-pointer-types -Werror=return-type +ifeq ($(BOLOS_SDK),) +include $(CURDIR)/MakefileContainer.mk else -WERROR := -Werror=return-type -endif - -CC := $(CLANGPATH)clang -CFLAGS += -O3 -Os -Wall -Wextra -Wuninitialized $(WERROR) - -AS := $(GCCPATH)arm-none-eabi-gcc -LD := $(GCCPATH)arm-none-eabi-gcc - -LDFLAGS += -O3 -Os -Wall -LDLIBS += -lm -lgcc -lc - -##Enable to strip debug info from app -#LDFLAGS += -Wl,-s - -################## -# Dependencies # -################## - -# import rules to compile glyphs -include $(BOLOS_SDK)/Makefile.glyphs - -### computed variables -APP_SOURCE_PATH += src -SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f -SDK_SOURCE_PATH += lib_ux -ifeq ($(TARGET_NAME),TARGET_NANOX) - SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl +include $(CURDIR)/MakefileLocal.mk endif - -############## -# Build # -############## - -load: all - python -m ledgerblue.loadApp $(APP_LOAD_PARAMS) - -delete: - python -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS) - -seed: - python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) - - -# import generic rules from the sdk -include $(BOLOS_SDK)/Makefile.rules - -#add dependency on custom makefile filename -dep/%.d: %.c Makefile - -listvariants: - @echo VARIANTS COIN flow - -############## -# Style # -############## - -# better to run this manually to avoid irrelevant dependencies processing -format: - clang-format -i src/* diff --git a/MakefileContainer.mk b/MakefileContainer.mk new file mode 100644 index 00000000..73cc3fa9 --- /dev/null +++ b/MakefileContainer.mk @@ -0,0 +1,125 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +ifneq ($(BOLOS_SDK),) +$(error Containerized build, BOLOS_SDK should be empty) +endif + +default_target: build + +SPECULOS_SDK=2.0 +SPECULOS_MODEL_SWITCH=nanos +NANO_ICON_GIF=nanos_icon.gif +BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk +TARGET_NAME=TARGET_NANOS +TEST_DEVICE=nanos +ifeq ($(TARGET_DEVICE), NANO_X) + $(info Targeting NanoX) + SPECULOS_MODEL_SWITCH=nanox + NANO_ICON_GIF=nanox_icon.gif + BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk + TARGET_NAME=TARGET_NANOX + TEST_DEVICE=nanox +endif + +ifdef INTERACTIVE +INTERACTIVE_SETTING:="-i" +TTY_SETTING:="-t" +else +INTERACTIVE_SETTING:= +TTY_SETTING:= +endif + +#We build the container from source to avoid this issue https://github.community/t/docker-pull-from-public-github-package-registry-fail-with-no-basic-auth-credentials-error/16358 +define run_docker + @echo "docker host: id -u: `id -u`" + @echo "docker host: whoami: `whoami`" + docker version + docker build -t ledger-app-builder:latest $(CURDIR)/submodules/ledger-app-builder + docker run $(TTY_SETTING) $(INTERACTIVE_SETTING) $(MAKE_LINUX_DOCKER_OPTIONS) --rm \ + -e SCP_PRIVKEY=$(SCP_PRIVKEY) \ + -e BOLOS_ENV_IGNORE=/opt/bolos \ + -e COIN=$(COIN) \ + -e APP_TESTING=$(APP_TESTING) \ + -e BOLOS_SDK=$(BOLOS_SDK_DIRECTORY) \ + -e TARGET_NAME=$(TARGET_NAME) \ + -u $(USERID):$(USERID) \ + -v $(shell pwd):/app \ + $(1) \ + ledger-app-builder:latest \ + $(2) +endef + +############## +# Build # +############## + +.PHONY: shell +shell: + $(call run_docker, -ti, bash) + +.PHONY: build +build: + $(call run_docker, , make build) + +.PHONY: all +all: + $(call run_docker, , make all) + +.PHONY: clean +clean: + $(call run_docker, , make clean) + +.PHONY: listvariants +listvariants: + $(call run_docker, , make listvariants) + +.PHONY: size +size: + $(call run_docker, , make size) + + +############## +# Style # +############## + +.PHONY: format +format: + $(call run_docker, , make format) + +#Does not work in non-containerized build +.PHONY: scan-build +scan-build: + $(call run_docker, , make scan-build) + + +############## +# Load # +############## + +.PHONY: load +load: build + ${CURDIR}/pkg/loadingtool.sh load + +.PHONY: delete +delete: build + ${CURDIR}/pkg/loadingtool.sh delete + +.PHONY: seed +seed: + python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) + diff --git a/MakefileLocal.mk b/MakefileLocal.mk new file mode 100644 index 00000000..a4314384 --- /dev/null +++ b/MakefileLocal.mk @@ -0,0 +1,219 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +ifeq ($(BOLOS_SDK),) +$(error Environment variable BOLOS_SDK is not set) +endif + +APPNAME = "FIO" +APPVERSION_M = 0 +APPVERSION_N = 0 +APPVERSION_P = 2 +APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" +APPPATH = "44'/235'" + +################## +# Default target # +################## + +default_target: build + +include $(BOLOS_SDK)/Makefile.defines + +APP_LOAD_PARAMS =--appFlags 0x240 --curve secp256k1 --path "44'/235'" +APP_LOAD_PARAMS += $(COMMON_LOAD_PARAMS) + +ifeq ($(TARGET_NAME),TARGET_NANOS) + ICONNAME=icon_fio_nanos.gif +else + ICONNAME=icon_fio_nanox.gif +endif + +############ +# Platform # +############ +DEFINES += OS_IO_SEPROXYHAL +DEFINES += HAVE_BAGL HAVE_SPRINTF HAVE_SNPRINTF_FORMAT_U +DEFINES += APPVERSION=\"$(APPVERSION)\" +DEFINES += MAJOR_VERSION=$(APPVERSION_M) MINOR_VERSION=$(APPVERSION_N) PATCH_VERSION=$(APPVERSION_P) + +# Ledger: add the "Pending security review" disclaimer +APP_LOAD_PARAMS += --tlvraw 9F:01 +DEFINES += HAVE_PENDING_REVIEW_SCREEN + +## USB HID? +DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU + +## USB U2F +DEFINES += HAVE_U2F HAVE_IO_U2F U2F_PROXY_MAGIC=\"FIO\" USB_SEGMENT_SIZE=64 + +## WEBUSB +#WEBUSB_URL = https://www.ledger.com/pages/supported-crypto-assets +#DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=$(shell echo -n $(WEBUSB_URL) | wc -c) WEBUSB_URL=$(shell echo -n $(WEBUSB_URL) | sed -e "s/./\\\'\0\\\',/g") +DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" + +## BLUETOOTH +ifeq ($(TARGET_NAME),TARGET_NANOX) + DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000 HAVE_BLE_APDU +endif + +## Protect stack overflows +DEFINES += HAVE_BOLOS_APP_STACK_CANARY + +ifeq ($(TARGET_NAME),TARGET_NANOS) +DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 +else +DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 +DEFINES += HAVE_GLO096 +DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64 +DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX +DEFINES += HAVE_UX_FLOW +endif + +DEFINES += RESET_ON_CRASH + +## Use developer build +# DEVEL = 1 +# DEFINES += HEADLESS + +# Enabling debug PRINTF +ifeq ($(DEVEL), 1) + DEFINES += DEVEL HAVE_PRINTF + ifeq ($(TARGET_NAME),TARGET_NANOS) + DEFINES += PRINTF=screen_printf + else + DEFINES += PRINTF=mcu_usb_printf + endif +else + DEFINES += PRINTF\(...\)= +endif + +############## +# Compiler # +############## + +ifneq ($(BOLOS_ENV),) +$(info BOLOS_ENV=$(BOLOS_ENV)) +CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ +GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ +else +$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) +endif +ifeq ($(CLANGPATH),) +$(info CLANGPATH is not set: clang will be used from PATH) +endif +ifeq ($(GCCPATH),) +$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) +endif + +ifeq ($(TARGET_NAME),TARGET_NANOS) +WERROR := -Werror=incompatible-pointer-types -Werror=return-type +else +WERROR := -Werror=return-type +endif + +CC := $(CLANGPATH)clang +CFLAGS += -O3 -Os -Wall -Wextra -Wuninitialized $(WERROR) + +AS := $(GCCPATH)arm-none-eabi-gcc +LD := $(GCCPATH)arm-none-eabi-gcc + +LDFLAGS += -O3 -Os -Wall +LDLIBS += -lm -lgcc -lc + +##Enable to strip debug info from app +LDFLAGS += -Wl,-s + + +################## +# Dependencies # +################## + +# import rules to compile glyphs +include $(BOLOS_SDK)/Makefile.glyphs + +### computed variables +APP_SOURCE_PATH += src +SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f +SDK_SOURCE_PATH += lib_ux +ifeq ($(TARGET_NAME),TARGET_NANOX) + SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl +endif + + +############## +# Build # +############## + +build: bin/app.elf + @mkdir -p pkg + @echo "#!/usr/bin/env bash" > $(CURDIR)/pkg/loadingtool.sh + @echo "APPNAME=\"${APPNAME}\"" >> $(CURDIR)/pkg/loadingtool.sh + @echo "APPVERSION=\"${APPVERSION}\"" >> $(CURDIR)/pkg/loadingtool.sh + @echo "APPPATH=\""${APPPATH}"\"" >> $(CURDIR)/pkg/loadingtool.sh + @echo "LOAD_PARAMS=\"${COMMON_LOAD_PARAMS}\"" >> $(CURDIR)/pkg/loadingtool.sh + @echo "DELETE_PARAMS=\"${COMMON_DELETE_PARAMS}\"" >> $(CURDIR)/pkg/loadingtool.sh + @echo "APPHEX=\"" >> $(CURDIR)/pkg/loadingtool.sh + @cat $(CURDIR)/bin/app.hex >> $(CURDIR)/pkg/loadingtool.sh + @echo "\"" >> $(CURDIR)/pkg/loadingtool.sh + @cat $(CURDIR)/submodules/template.sh >> $(CURDIR)/pkg/loadingtool.sh + @chmod +x $(CURDIR)/pkg/loadingtool.sh + +# import generic rules from the sdk +include $(BOLOS_SDK)/Makefile.rules + +#add dependency on custom makefile filename +dep/%.d: %.c Makefile + +listvariants: + @echo VARIANTS COIN fio + +############## +# Style # +############## + +# better to run this manually to avoid irrelevant dependencies processing +format: + clang-format -i src/* + +#scan_build: +#In sdk + +size: bin/app.elf + $(GCCPATH)arm-none-eabi-size --format=GNU bin/app.elf + + +############# +# Ledger # +############# + +.PHONY: load +load: pkg/loadingtool.sh + ${CURDIR}/pkg/loadingtool.sh load + +.PHONY: delete +delete: pkg/loadingtool.sh + ${CURDIR}/pkg/loadingtool.sh delete + +.PHONY: seed +seed: + python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) + + diff --git a/README.md b/README.md index 2e6b95b4..b124f49b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,41 @@ # FIO Ledger App -FIO Ledger App for Ledger Nano S +FIO Ledger App for Ledger Nano S and Ledger Nano X. ## Building +There are two ways how to build: local build and containerize build. Enviromental variable `BOLOS_SDK` determines the approach. If using local build it should contain directory containing SDK. If using containerize approach is should be empty. + +Containerized approach is preferred. For containerized approach you need docker. For local build you need to setup the enviroment. Environment setup and developer documentation is sufficiently provided in Ledger’s [Read the Docs](https://developers.ledger.com/docs/nano-app/quickstart/). + +Make sure you have: +- SDK >= 2.0.0 (for local build) +- MCU >= 1.11 (if you want to lead the app on the device) + + +### Building and app development + +Use the following commands: + +`make` or `make build` +Builds the app, including Loading Tool. + +`make all` +Builds the app, including app.hex and app.sha.256 file, excluding Loading Tool. Reqiuires ledgerblue python package. + +`make clean` + +`make format` + +`make scan-build` + +`make shell` +Starts the container and runs shell (only for container build) + +`make size` +Determines the size of the app. + ### Loading the app `make load` diff --git a/submodules/ledger-app-builder b/submodules/ledger-app-builder new file mode 160000 index 00000000..bd9dbbc4 --- /dev/null +++ b/submodules/ledger-app-builder @@ -0,0 +1 @@ +Subproject commit bd9dbbc451751020f50479feb67941063b6d2872 diff --git a/submodules/template.sh b/submodules/template.sh new file mode 100755 index 00000000..8f0e7206 --- /dev/null +++ b/submodules/template.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +#******************************************************************************* +# (c) 2018 Zondax GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +if [ -z "$APPNAME" ] +then + echo "This script has not been configured correctly" + exit 1 +fi + +# check python 3 has been installed +if ! command -v python3 &>/dev/null; then + echo Python 3 is not installed + exit +fi + +python3 -m ledgerblue.loadApp -h &>/dev/null; +if [ $? -ne 0 ]; then + echo + echo "ERR: ledgerblue pip package not found." + echo "please install using 'pip install ledgerblue'" + echo + exit +fi + +TMP_HEX_DIR=$(mktemp -d -t ci-XXXXXXXXXX) +mkdir -p ${TMP_HEX_DIR}/bin +BIN_HEX_FILE=${TMP_HEX_DIR}/bin/app.hex +echo -e "${APPHEX}" > ${BIN_HEX_FILE} + +case "$1" in + 'load') + cd "$TMP_HEX_DIR" || exit + python3 -m ledgerblue.loadApp --appFlags 0x200 --delete ${LOAD_PARAMS} --path ${APPPATH} --path "44'/1'" + ;; + 'delete') + python3 -m ledgerblue.deleteApp ${DELETE_PARAMS} + ;; + 'version') + echo "v${APPVERSION}" + ;; + *) + echo "Zondax Installer [$APPNAME-$APPVERSION] [Warning: use only for test/demo apps]" + echo " load - Load $APPNAME app" + echo " delete - Delete $APPNAME app" + echo " version - Show $APPNAME app version" +esac From 6cb7c7bb2d8a1b670de866ef216609b87ff6bfcc Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sun, 10 Apr 2022 09:06:51 +0200 Subject: [PATCH 02/83] Make CI more continious --- .github/workflows/ci-workflow.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 6ccc684a..edef4072 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -1,14 +1,6 @@ name: Compilation & tests -on: - workflow_dispatch: - push: - branches: - - master - pull_request: - branches: - - master - - develop +on: [workflow_dispatch, push] jobs: job_nanoS_build_debug: From 1117cbbd1c62bdb58cb90447dcee3c0d6fb407ae Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sun, 10 Apr 2022 11:21:19 +0200 Subject: [PATCH 03/83] Start and stop Speculos --- .gitignore | 1 + Makefile | 5 ++++ MakefileContainer.mk | 27 ++++---------------- MakefileLocal.mk | 21 ++------------- MakefilePhysicalDevice.mk | 30 ++++++++++++++++++++++ MakefileSpeculos.mk | 54 +++++++++++++++++++++++++++++++++++++++ README.md | 21 ++++++++++++++- 7 files changed, 117 insertions(+), 42 deletions(-) create mode 100644 MakefilePhysicalDevice.mk create mode 100644 MakefileSpeculos.mk diff --git a/.gitignore b/.gitignore index 7ed227fe..7fbb468c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ src/glyphs.c .vscode output-scan-build pkg +*.log diff --git a/Makefile b/Makefile index 25d3738e..7dbdc279 100644 --- a/Makefile +++ b/Makefile @@ -29,3 +29,8 @@ include $(CURDIR)/MakefileContainer.mk else include $(CURDIR)/MakefileLocal.mk endif + +include $(CURDIR)/MakefilePhysicalDevice.mk + +include $(CURDIR)/MakefileSpeculos.mk + diff --git a/MakefileContainer.mk b/MakefileContainer.mk index 73cc3fa9..30591903 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -19,21 +19,18 @@ ifneq ($(BOLOS_SDK),) $(error Containerized build, BOLOS_SDK should be empty) endif +APP_BUILDER_IMAGE = ledger-app-builder:sha-bd9dbbc + default_target: build -SPECULOS_SDK=2.0 -SPECULOS_MODEL_SWITCH=nanos NANO_ICON_GIF=nanos_icon.gif BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk TARGET_NAME=TARGET_NANOS -TEST_DEVICE=nanos ifeq ($(TARGET_DEVICE), NANO_X) $(info Targeting NanoX) - SPECULOS_MODEL_SWITCH=nanox NANO_ICON_GIF=nanox_icon.gif BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk TARGET_NAME=TARGET_NANOX - TEST_DEVICE=nanox endif ifdef INTERACTIVE @@ -46,6 +43,8 @@ endif #We build the container from source to avoid this issue https://github.community/t/docker-pull-from-public-github-package-registry-fail-with-no-basic-auth-credentials-error/16358 define run_docker + docker pull ghcr.io/ledgerhq/ledger-app-builder/$(APP_BUILDER_IMAGE) + docker image tag ghcr.io/ledgerhq/ledger-app-builder/$(APP_BUILDER_IMAGE) ledger-app-builder @echo "docker host: id -u: `id -u`" @echo "docker host: whoami: `whoami`" docker version @@ -60,7 +59,7 @@ define run_docker -u $(USERID):$(USERID) \ -v $(shell pwd):/app \ $(1) \ - ledger-app-builder:latest \ + ledger-app-builder \ $(2) endef @@ -107,19 +106,3 @@ scan-build: $(call run_docker, , make scan-build) -############## -# Load # -############## - -.PHONY: load -load: build - ${CURDIR}/pkg/loadingtool.sh load - -.PHONY: delete -delete: build - ${CURDIR}/pkg/loadingtool.sh delete - -.PHONY: seed -seed: - python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) - diff --git a/MakefileLocal.mk b/MakefileLocal.mk index a4314384..da89a6aa 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -139,7 +139,8 @@ LDFLAGS += -O3 -Os -Wall LDLIBS += -lm -lgcc -lc ##Enable to strip debug info from app -LDFLAGS += -Wl,-s +##This needs to be commented out for Speculos to work +#LDFLAGS += -Wl,-s ################## @@ -199,21 +200,3 @@ format: size: bin/app.elf $(GCCPATH)arm-none-eabi-size --format=GNU bin/app.elf - -############# -# Ledger # -############# - -.PHONY: load -load: pkg/loadingtool.sh - ${CURDIR}/pkg/loadingtool.sh load - -.PHONY: delete -delete: pkg/loadingtool.sh - ${CURDIR}/pkg/loadingtool.sh delete - -.PHONY: seed -seed: - python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) - - diff --git a/MakefilePhysicalDevice.mk b/MakefilePhysicalDevice.mk new file mode 100644 index 00000000..380f44b0 --- /dev/null +++ b/MakefilePhysicalDevice.mk @@ -0,0 +1,30 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +.PHONY: load +load: pkg/loadingtool.sh + ${CURDIR}/pkg/loadingtool.sh load + +.PHONY: delete +delete: pkg/loadingtool.sh + ${CURDIR}/pkg/loadingtool.sh delete + +.PHONY: seed +seed: + python -m ledgerblue.hostOnboard --id $(NANOS_ID) --words $(WORDS) --pin $(PIN) + + diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk new file mode 100644 index 00000000..3a3d1d0c --- /dev/null +++ b/MakefileSpeculos.mk @@ -0,0 +1,54 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +SPECULOS_SDK=2.0 +SPECULOS_MODEL_SWITCH=nanos +ifeq ($(TARGET_DEVICE), NANO_X) + SPECULOS_MODEL_SWITCH=nanox +endif + +SPECULOS_IMAGE = speculos:sha-5a8e49b + +define run_announce + @perl -e 'use Time::HiRes; use POSIX; $$ts = sprintf qq[%f], Time::HiRes::time(); ($$f) = $$ts =~ m~(\....)~; printf qq[%s%s %s make: %s\n], POSIX::strftime("%H:%M:%S", gmtime), $$f, q[-] x 126, $$ARGV[0];' "$(1)" +endef + +define start_speculos_container + docker pull ghcr.io/ledgerhq/$(SPECULOS_IMAGE) + docker image tag ghcr.io/ledgerhq/$(SPECULOS_IMAGE) speculos + docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(4):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) --sdk $(SPECULOS_SDK) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) ./app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & + @perl -e 'use Time::HiRes; $$t1=Time::HiRes::time(); while(1){ $$o=`cat $(CURDIR)/speculos-port-$(1).log`; if($$o =~ m~Running on .*\:$(1)~s){ printf qq[# detected -- via log -- speculos listening after %f seconds; spy on emulated device via http://localhost:$(1)/\n], Time::HiRes::time() - $$t1; exit; } Time::HiRes::sleep(0.01); };' +endef + +define stop_speculos_container + # make: todo: using --time 0 because this stops the docker container faster; but it still takes ~ 2.4 seconds... how to stop faster? + docker stop --time 0 speculos-port-$(1) +endef + +.PHONY: speculos_port_5001_start +speculos_port_5001_start: + $(call run_announce,$@) + $(call start_speculos_container,5001,40001,/bin) + +.PHONY: speculos_port_5001_stop +speculos_port_5001_stop: + $(call run_announce,$@) + $(call stop_speculos_container,5001) + + + + diff --git a/README.md b/README.md index b124f49b..3536cbd9 100644 --- a/README.md +++ b/README.md @@ -36,12 +36,31 @@ Starts the container and runs shell (only for container build) `make size` Determines the size of the app. + ### Loading the app `make load` - Builds and loads the application into connected device. Just make sure to close the Ledger app on the device before running the command. +`make delete` +Deletes the application from connected device + +`make seed` +Resets mnemonics and pin as desired to ones desired by test. + + +### Starting and stopping Speculos +Requires Docker. + +`make speculos_port_5001_start` +Starts the container. You can interact with it on ports: +- 5001: API port + You can use this api to press buttons, take snapshots; besides this you can interact at http://localhost:5001/ +- 40001: APDU port + You may use SpeculosTransport class to communicate with the device via this port. Note that this transport can be injected into main js class. + +`make speculos_port_5001_stop` + ### Debug version From 01eda26be4de2d1547a50aa0857b1160640713c4 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sun, 10 Apr 2022 21:18:04 +0200 Subject: [PATCH 04/83] Makefile containing JS related goals --- Makefile | 2 ++ MakefileJS.mk | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 29 +++++++++++++++++++++++++++- 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 MakefileJS.mk diff --git a/Makefile b/Makefile index 7dbdc279..d87116a1 100644 --- a/Makefile +++ b/Makefile @@ -34,3 +34,5 @@ include $(CURDIR)/MakefilePhysicalDevice.mk include $(CURDIR)/MakefileSpeculos.mk +include $(CURDIR)/MakefileJS.mk + diff --git a/MakefileJS.mk b/MakefileJS.mk new file mode 100644 index 00000000..4a4fa305 --- /dev/null +++ b/MakefileJS.mk @@ -0,0 +1,53 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +.PHONY: js-prepack +js-prepack: + cd ledgerjs-fio && yarn prepack && cd .. + +.PHONY: js-lint +js-lint: + cd ledgerjs-fio && yarn lint && cd .. + +.PHONY: js-clean +js-clean: + cd ledgerjs-fio && yarn clean && cd .. + +.PHONY: js-build +js-build: + cd ledgerjs-fio && yarn build && cd .. + +.PHONY: js-build-flowtypes +js-build-flowtypes: + cd ledgerjs-fio && yarn build:flowtypes && cd .. + +.PHONY: js-flow +js-flow: + cd ledgerjs-fio && yarn flow && cd .. + +.PHONY: js-gen-docs +js-gen-docs: + cd ledgerjs-fio && yarn gen-docs && cd .. + +.PHONY: js-prepublish +js-prepublish: + cd ledgerjs-fio && yarn prepublish && cd .. + +.PHONY: js-run-example +js-run-example: + cd ledgerjs-fio && yarn run-example && cd .. + diff --git a/README.md b/README.md index 3536cbd9..066fbf9e 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,33 @@ Starts the container. You can interact with it on ports: `make speculos_port_5001_stop` +### Running tests + +If you update JavaScript, you need to ... + + +### JavaScript + +`make js-prepack` + +`make js-lint` + +`make js-clean` + +`make js-build` + +`make js-build-flowtypes` + +`make js-flow` + +`make js-gen-docs` + +`make js-prepublish` + +`make js-run-example` +Runs an example app. Requires ledger to be connected and loaded with FIO app. + + ### Debug version In `Makefile`, uncomment @@ -108,7 +135,7 @@ The build process is managed with [Make](https://www.gnu.org/software/make/). See `Makefile` for list of included functions. -## How to get a transaction body computed by Ledger +## How to get a transaction body computed by Ledger (for development purposes) Ordinarily, Ledger computes a rolling hash of the serialized transaction body, but the body itself is not available. It is possible to acquire it from the development build by going through the following steps: From 0bf82198bcef472649cf17284353266400c08558 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 3 Jun 2022 21:41:31 +0200 Subject: [PATCH 05/83] Infrastructure --- Makefile | 28 ++ MakefileContainer.mk | 14 +- MakefileJS.mk | 4 + MakefileLocal.mk | 7 +- MakefileSpeculos.mk | 8 +- MakefileTest.mk | 73 +++++ README.md | 112 ++++---- submodules/ledger-app-builder | 1 - test-integration/getPublicKey.js | 89 ++++++ test-integration/getSerial.js | 24 ++ test-integration/getVersion.js | 27 ++ test-integration/integration/getSerial.js | 21 ++ .../integration/signTransaction.js | 231 ++++++++++++++++ test-integration/package.json | 21 ++ test-integration/runUnitTests.js | 22 ++ test-integration/signTransactionBasic.js | 259 ++++++++++++++++++ .../snapshots/getPublicKey/nanos.01.png | Bin 0 -> 426 bytes .../snapshots/getPublicKey/nanos.02.png | Bin 0 -> 425 bytes .../snapshots/getPublicKey/nanos.03.png | Bin 0 -> 401 bytes .../snapshots/getPublicKey/nanos.04.png | Bin 0 -> 426 bytes .../snapshots/getPublicKey/nanos.05.png | Bin 0 -> 428 bytes .../snapshots/getPublicKey/nanos.06.png | Bin 0 -> 437 bytes .../snapshots/getPublicKey/nanos.07.png | Bin 0 -> 452 bytes .../snapshots/getPublicKey/nanos.08.png | Bin 0 -> 401 bytes .../snapshots/getPublicKey/nanos.09.png | Bin 0 -> 426 bytes .../snapshots/getPublicKey/nanos.10.png | Bin 0 -> 428 bytes .../snapshots/getPublicKey/nanos.11.png | Bin 0 -> 437 bytes .../snapshots/getPublicKey/nanos.12.png | Bin 0 -> 452 bytes .../snapshots/getPublicKey/nanos.13.png | Bin 0 -> 401 bytes .../snapshots/getPublicKey/nanos.14.png | Bin 0 -> 426 bytes .../snapshots/getPublicKey/nanox.01.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanox.02.png | Bin 0 -> 936 bytes .../snapshots/getPublicKey/nanox.03.png | Bin 0 -> 476 bytes .../snapshots/getPublicKey/nanox.04.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanox.05.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanox.06.png | Bin 0 -> 498 bytes .../snapshots/getPublicKey/nanox.07.png | Bin 0 -> 507 bytes .../snapshots/getPublicKey/nanox.08.png | Bin 0 -> 980 bytes .../snapshots/getPublicKey/nanox.09.png | Bin 0 -> 427 bytes .../snapshots/getPublicKey/nanox.10.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanox.11.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanox.12.png | Bin 0 -> 498 bytes .../snapshots/getPublicKey/nanox.13.png | Bin 0 -> 507 bytes .../snapshots/getPublicKey/nanox.14.png | Bin 0 -> 980 bytes .../snapshots/getPublicKey/nanox.15.png | Bin 0 -> 427 bytes .../snapshots/getPublicKey/nanox.16.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanox.17.png | Bin 0 -> 405 bytes .../snapshots/getSerial/nanos.01.png | Bin 0 -> 426 bytes .../snapshots/getSerial/nanox.01.png | Bin 0 -> 405 bytes .../snapshots/getVersion/nanos.01.png | Bin 0 -> 415 bytes .../snapshots/getVersion/nanox.01.png | Bin 0 -> 405 bytes .../snapshots/runUnitTests/nanos.01.png | Bin 0 -> 426 bytes .../snapshots/runUnitTests/nanox.01.png | Bin 0 -> 444 bytes .../signTransactionBasic/nanos.01.png | Bin 0 -> 415 bytes .../signTransactionBasic/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionBasic/nanos.03.png | Bin 0 -> 366 bytes .../signTransactionBasic/nanos.04.png | Bin 0 -> 498 bytes .../signTransactionBasic/nanos.05.png | Bin 0 -> 323 bytes .../signTransactionBasic/nanos.06.png | Bin 0 -> 393 bytes .../signTransactionBasic/nanos.07.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanos.08.png | Bin 0 -> 356 bytes .../signTransactionBasic/nanos.09.png | Bin 0 -> 415 bytes .../signTransactionBasic/nanos.10.png | Bin 0 -> 314 bytes .../signTransactionBasic/nanos.11.png | Bin 0 -> 366 bytes .../signTransactionBasic/nanos.12.png | Bin 0 -> 498 bytes .../signTransactionBasic/nanos.13.png | Bin 0 -> 323 bytes .../signTransactionBasic/nanos.14.png | Bin 0 -> 393 bytes .../signTransactionBasic/nanos.15.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanos.16.png | Bin 0 -> 356 bytes .../signTransactionBasic/nanos.17.png | Bin 0 -> 415 bytes .../signTransactionBasic/nanos.18.png | Bin 0 -> 314 bytes .../signTransactionBasic/nanos.19.png | Bin 0 -> 366 bytes .../signTransactionBasic/nanos.20.png | Bin 0 -> 498 bytes .../signTransactionBasic/nanos.21.png | Bin 0 -> 323 bytes .../signTransactionBasic/nanos.22.png | Bin 0 -> 393 bytes .../signTransactionBasic/nanos.23.png | Bin 0 -> 415 bytes .../signTransactionBasic/nanos.24.png | Bin 0 -> 246 bytes .../signTransactionBasic/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionBasic/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionBasic/nanox.03.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanox.04.png | Bin 0 -> 1007 bytes .../signTransactionBasic/nanox.05.png | Bin 0 -> 453 bytes .../signTransactionBasic/nanox.06.png | Bin 0 -> 379 bytes .../signTransactionBasic/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionBasic/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionBasic/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionBasic/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionBasic/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionBasic/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionBasic/nanox.13.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanox.14.png | Bin 0 -> 1007 bytes .../signTransactionBasic/nanox.15.png | Bin 0 -> 453 bytes .../signTransactionBasic/nanox.16.png | Bin 0 -> 379 bytes .../signTransactionBasic/nanox.17.png | Bin 0 -> 462 bytes .../signTransactionBasic/nanox.18.png | Bin 0 -> 937 bytes .../signTransactionBasic/nanox.19.png | Bin 0 -> 472 bytes .../signTransactionBasic/nanox.20.png | Bin 0 -> 476 bytes .../signTransactionBasic/nanox.21.png | Bin 0 -> 405 bytes .../signTransactionBasic/nanox.22.png | Bin 0 -> 379 bytes .../signTransactionBasic/nanox.23.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanox.24.png | Bin 0 -> 1007 bytes .../signTransactionBasic/nanox.25.png | Bin 0 -> 453 bytes .../signTransactionBasic/nanox.26.png | Bin 0 -> 379 bytes .../signTransactionBasic/nanox.27.png | Bin 0 -> 462 bytes .../signTransactionBasic/nanox.28.png | Bin 0 -> 405 bytes .../speculos-buttons-and-snapshots.js | 242 ++++++++++++++++ test-integration/speculos-common.js | 158 +++++++++++ test-integration/speculos-transport.js | 16 ++ 108 files changed, 1274 insertions(+), 83 deletions(-) create mode 100644 MakefileTest.mk delete mode 160000 submodules/ledger-app-builder create mode 100644 test-integration/getPublicKey.js create mode 100644 test-integration/getSerial.js create mode 100644 test-integration/getVersion.js create mode 100644 test-integration/integration/getSerial.js create mode 100644 test-integration/integration/signTransaction.js create mode 100644 test-integration/package.json create mode 100644 test-integration/runUnitTests.js create mode 100644 test-integration/signTransactionBasic.js create mode 100644 test-integration/snapshots/getPublicKey/nanos.01.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.02.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.03.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.04.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.05.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.06.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.07.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.08.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.09.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.10.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.11.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.12.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.13.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.14.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.01.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.02.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.03.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.04.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.05.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.06.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.07.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.08.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.09.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.10.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.11.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.12.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.13.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.14.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.15.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.16.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.17.png create mode 100644 test-integration/snapshots/getSerial/nanos.01.png create mode 100644 test-integration/snapshots/getSerial/nanox.01.png create mode 100644 test-integration/snapshots/getVersion/nanos.01.png create mode 100644 test-integration/snapshots/getVersion/nanox.01.png create mode 100644 test-integration/snapshots/runUnitTests/nanos.01.png create mode 100644 test-integration/snapshots/runUnitTests/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanox.28.png create mode 100644 test-integration/speculos-buttons-and-snapshots.js create mode 100644 test-integration/speculos-common.js create mode 100644 test-integration/speculos-transport.js diff --git a/Makefile b/Makefile index d87116a1..a592f086 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,32 @@ NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" PIN = 5555 +SPECULOS_MODEL_SWITCH=nanos +NANO_ICON_GIF=nanos_icon.gif +BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk +TARGET_NAME=TARGET_NANOS +TEST_DEVICE=nanos +SPECULOS_SDK=2.1 +ifeq ($(TARGET_DEVICE), NANO_X) + $(info Targeting NanoX) + SPECULOS_MODEL_SWITCH=nanox + NANO_ICON_GIF=nanox_icon.gif + BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk + TARGET_NAME=TARGET_NANOX + TEST_DEVICE=nanox + SPECULOS_SDK=2.0.2 +endif +ifeq ($(TARGET_DEVICE), NANO_SP) + $(info Targeting NanoSPlus) + SPECULOS_MODEL_SWITCH=nanosp + NANO_ICON_GIF=nanox_icon.gif + BOLOS_SDK_DIRECTORY=/opt/nanosplus-secure-sdk + TARGET_NAME=TARGET_NANOS2 + TEST_DEVICE=nanosp + SPECULOS_SDK=1.0 +endif + + ifeq ($(BOLOS_SDK),) include $(CURDIR)/MakefileContainer.mk else @@ -36,3 +62,5 @@ include $(CURDIR)/MakefileSpeculos.mk include $(CURDIR)/MakefileJS.mk +include $(CURDIR)/MakefileTest.mk + diff --git a/MakefileContainer.mk b/MakefileContainer.mk index 30591903..d768d720 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -19,20 +19,10 @@ ifneq ($(BOLOS_SDK),) $(error Containerized build, BOLOS_SDK should be empty) endif -APP_BUILDER_IMAGE = ledger-app-builder:sha-bd9dbbc +APP_BUILDER_IMAGE = ledger-app-builder:sha-229b03c default_target: build -NANO_ICON_GIF=nanos_icon.gif -BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk -TARGET_NAME=TARGET_NANOS -ifeq ($(TARGET_DEVICE), NANO_X) - $(info Targeting NanoX) - NANO_ICON_GIF=nanox_icon.gif - BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk - TARGET_NAME=TARGET_NANOX -endif - ifdef INTERACTIVE INTERACTIVE_SETTING:="-i" TTY_SETTING:="-t" @@ -48,13 +38,13 @@ define run_docker @echo "docker host: id -u: `id -u`" @echo "docker host: whoami: `whoami`" docker version - docker build -t ledger-app-builder:latest $(CURDIR)/submodules/ledger-app-builder docker run $(TTY_SETTING) $(INTERACTIVE_SETTING) $(MAKE_LINUX_DOCKER_OPTIONS) --rm \ -e SCP_PRIVKEY=$(SCP_PRIVKEY) \ -e BOLOS_ENV_IGNORE=/opt/bolos \ -e COIN=$(COIN) \ -e APP_TESTING=$(APP_TESTING) \ -e BOLOS_SDK=$(BOLOS_SDK_DIRECTORY) \ + -e DEVEL=$(DEVEL) \ -e TARGET_NAME=$(TARGET_NAME) \ -u $(USERID):$(USERID) \ -v $(shell pwd):/app \ diff --git a/MakefileJS.mk b/MakefileJS.mk index 4a4fa305..baa1f0d6 100644 --- a/MakefileJS.mk +++ b/MakefileJS.mk @@ -15,6 +15,10 @@ # limitations under the License. #******************************************************************************* +.PHONY: js-yarn +js-yarn: + cd ledgerjs-fio && yarn && cd .. + .PHONY: js-prepack js-prepack: cd ledgerjs-fio && yarn prepack && cd .. diff --git a/MakefileLocal.mk b/MakefileLocal.mk index da89a6aa..e32fd6b1 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -87,12 +87,6 @@ DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX DEFINES += HAVE_UX_FLOW endif -DEFINES += RESET_ON_CRASH - -## Use developer build -# DEVEL = 1 -# DEFINES += HEADLESS - # Enabling debug PRINTF ifeq ($(DEVEL), 1) DEFINES += DEVEL HAVE_PRINTF @@ -102,6 +96,7 @@ ifeq ($(DEVEL), 1) DEFINES += PRINTF=mcu_usb_printf endif else + DEFINES += RESET_ON_CRASH DEFINES += PRINTF\(...\)= endif diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk index 3a3d1d0c..e690856c 100644 --- a/MakefileSpeculos.mk +++ b/MakefileSpeculos.mk @@ -15,12 +15,6 @@ # limitations under the License. #******************************************************************************* -SPECULOS_SDK=2.0 -SPECULOS_MODEL_SWITCH=nanos -ifeq ($(TARGET_DEVICE), NANO_X) - SPECULOS_MODEL_SWITCH=nanox -endif - SPECULOS_IMAGE = speculos:sha-5a8e49b define run_announce @@ -30,7 +24,7 @@ endef define start_speculos_container docker pull ghcr.io/ledgerhq/$(SPECULOS_IMAGE) docker image tag ghcr.io/ledgerhq/$(SPECULOS_IMAGE) speculos - docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(4):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) --sdk $(SPECULOS_SDK) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) ./app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & + docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(3):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) --sdk $(SPECULOS_SDK) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) /speculos/app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & @perl -e 'use Time::HiRes; $$t1=Time::HiRes::time(); while(1){ $$o=`cat $(CURDIR)/speculos-port-$(1).log`; if($$o =~ m~Running on .*\:$(1)~s){ printf qq[# detected -- via log -- speculos listening after %f seconds; spy on emulated device via http://localhost:$(1)/\n], Time::HiRes::time() - $$t1; exit; } Time::HiRes::sleep(0.01); };' endef diff --git a/MakefileTest.mk b/MakefileTest.mk new file mode 100644 index 00000000..3c967cf1 --- /dev/null +++ b/MakefileTest.mk @@ -0,0 +1,73 @@ +#******************************************************************************* +# Ledger Nano S +# (c) 2016 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +.PHONY: test-yarn +test-yarn: + cd test-integration && yarn && cd .. + +TESTS_SPECULOS_DIR=test-integration + +define run_nodejs_test + @cd $(TESTS_SPECULOS_DIR) \ + && { { { \ + TEST_SPECULOS_API_PORT=$(1) TEST_SPECULOS_APDU_PORT=$(2) TEST_DEVICE=$(TEST_DEVICE) node $(3) 2>&1; echo $$? >&3; \ + } | tee -a ../speculos-port-$(1).log >&4; } 3>&1 | { read xs; exit $$xs; } } 4>&1 +endef + +.PHONY: speculos_port_5001_test_internal +speculos_port_5001_test_internal: + $(call run_announce,$@) + $(call run_nodejs_test,5001,40001,getVersion.js) + $(call run_nodejs_test,5001,40001,getSerial.js) + $(call run_nodejs_test,5001,40001,getPublicKey.js) + $(call run_nodejs_test,5001,40001,signTransactionBasic.js) + @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log + +.PHONY: speculos_port_5001_unit_test_internal +speculos_port_5001_unit_test_internal: + $(call run_announce,$@) + $(call run_nodejs_test,5001,40001,runUnitTests.js) + @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log + +.PHONY: speculos_port_5001_unit_test +speculos_port_5001_unit_test: + $(call run_announce,$@) + $(MAKE) --no-print-directory speculos_port_5001_start && ($(MAKE) --no-print-directory speculos_port_5001_unit_test_internal; ret=$$?;$(MAKE) --no-print-directory speculos_port_5001_stop;$(call run_announce,note: logs: cat /speculos-port-5001.log);cat speculos-port-5001.log; exit $$ret) + +.PHONY: speculos_port_5001_test +speculos_port_5001_test: + $(call run_announce,$@) + $(MAKE) --no-print-directory speculos_port_5001_start && ($(MAKE) --no-print-directory speculos_port_5001_test_internal; ret=$$?;$(MAKE) --no-print-directory speculos_port_5001_stop;$(call run_announce,note: logs: cat speculos-port-5001.log);cat speculos-port-5001.log; exit $$ret) + + +#Test on physical device + +.PHONY: ledger_test +ledger_test: + $(call run_announce,$@) + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getVersion.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getSerial.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getPublicKey.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionBasic.js + @echo "# ALL TESTS COMPLETED!" + +.PHONY: ledger_unit_test +ledger_unit_test: + $(call run_announce,$@) + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node runUnitTests.js + + diff --git a/README.md b/README.md index 066fbf9e..5e1ee48f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # FIO Ledger App -FIO Ledger App for Ledger Nano S and Ledger Nano X. +FIO Ledger App for Ledger Nano S, Ledger Nano X, and Ledger Nano SPlus. ## Building @@ -14,7 +14,10 @@ Make sure you have: - MCU >= 1.11 (if you want to lead the app on the device) -### Building and app development +### Building commands + +To select device for which to build use enviromental variable `TARGET_DEVICE=NANO_S` (default), `TARGET_DEVICE=NANO_X`, or`TARGET_DEVICE=NANO_SP`. +To induce debug build set enviromental variable `DEVEL=1`. Thus, you can use: `TARGET_DEVICE=NANO_SP DEVEL=1 make`. Use the following commands: @@ -37,37 +40,9 @@ Starts the container and runs shell (only for container build) Determines the size of the app. -### Loading the app - -`make load` -Builds and loads the application into connected device. Just make sure to close the Ledger app on the device before running the command. - -`make delete` -Deletes the application from connected device - -`make seed` -Resets mnemonics and pin as desired to ones desired by test. - - -### Starting and stopping Speculos -Requires Docker. - -`make speculos_port_5001_start` -Starts the container. You can interact with it on ports: -- 5001: API port - You can use this api to press buttons, take snapshots; besides this you can interact at http://localhost:5001/ -- 40001: APDU port - You may use SpeculosTransport class to communicate with the device via this port. Note that this transport can be injected into main js class. - -`make speculos_port_5001_stop` - - -### Running tests - -If you update JavaScript, you need to ... - +## Javascript layer -### JavaScript +`make js-yarn` `make js-prepack` @@ -89,18 +64,36 @@ If you update JavaScript, you need to ... Runs an example app. Requires ledger to be connected and loaded with FIO app. -### Debug version +## Speculos emulator and emulator tests -In `Makefile`, uncomment +Requires Docker. You need to set `TARGET_DEVICE` enviromental variable (if you do not want to emulate Nano S) is a similar way as when you build the app. - #DEVEL = 1 - #DEFINES += HEADLESS +`make speculos_port_5001_start` +Starts the container. You can interact with it on ports: +- 5001: API port + You can use this api to press buttons, take snapshots; besides this you can interact at http://localhost:5001/ +- 40001: APDU port + You may use SpeculosTransport class to communicate with the device via this port. Note that this transport can be injected into main js class. + +`make speculos_port_5001_stop` +Stops the container + + +### Running tests on Speculos + +If you update JavaScript, you need to `make js-build` to compile it and then `make test-yarn` to update the dependency in tests. + +`make test-yarn` +Prepares dependencies for speculos tests + +`make speculos_port_5001_test` +Runs integration tests on Speculos. -also comment out +`make speculos_port_5001_unit_test` +Runs unit tests on Speculos. Requires DEVEL build. - DEFINES += RESET_ON_CRASH -and then run `make clean load`. +## Testing on physical device ### Setup @@ -112,40 +105,45 @@ Environment setup and developer documentation is sufficiently provided in Ledger You want a debug version of the MCU firmware (but it blocks SDK firmware updates, so for the purpose of upgrading SDK, replace it temporarily with a non-debug one). Instructions for swapping MCU versions: https://github.com/LedgerHQ/ledger-dev-doc/blob/master/source/userspace/debugging.rst + ### Troubleshooting connection problems The quickstart guide's script sets up your udev rules, but there still might be problems. - https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues -## Development -To learn more about development process and individual commands, [check the desing doc](doc/design_doc.md). +### Loading the app + +`make load` +Builds and loads the application into connected device. Just make sure to close the Ledger app on the device before running the command. + +`make delete` +Deletes the application from connected device -## Deploying +`make seed` +Resets mnemonics and pin as desired to ones desired by test. +Many of our integration tests expect the device to be configured with a known test mnemonic. +- Plug your device while pressing the right button +- Your device will show "Recovery" in the screen +- Double click -The build process is managed with [Make](https://www.gnu.org/software/make/). -### Make Commands +### Running tests on real device -* `load`: Load signed app onto the Ledger device -* `clean`: Clean the build and output directories -* `delete`: Remove the application from the device -* `build`: Build obj and bin api artefacts without loading -* `format`: Format source code. +If you update JavaScript, you need to `make js-build` to compile it and then `make test-yarn` to update the dependency in tests. -See `Makefile` for list of included functions. +If you do not want to click through all the screens you may, if you use DEVEL build set `HEADLESS`, e.g. `HEADLESS= make` +At this moment we experience issues with PRINTF macro on ledger device thus you should only run `make ledger_test` on non-development build. -## How to get a transaction body computed by Ledger (for development purposes) +`make ledger_test` -Ordinarily, Ledger computes a rolling hash of the serialized transaction body, but the body itself is not available. It is possible to acquire it from the development build by going through the following steps: +`make ledger_unit_test` +This requires `DEVEL=1` app version. -1. [Install debug MCU](https://ledger.readthedocs.io/en/latest/userspace/debugging.html#application-debug) on your Ledger Nano S device. -2. Install the debug version of FIO app (see above). +## How to get a transaction body computed by Ledger (for development purposes) -3. Install `usbtool` and turn on [console printing](https://ledger.readthedocs.io/en/latest/userspace/debugging.html#console-printing). +If you use Speculos with `DEVEL=1` build, then you can find logs from `sha_256_append` function. Concatenating what went into hash computation gives the transaction body as signed by ledger. -4. Send a single `signTx` call to Ledger (e.g. by running `yarn test-integration --grep ""`). -5. After the call is processed, the terminal running console printing now contains all log messages resulting from that `signTx` call. (See the `TRACE*` macros.). You can build the transactions using data between logged within sha_256_append function. diff --git a/submodules/ledger-app-builder b/submodules/ledger-app-builder deleted file mode 160000 index bd9dbbc4..00000000 --- a/submodules/ledger-app-builder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bd9dbbc451751020f50479feb67941063b6d2872 diff --git a/test-integration/getPublicKey.js b/test-integration/getPublicKey.js new file mode 100644 index 00000000..3d372973 --- /dev/null +++ b/test-integration/getPublicKey.js @@ -0,0 +1,89 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, InvalidData } from "../ledgerjs-fio/dist/src/fio.js" +import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" +import { fileURLToPath } from 'url'; +import { Ecc } from '@fioprotocol/fiojs' +import assert from 'assert/strict' + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +const path = "44'/235'/0'/0/0" +const pubKey = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab" + +testStep(" - - -", "await app.getPublicKey() path:"+path+" do not show"); +const getPubkeyPromise = app.getPublicKey({path: str_to_path(path), show_or_not: false}); +const getPubkeyResponse = await getPubkeyPromise; +assert.equal(getPubkeyResponse.publicKeyHex, pubKey) +assert.equal(Ecc.PublicKey(getPubkeyResponse.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey) + +testStep(" - - -", "await app.getPublicKey() path:"+path+" show"); +const getPubkeyPromise2 = app.getPublicKey({path: str_to_path(path), show_or_not: true}); +await device.review([2,], "Review pubkey"); +const getPubkeyResponse2 = await getPubkeyPromise2; +assert.equal(getPubkeyResponse2.publicKeyHex, pubKey) +assert.equal(Ecc.PublicKey(getPubkeyResponse2.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey) + +const path2 = "44'/235'/0'/0/2000" +const pubKey2 = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca" + +testStep(" - - -", "await app.getPublicKey() path:"+path2+" do not show"); +const getPubkeyPromise3 = app.getPublicKey({path: str_to_path(path2), show_or_not: false}); +await device.review([1, 1, 2,], "Review pubkey"); +const getPubkeyResponse3 = await getPubkeyPromise3; +assert.equal(getPubkeyResponse3.publicKeyHex, pubKey2) +assert.equal(Ecc.PublicKey(getPubkeyResponse3.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey2) + +testStep(" - - -", "await app.getPublicKey() path:"+path2+" show"); +const getPubkeyPromise4 = app.getPublicKey({path: str_to_path(path2), show_or_not: true}); +await device.review([1, 1, 2,], "Review pubkey"); +const getPubkeyResponse4 = await getPubkeyPromise4; +assert.equal(getPubkeyResponse4.publicKeyHex, pubKey2) +assert.equal(Ecc.PublicKey(getPubkeyResponse4.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey2) + + +testStep(" - - -", "Should reject invalid paths."); + +testStep(" - - -", "path shorter than 5 indexes"); +const promise1 = app.getPublicKey({path: str_to_path("44'/235'/0'/0"), show_or_not: false}); +await assert.rejects(promise1, DeviceStatusError, "Action rejected by Ledger's security policy"); + +testStep(" - - -", "path contains non-zero address"); +const promise2 = app.getPublicKey({path: str_to_path("44'/235'/1'/0/0"), show_or_not: false}) +await assert.rejects(promise2, DeviceStatusError, "Action rejected by Ledger's security policy"); + +testStep(" - - -", "path contains non-hardened address"); +const promise3 = app.getPublicKey({path: str_to_path("44'/235'/0/0/0"), show_or_not: false}) +await assert.rejects(promise3, DeviceStatusError, "Action rejected by Ledger's security policy"); + +testStep(" - - -", "path contains non-zero chain"); +const promise4 = app.getPublicKey({path: str_to_path("44'/235'/0'/1/0"), show_or_not: false}) +await assert.rejects(promise4, DeviceStatusError, "Action rejected by Ledger's security policy"); + +testStep(" - - -", "path too long"); +const promise5 = app.getPublicKey({path: str_to_path("44'/235'/0'/0/0/0"), show_or_not: false}) +await assert.rejects(promise5, InvalidData, "invalid path"); //js parser does not allow this + +testStep(" - - -", "path too long via direct APDU send."); +//we circumnavigate JS parser to validate that ledger itself handles this case correctly +const promise6 = app._send({ins: 0x10, + p1:0x02, + p2:0x00, + data:Buffer.from("068000002c800000eb80000000000000000000000000000000)", "hex"), + expectedResponseLength: 0 +}); +await assert.rejects(promise6, DeviceStatusError, "Action rejected by Ledger's security policy"); + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/getSerial.js b/test-integration/getSerial.js new file mode 100644 index 00000000..42f42b1a --- /dev/null +++ b/test-integration/getSerial.js @@ -0,0 +1,24 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; +import {getTransport} from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; +import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + +testStep(" - - -", "await app.getSerial()"); +const response = await app.getSerial(); +assert.equal(response.serial.length, 14) + +await transport.close() +testEnd(scriptName); +process.stdin.pause() diff --git a/test-integration/getVersion.js b/test-integration/getVersion.js new file mode 100644 index 00000000..7413f03b --- /dev/null +++ b/test-integration/getVersion.js @@ -0,0 +1,27 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; +import {getTransport} from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; +import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + +testStep(" - - -", "await app.runTests()"); +const {version, compatibility} = await app.getVersion(); +assert.equal(version.major, 0) +assert.equal(version.minor, 0) +assert.equal(compatibility.isCompatible, true) +assert.equal(compatibility.recommendedVersion, null) + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/integration/getSerial.js b/test-integration/integration/getSerial.js new file mode 100644 index 00000000..911e8004 --- /dev/null +++ b/test-integration/integration/getSerial.js @@ -0,0 +1,21 @@ +import {expect} from "chai" + +import type Fio from "../../src/fio" +import {getFio} from "../test_utils" + +describe("getSerial", async () => { + let fio: Fio = {} as Fio + + beforeEach(async () => { + fio = await getFio() + }) + + afterEach(async () => { + await (fio as any).t.close() + }) + + it("Should correctly get the serial number of the device", async () => { + const response = await fio.getSerial() + expect(response.serial.length).to.equal(14) + }) +}) diff --git a/test-integration/integration/signTransaction.js b/test-integration/integration/signTransaction.js new file mode 100644 index 00000000..5502f603 --- /dev/null +++ b/test-integration/integration/signTransaction.js @@ -0,0 +1,231 @@ +import {expect} from "chai" +import {log} from "console" +import {type} from "os" +import type {HexString, Uint64_str} from "types/internal" +import {assert} from "utils/assert" + +import type {Fio} from "../../src/fio" +import {DeviceStatusError, HARDENED} from "../../src/fio" +import type {Transaction} from "../../src/types/public" +import {hex_to_buf, uint64_to_buf} from "../../src/utils/serialize" +import {getFio} from "../test_utils" + +// We initialize constants +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" as HexString +const PrivateKey = require('@fioprotocol/fiojs/dist/ecc/key_private') +const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" as HexString +const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPublicKey = otherPrivateKey.toPublic() + +const {TextEncoder, TextDecoder} = require('text-encoding') +const fetch = require('node-fetch') +const {base64ToBinary, arrayToHex} = require('@fioprotocol/fiojs/dist/chain-numeric') +const Signature = require('@fioprotocol/fiojs/dist/ecc/signature') +const crypto = require("crypto") +var ser = require("@fioprotocol/fiojs/dist/chain-serialize") +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() +const {JsSignatureProvider} = require('@fioprotocol/fiojs/dist/chain-jssig') + +// To do this we must perform asynchronous calls, initialized in before method +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' +var networkInfo: any + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network: string, tx: Transaction, pubkey: any) { + // We serialize the transaction + // Get the addaddress action type + const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddaddress.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + var serializedAction = tx.actions[0] as any + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString()]) + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + +const basicTx: Transaction = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.token", + name: "trnsfiopubky", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + amount: "20", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + +describe("signTransaction", async () => { + let fio: Fio = {} as Fio + + before(async () => { + const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() + const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + + const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', + })).json() + const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', + })).json() + const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', + })).json() + const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', + })).json() + + // Get a Map of all the types from fio.address + const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) + const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) + const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) + const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) + networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + }, + } + + }) + + beforeEach(async () => { + fio = await getFio() + }) + + afterEach(async () => { + await (fio as any).t.close() + }) + + it("Sign testnet transaction", async () => { + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerResponse = await fio.signTransaction({path, chainId, tx}) + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + expect(ledgerResponse.txHashHex).to.be.equal(hash) + expect(signatureLedger.verify(fullMsg, publicKey)).to.be.true + expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.false + }) + + it("Sign mainnet transaction", async () => { + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, otherPublicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerResponse = await fio.signTransaction({path: otherPath, chainId, tx}) + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + expect(ledgerResponse.txHashHex).to.be.equal(hash) + expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.true + expect(signatureLedger.verify(fullMsg, publicKey)).to.be.false + }) + + it("Invalid transaction: actor dont match", async () => { + const network = "MAINNET" + const action = {...basicTx.actions[0], name: "name.error"} + const tx: Transaction = {...basicTx, actions: [action]} + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = fio.signTransaction({path, chainId, tx}) + await expect(promise).to.be.rejected + }) + + it("Path rejected by ledger", async () => { + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = fio.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) + await expect(promise).to.be.rejectedWith(DeviceStatusError, "Action rejected by Ledger's security policy") + }) +}) diff --git a/test-integration/package.json b/test-integration/package.json new file mode 100644 index 00000000..db8754a9 --- /dev/null +++ b/test-integration/package.json @@ -0,0 +1,21 @@ +{ + "name": "ledger-fio-integration-tests", + "version": "1.0.0", + "description": "", + "license": "Apache-2.0", + "type": "module", + "dependencies": { + "@fioprotocol/fiojs": "^1.0.1", + "@ledgerhq/hw-transport": "^5.12.0", + "@ledgerhq/hw-transport-node-hid": "^6.27.1", + "@ledgerhq/hw-transport-node-speculos": "^6.20.0", + "crypto": "^1.0.1", + "ledgerjs-hw-app-fio": "../ledgerjs-fio/", + "node-fetch": "^3.2.4", + "text-encoding": "^0.7.0", + "url": "^0.11.0" + }, + "devDependencies": { + "elliptic": "^6.5.3" + } +} diff --git a/test-integration/runUnitTests.js b/test-integration/runUnitTests.js new file mode 100644 index 00000000..cc4fb7f5 --- /dev/null +++ b/test-integration/runUnitTests.js @@ -0,0 +1,22 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; +import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import { getTransport } from "./speculos-transport.js"; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf) +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + +testStep(" - - -", "await app.runTests()"); +await app.runTests(); + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/signTransactionBasic.js b/test-integration/signTransactionBasic.js new file mode 100644 index 00000000..b043f2fb --- /dev/null +++ b/test-integration/signTransactionBasic.js @@ -0,0 +1,259 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the addaddress action type + const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddaddress.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.token", + name: "trnsfiopubky", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + amount: "20", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction"); +{ + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + + +testStep(" - - -", "Invalid transaction: actor dont match"); +{ + const network = "MAINNET" + const action = {...basicTx.actions[0], name: "name.error"} + const tx = {...basicTx, actions: [action]} + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = app.signTransaction({path, chainId, tx}) + await assert.rejects(promise); +} + +testStep(" - - -", "Invalid transaction: actor dont match"); +{ + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = app.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) + const assertPromise = assert.rejects(promise, DeviceStatusError, "Action rejected by Ledger's security policy"); + await device.reviewPartial([1, 1, 2, 1, 1], "Review sign"); + await assertPromise; +} + + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/getPublicKey/nanos.01.png b/test-integration/snapshots/getPublicKey/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI)!to3c!`S? z<^lGA2@???MA|tb?E&}k^@03v&$~beei=|i-f0B`s;17Hdjio$H97WDD{9kfoQ8L;)pK?W4m5?T*(E>bEgocTxsS-K$I-fRQ zwQP!#+PMcY5-)PF2*Rn-&8`JqF$|kW-(p%!%4u5$q{>?zj{^QJ%vBUN=&21hGeDz9 z{#lzy$^e6_kC?LcRYsMmvE{D6MJAu{UzZlZ)7-`=Jwp(eKfM)^7kAz$)(c~X0=wH1+SzO0S5HW+~3zVO6dC@l*II0FX&0G`hWi6cfY TPmGS-00000NkvXXu0mjfHqNyO literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanos.03.png b/test-integration/snapshots/getPublicKey/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..5b95879991ce6c3157ba37b1bf04f460a31f3cb2 GIT binary patch literal 401 zcmV;C0dD?@P)hmjc2e{N)b?y}I`rlTrPz{m9cMZ$*IY9iYpYr0cv}=fq3CGb7@nJr&B26V zv5R=^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4 z=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0ea(^kkvWVQSu6Z0=V1You4v|l`jpIF z486s;{O1HGveSRV>0JO{)rq4CSs$I7113Y)K11nn=^{-(0mWJ)ooR`n@Jp@y`Y7Z< v5d!UH1Hd2ESI|G8Hwn`~{vS3B!a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanos.04.png b/test-integration/snapshots/getPublicKey/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehILv$aA)UpT#Nn zFBdOGa+Qzw(MZpeWx5n>a&M)GtXtLz8%uT-&*QPAL`UZYgu=YbmKs-05tBVTzbtar zV-9RnAL*X}J=GyySoM~Tg7$Tq^qgf9Kz9S#tjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1 zA7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N)*a)z%3K*a%!XJunf)+)q^fZDnf)ms z2lGJ=X5xG&*tg?1jHX!j2U$n_nkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{<)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hz zu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen|&A#=|y_wi)N_u`8D|A|-VypRG#8UV5 zO1)u9xz~NCr=94#mEFEaE=XpBL4;{$eUAdN)_1tF1}Ed@6Xj}FQs&5t5WFrlEx|fX zONKb{CcHnsk_fU=ZZ)!qUprZHVmjJ-Lh657dfe=%*aZlRKbh*V!B31bYN;m&&}mvi f2qAlGe_Ovzk$p)GvQx4nkb(K<1_`;;S6!&nqJv7FqmmCekER2=bkAL22YDwz#P+nt0xP%|eEZJVYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3< zJtKtD8(k6OV)ifsXIYF38H10B+YB0hbNNGzoST-mV>Ql=LpG`ZT^3^*ye4QpQ(emW z3J5$qoxcirDQ_5adg7Rk!SH;y!Rb*z!0c*H!YOWZPuZSBY|CSF9PNy1;z)-*=DtS( zxselbR(6z)_plRD9QVl{9lxm>irBHIREFpL5kZGQbmQI`NB96Pj9VVEnl|LRBKo?n uh2#GNTFw%P)`smFGh(X%00000{k#A*lp7bxH97MD0000hmjc2e{N)b?y}I`rlTrPz{m9cMZ$*IY9iYpYr0cv}=fq3CGb7@nJr&B26V zv5R=^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4 z=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0ea(^kkvWVQSu6Z0=V1You4v|l`jpIF z486s;{O1HGveSRV>0JO{)rq4CSs$I7113Y)K11nn=^{-(0mWJ)ooR`n@Jp@y`Y7Z< v5d!UH1Hd2ESI|G8Hwn`~{vS3B!a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanos.09.png b/test-integration/snapshots/getPublicKey/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehILv$aA)UpT#Nn zFBdOGa+Qzw(MZpeWx5n>a&M)GtXtLz8%uT-&*QPAL`UZYgu=YbmKs-05tBVTzbtar zV-9RnAL*X}J=GyySoM~Tg7$Tq^qgf9Kz9S#tjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1 zA7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N)*a)z%3K*a%!XJunf)+)q^fZDnf)ms z2lGJ=X5xG&*tg?1jHX!j2U$n_nkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{<)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hz zu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen|&A#=|y_wi)N_u`8D|A|-VypRG#8UV5 zO1)u9xz~NCr=94#mEFEaE=XpBL4;{$eUAdN)_1tF1}Ed@6Xj}FQs&5t5WFrlEx|fX zONKb{CcHnsk_fU=ZZ)!qUprZHVmjJ-Lh657dfe=%*aZlRKbh*V!B31bYN;m&&}mvi f2qAlGe_Ovzk$p)GvQx4nkb(K<1_`;;S6!&nqJv7FqmmCekER2=bkAL22YDwz#P+nt0xP%|eEZJVYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3< zJtKtD8(k6OV)ifsXIYF38H10B+YB0hbNNGzoST-mV>Ql=LpG`ZT^3^*ye4QpQ(emW z3J5$qoxcirDQ_5adg7Rk!SH;y!Rb*z!0c*H!YOWZPuZSBY|CSF9PNy1;z)-*=DtS( zxselbR(6z)_plRD9QVl{9lxm>irBHIREFpL5kZGQbmQI`NB96Pj9VVEnl|LRBKo?n uh2#GNTFw%P)`smFGh(X%00000{k#A*lp7bxH97MD0000hmjc2e{N)b?y}I`rlTrPz{m9cMZ$*IY9iYpYr0cv}=fq3CGb7@nJr&B26V zv5R=^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4 z=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0ea(^kkvWVQSu6Z0=V1You4v|l`jpIF z486s;{O1HGveSRV>0JO{)rq4CSs$I7113Y)K11nn=^{-(0mWJ)ooR`n@Jp@y`Y7Z< v5d!UH1Hd2ESI|G8Hwn`~{vS3B!a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanos.14.png b/test-integration/snapshots/getPublicKey/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|b1-pM+&8f zMM;t*uf$M8N3pZNTq;uNtgv$sa7434VnkE@Mr?ki)cHUby;X7rg)M5R3E3~?-=nT6 zRW8CtW9<~-AeuXrJr)n0Y2OJb!WD2-(#O9_UuTM`oJrz%g`af6su98>T=gh#cV^j#KC&ygr3 zjfh0^`}LX6!%h3+h2Zl$yAq!q4?hcVrW_NRYY>S$7KM9~pyceIBxnC5p4qP*zHan} zxc&Msl5y!Pv)n{-)orkVd4NM%1#9Bz0^W73wY~{!y#5G(z6-uH5hDUopQQAK>@Um4 znx=iwC0u|)++zoYc+#8Nn+dnhK*>dV??I@8=4=v`VLAo{+L3@30AEky1nE9jU|4+R z6e1k0%TROAfOSITN&ThG!z_+vuNsPoRw2j2r;g3GVk=)i%=Uh>{goscvkMnvvY)-9bF~I?(9L_#q0CN|M$0{A3`obk|aqo4-o}frBJG%3zL$-iKv@;A*sMR zJodsi(OufkI8NoV&z7*|=A7ztZLWmWwbX@FV)~3Trv;TsSt2|!QIZ|Dd@Ot*R~nN| zrLuhuy**yZwjThTeS|(YMl7@pnPkN+tJj#WO;(ya zwIEin$KP1(cv!K~N!Mp2X*TMYeMs}K%!H*S^qqqp8v>8m(66JFTg~FGR|HFQ^C||X z&cP05=V#jP_p*BkvzftHhM+fb=KqKt;hE!$yah^#*t_Inl` zWTV=_IL?@qQXVIt$mtAaA34I9@0o)$m*t2tx{PBaQ%7B8Ik8Tky8k7gnS)#MT&&*uuTGoD6XuhwNz-Fy6@OpUrXoR+_D=wtg}~I^ilWMEI)})$N#@t`K#8S z;y^XcJMBI*_ORC#pt8JvI`-ZAn{ivMd-k4R!j`?yhhMr`ye9zR;{Nj{$`W*XE4zBBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.05.png b/test-integration/snapshots/getPublicKey/nanox.05.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|ncyxn52PEs~=B{?S;CHnGgA|5#XLql}81wT-|LOv-5dh0*ZF7&? zKlqJ+!qy&5f8y^cDDW7%3I8Jz0{{R30C3Byywq<3obXzTSdNwNKPFOIRFl;hqih#9 zD*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aIBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h z8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VFPdFW~+hVSvO#~EbUG9-;bQg15*Ir{< zonl+&lbv#IOG7H*gKQFNdmTYv2o3-MfcwOZHy528yvf6l0mVz1?=LzwYc~fNmm)5c zm!2`5Nm)<}nWPx#07*qoM6N<$g1i~w`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.07.png b/test-integration/snapshots/getPublicKey/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..93dcd8f2a3c173a98b46fbb485d31067e64fc1b3 GIT binary patch literal 507 zcmVXl4dXc7%8&+iW>}~ntQ&G$9NJ50m5+r0002D`}*q+uh(mCk1<*s z)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ1u@2Ow`auW&xp;pr@<{a(~^99xK;A< zn$GjxU+d@iyO?L&6#bKoEaw3km-%B1w-5D>6*Fg(qJNA=#_Wac&c@}tc>-i}D--KH zVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_f zkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9x9{N{-fmvQ6ofN40S)eXX9j@h%AZH0 zxZSo-cu7RQn%bInuVqf&5;wmRxt!aF=$Sn_5S5zspY}GcD4r`VMaWue)icU>-_C8k z>&c=1PWv>~wIH>6e55l>w5+&&2<&s-auEC%4U2JSj%-vxMbz4_yEI>HNuIN8NxSA3 zF?sts%!Fv;QIUs?>l<3qyd14&3H8mu#;uP!`bWzr$t&ic_lCOJB;Pe{o#;DdlCx}y xtyzfx00000000000000000000006*cegOik2RuU*h{yl{002ovPDHLkV1fat@qGXQ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.08.png b/test-integration/snapshots/getPublicKey/nanox.08.png new file mode 100644 index 0000000000000000000000000000000000000000..d83595e463b8c9faf39e99aed28751de91dbb344 GIT binary patch literal 980 zcmV;_11tQAP)Fh0%F+39e1(vC2xvRUQ4~c{6h%=KxASkY{B>RZ zpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$`41`0ah_+29}+Qi#Geg4IC@L36wm*~ z@+K`@Z%iFlp9$ms+02f?_U5l%2b=8}29QF|4B#Q3q_vkfEzI%Tj9YT}+{d})n4Nrj zLQIg;0TV%hBD^=z1lM(~=Y&26uwrGAlY;Kd-2f3rOGGIoy6U+*1vNmQG2O{;oTi7Z zStNa^ZR`MZmqw1G*1lm@5&IJ|3*q#w@0(d}M@D)Zpg-0ZjFctku@v+;S!b7ZC$A-O zQ&bd1@k(MfRO_An{?b!Jc_D>VX-Gi{)M6fMdq3f`2%RIW0vHc~H^uxKWH! zuFs~-$yXODdL~=cP!ln4KG$GW>R*B9z6d!#rU#}_`n0Q|QNOVRCK3htu0#K-3(jpo zy^QAtvz~LP4wz8Jy+wko4veXx*JsDi*%r2rH%GndF7-}rbYf8*@a%cde5xU(bNx7G zR;SlwrjG@`PKsC`QyTNdPSzn=^v$RSzO)AD%DkFv=3t5adh+$gpK=Q#mFrEMHs-u zDM`TV3Vr*gowGoniwpdxz6Lg-89B1T!OqM8GR`5lnlUXXOwcQ6gvz6iVg}h;zju3A+ng7Z*)$2X_R^ ztvv-W@O$w%44CZzGpnr3KJCODgW`+Ckd=_ajG9u*Qe=lU{X_kk%u8T)0|l55$*ejI zUYjveGq35co`m&^G_5D&T6j@xNJ^S8%a!MnrHHM1^=@I32S;*sUq6Pf<`-eSKkIeJ zQJFfd>-ahGftj`h?E>-@4*n&=XHgVIQ4~e-clZXUh*m{%Uxdd10000Q31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a?vr9ipGIfTlEC;q|)3<-i({l1m9c!Ph zvqVc>YRicY1G8>F{Oc^hv*VXzu=BYB^pw-6>ovP9n!JIb=P3`Z{ig?mN%HH&x{Hw>>%j+LO}ywaBR zpK{4@0Qh0nr=bT8pJgU?#XV*lEW7Rwm%o()iT69e{to1;#0$Vo(7*)Sgcq-?BCdXH zj_(BzYD-Yundl#dey`Z0kB-$piPb-k7@S88&Lai@0000000000000000001D`Um%3 V7^IU(Wj+7^002ovPDHLkV1ne(z_I`U literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.10.png b/test-integration/snapshots/getPublicKey/nanox.10.png new file mode 100644 index 0000000000000000000000000000000000000000..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a GIT binary patch literal 553 zcmV+^0@nSBP)BBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.11.png b/test-integration/snapshots/getPublicKey/nanox.11.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|ncyxn52PEs~=B{?S;CHnGgA|5#XLql}81wT-|LOv-5dh0*ZF7&? zKlqJ+!qy&5f8y^cDDW7%3I8Jz0{{R30C3Byywq<3obXzTSdNwNKPFOIRFl;hqih#9 zD*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aIBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h z8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VFPdFW~+hVSvO#~EbUG9-;bQg15*Ir{< zonl+&lbv#IOG7H*gKQFNdmTYv2o3-MfcwOZHy528yvf6l0mVz1?=LzwYc~fNmm)5c zm!2`5Nm)<}nWPx#07*qoM6N<$g1i~w`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.13.png b/test-integration/snapshots/getPublicKey/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..93dcd8f2a3c173a98b46fbb485d31067e64fc1b3 GIT binary patch literal 507 zcmVXl4dXc7%8&+iW>}~ntQ&G$9NJ50m5+r0002D`}*q+uh(mCk1<*s z)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ1u@2Ow`auW&xp;pr@<{a(~^99xK;A< zn$GjxU+d@iyO?L&6#bKoEaw3km-%B1w-5D>6*Fg(qJNA=#_Wac&c@}tc>-i}D--KH zVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_f zkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9x9{N{-fmvQ6ofN40S)eXX9j@h%AZH0 zxZSo-cu7RQn%bInuVqf&5;wmRxt!aF=$Sn_5S5zspY}GcD4r`VMaWue)icU>-_C8k z>&c=1PWv>~wIH>6e55l>w5+&&2<&s-auEC%4U2JSj%-vxMbz4_yEI>HNuIN8NxSA3 zF?sts%!Fv;QIUs?>l<3qyd14&3H8mu#;uP!`bWzr$t&ic_lCOJB;Pe{o#;DdlCx}y xtyzfx00000000000000000000006*cegOik2RuU*h{yl{002ovPDHLkV1fat@qGXQ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.14.png b/test-integration/snapshots/getPublicKey/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..d83595e463b8c9faf39e99aed28751de91dbb344 GIT binary patch literal 980 zcmV;_11tQAP)Fh0%F+39e1(vC2xvRUQ4~c{6h%=KxASkY{B>RZ zpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$`41`0ah_+29}+Qi#Geg4IC@L36wm*~ z@+K`@Z%iFlp9$ms+02f?_U5l%2b=8}29QF|4B#Q3q_vkfEzI%Tj9YT}+{d})n4Nrj zLQIg;0TV%hBD^=z1lM(~=Y&26uwrGAlY;Kd-2f3rOGGIoy6U+*1vNmQG2O{;oTi7Z zStNa^ZR`MZmqw1G*1lm@5&IJ|3*q#w@0(d}M@D)Zpg-0ZjFctku@v+;S!b7ZC$A-O zQ&bd1@k(MfRO_An{?b!Jc_D>VX-Gi{)M6fMdq3f`2%RIW0vHc~H^uxKWH! zuFs~-$yXODdL~=cP!ln4KG$GW>R*B9z6d!#rU#}_`n0Q|QNOVRCK3htu0#K-3(jpo zy^QAtvz~LP4wz8Jy+wko4veXx*JsDi*%r2rH%GndF7-}rbYf8*@a%cde5xU(bNx7G zR;SlwrjG@`PKsC`QyTNdPSzn=^v$RSzO)AD%DkFv=3t5adh+$gpK=Q#mFrEMHs-u zDM`TV3Vr*gowGoniwpdxz6Lg-89B1T!OqM8GR`5lnlUXXOwcQ6gvz6iVg}h;zju3A+ng7Z*)$2X_R^ ztvv-W@O$w%44CZzGpnr3KJCODgW`+Ckd=_ajG9u*Qe=lU{X_kk%u8T)0|l55$*ejI zUYjveGq35co`m&^G_5D&T6j@xNJ^S8%a!MnrHHM1^=@I32S;*sUq6Pf<`-eSKkIeJ zQJFfd>-ahGftj`h?E>-@4*n&=XHgVIQ4~e-clZXUh*m{%Uxdd10000Q31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a?vr9ipGIfTlEC;q|)3<-i({l1m9c!Ph zvqVc>YRicY1G8>F{Oc^hv*VXzu=BYB^pw-6>ovP9n!JIb=P3`Z{ig?mN%HH&x{Hw>>%j+LO}ywaBR zpK{4@0Qh0nr=bT8pJgU?#XV*lEW7Rwm%o()iT69e{to1;#0$Vo(7*)Sgcq-?BCdXH zj_(BzYD-Yundl#dey`Z0kB-$piPb-k7@S88&Lai@0000000000000000001D`Um%3 V7^IU(Wj+7^002ovPDHLkV1ne(z_I`U literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.16.png b/test-integration/snapshots/getPublicKey/nanox.16.png new file mode 100644 index 0000000000000000000000000000000000000000..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a GIT binary patch literal 553 zcmV+^0@nSBP)BBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.17.png b/test-integration/snapshots/getPublicKey/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|F-kvbwsJl<1icCP53zd8mR}xK ze4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hlAYbf!S$g!<&A8RbH$%+xm(!~S>;bye z<3Bh}ZlKle<&0WK#nf){Cj%`bicvX`9uRN0_GEJ9$!H#TTUUp8^D|(+n5qY^IGK?K z$P^mOHeK){W51Ro`3nGG5733o?%x0>%FlP!__+~62qA*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIU9X4$9WqxcMf7MZAA*ZMyP!kM1c%+|lWzOb~B~wmq{k0=@{`;D` z{t1DhFS@;xrUyl-{!;oRU(39#s?y7$_?+g_O@3e9Up~FCz;W%n%f)`OhLQ_Pmd}lQ zVw<8>6Wzf+H=6g<^o=h!xv^=;DRxJ-ZQ$7;mmBK#=aJFLINN--ir|I+kJ>JnyLQ!S z%jb@YR+{@QzUK2*Jufg0a^#P1*1XqL=k+&AC-8qu^2&6B6#0KYzVW!fVVT%bx5Vt% z_4kZnt)c1Gxq>0j%|6x5EB;w4_qww2*4=qmOZJODZb`qRbLXk~<`4FXUk#@9U%Q$9 zJz|S*fOhKKw8Ga+TPE9FUb8OwZuhR#@4Msz=T@vfRyXzeHP(RQ75rc9k7evHoH}D| zhki_xPVPV$*pxyvmQhv-W%7)tvuzH{NY|Jn#D- judfFF-(cYgq#GL5n=`~$yv_Fh021|d^>bP0l+XkK;$X|w literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.01.png b/test-integration/snapshots/signTransactionBasic/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8230043cd1d5d8700b6e706fc50c591984d5b6 GIT binary patch literal 415 zcmV;Q0bu@#P)F-kvbwsJl<1icCP53zd8mR}xK ze4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hlAYbf!S$g!<&A8RbH$%+xm(!~S>;bye z<3Bh}ZlKle<&0WK#nf){Cj%`bicvX`9uRN0_GEJ9$!H#TTUUp8^D|(+n5qY^IGK?K z$P^mOHeK){W51Ro`3nGG5733o?%x0>%FlP!__+~62qA%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.03.png b/test-integration/snapshots/signTransactionBasic/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..4207e747fd5cca09ea6a025dbca99608cb3f87c0 GIT binary patch literal 366 zcmV-!0g?WRP)u?dPuR>IbWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y^6Re!(aIzE{L7j$o8J0Q zbFf>C80me$E7X7MApLiMCS3U_o7XsL*4Tc^A*>t`;wu0E006)!KS1-z9?s-0&;S4c M07*qoM6N<$f+n`3SO5S3 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.04.png b/test-integration/snapshots/signTransactionBasic/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..8471f1af609767e69a87cf7c33327179f377b07f GIT binary patch literal 498 zcmV2mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.05.png b/test-integration/snapshots/signTransactionBasic/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0a1a84b97dad02502fc39eb97f7b5ddc2756f0 GIT binary patch literal 323 zcmV-J0lfZ+P)09sLGm$9nMpq$xM+1c-?3R=(3?;N}Plru%`L0_c-H z1`Z0qJ14zQp`X1m+m@-Pey*Evux;oJs6U(zNumBEnuLY=Q$Y>vK@BX)37d+cz5cA? z>h#jGnTl1_sS1IFA=ay1oRGBd>0(e>S~+M*L&sG9RSB+84)$>uba~2q9|bVR!BxZp z+RtD8@nA9m3eeU4mR}8B{Ro=tJqA#)p(oJ(PZ&5`8>%O>HdIUww4ne10001hu>%Dd V$oIezF|7aq002ovPDHLkV1gP4h{^x} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.06.png b/test-integration/snapshots/signTransactionBasic/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.07.png b/test-integration/snapshots/signTransactionBasic/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19F-kvbwsJl<1icCP53zd8mR}xK ze4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hlAYbf!S$g!<&A8RbH$%+xm(!~S>;bye z<3Bh}ZlKle<&0WK#nf){Cj%`bicvX`9uRN0_GEJ9$!H#TTUUp8^D|(+n5qY^IGK?K z$P^mOHeK){W51Ro`3nGG5733o?%x0>%FlP!__+~62qAu?dPuR>IbWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y^6Re!(aIzE{L7j$o8J0Q zbFf>C80me$E7X7MApLiMCS3U_o7XsL*4Tc^A*>t`;wu0E006)!KS1-z9?s-0&;S4c M07*qoM6N<$f+n`3SO5S3 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.12.png b/test-integration/snapshots/signTransactionBasic/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..8471f1af609767e69a87cf7c33327179f377b07f GIT binary patch literal 498 zcmV2mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.13.png b/test-integration/snapshots/signTransactionBasic/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0a1a84b97dad02502fc39eb97f7b5ddc2756f0 GIT binary patch literal 323 zcmV-J0lfZ+P)09sLGm$9nMpq$xM+1c-?3R=(3?;N}Plru%`L0_c-H z1`Z0qJ14zQp`X1m+m@-Pey*Evux;oJs6U(zNumBEnuLY=Q$Y>vK@BX)37d+cz5cA? z>h#jGnTl1_sS1IFA=ay1oRGBd>0(e>S~+M*L&sG9RSB+84)$>uba~2q9|bVR!BxZp z+RtD8@nA9m3eeU4mR}8B{Ro=tJqA#)p(oJ(PZ&5`8>%O>HdIUww4ne10001hu>%Dd V$oIezF|7aq002ovPDHLkV1gP4h{^x} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.14.png b/test-integration/snapshots/signTransactionBasic/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.15.png b/test-integration/snapshots/signTransactionBasic/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19F-kvbwsJl<1icCP53zd8mR}xK ze4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hlAYbf!S$g!<&A8RbH$%+xm(!~S>;bye z<3Bh}ZlKle<&0WK#nf){Cj%`bicvX`9uRN0_GEJ9$!H#TTUUp8^D|(+n5qY^IGK?K z$P^mOHeK){W51Ro`3nGG5733o?%x0>%FlP!__+~62qAu?dPuR>IbWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y^6Re!(aIzE{L7j$o8J0Q zbFf>C80me$E7X7MApLiMCS3U_o7XsL*4Tc^A*>t`;wu0E006)!KS1-z9?s-0&;S4c M07*qoM6N<$f+n`3SO5S3 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.20.png b/test-integration/snapshots/signTransactionBasic/nanos.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8471f1af609767e69a87cf7c33327179f377b07f GIT binary patch literal 498 zcmV2mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.21.png b/test-integration/snapshots/signTransactionBasic/nanos.21.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0a1a84b97dad02502fc39eb97f7b5ddc2756f0 GIT binary patch literal 323 zcmV-J0lfZ+P)09sLGm$9nMpq$xM+1c-?3R=(3?;N}Plru%`L0_c-H z1`Z0qJ14zQp`X1m+m@-Pey*Evux;oJs6U(zNumBEnuLY=Q$Y>vK@BX)37d+cz5cA? z>h#jGnTl1_sS1IFA=ay1oRGBd>0(e>S~+M*L&sG9RSB+84)$>uba~2q9|bVR!BxZp z+RtD8@nA9m3eeU4mR}8B{Ro=tJqA#)p(oJ(PZ&5`8>%O>HdIUww4ne10001hu>%Dd V$oIezF|7aq002ovPDHLkV1gP4h{^x} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.22.png b/test-integration/snapshots/signTransactionBasic/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.23.png b/test-integration/snapshots/signTransactionBasic/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8230043cd1d5d8700b6e706fc50c591984d5b6 GIT binary patch literal 415 zcmV;Q0bu@#P)F-kvbwsJl<1icCP53zd8mR}xK ze4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hlAYbf!S$g!<&A8RbH$%+xm(!~S>;bye z<3Bh}ZlKle<&0WK#nf){Cj%`bicvX`9uRN0_GEJ9$!H#TTUUp8^D|(+n5qY^IGK?K z$P^mOHeK){W51Ro`3nGG5733o?%x0>%FlP!__+~62qAqjv*Cu-d?@Pby$I?^nG{_4r;N?i$UZKC26;6bSz8y|-lh(NoGYH(6cWE|{zB%l;pCll4zV zOT??Br6Io;Y~Ln$x8cs@N9z4)n=UujX;#;SW;y-ZXR!5=)P>t6DVuaAbGds}-Bg_X zeCCJacN#WMzt@eSyk+f7sf2GqRSVd6&Hoft;aVp3?%K@dt3S-R_u>AM3(B`S q>Ny{-zdB$2(B7#S_0bJK?0txelF{r5}E){4{NXh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.01.png b/test-integration/snapshots/signTransactionBasic/nanox.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.06.png b/test-integration/snapshots/signTransactionBasic/nanox.06.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.07.png b/test-integration/snapshots/signTransactionBasic/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.09.png b/test-integration/snapshots/signTransactionBasic/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.13.png b/test-integration/snapshots/signTransactionBasic/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3de69c7c33c4c27501a71d3319db2743fce8fd GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jmba4!+nDh2#U{Q+#PebCZ zm%e-cPu$@xKf@^VP@7JY@7({@QIahj+8H{mAibJPuSI3={WV3!?j4`Qv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.16.png b/test-integration/snapshots/signTransactionBasic/nanox.16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.17.png b/test-integration/snapshots/signTransactionBasic/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.19.png b/test-integration/snapshots/signTransactionBasic/nanox.19.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.23.png b/test-integration/snapshots/signTransactionBasic/nanox.23.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3de69c7c33c4c27501a71d3319db2743fce8fd GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jmba4!+nDh2#U{Q+#PebCZ zm%e-cPu$@xKf@^VP@7JY@7({@QIahj+8H{mAibJPuSI3={WV3!?j4`Qv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.26.png b/test-integration/snapshots/signTransactionBasic/nanox.26.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanox.27.png b/test-integration/snapshots/signTransactionBasic/nanox.27.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|&1'); + if (output != '{}') { + console.log(humanTime() + " ERROR: unexpected curl stdout: " + output); + throw new Error(); + } + } + + async curlButtonAndScreenshot(which, hint) { + this.curlButton(which, hint); + return await this.curlScreenShot(which); + } + + async curlScreenShot(lastButton = "") { + const test_device = this.snapshotName; + const originalScreenshotSHA = this.pngSha256Previous; + // e.g. test-transactions.staking-sign-ts.02-transfer-top-shot-moment-p256-sha3-256/nanos.01.png + const png = this.scriptName.replace(".js", "") + "/" + test_device + "." + this.pngNum.toString(10).padStart(2, '0') + ".png" + console.log(humanTime() + " curlScreenShot() // " + png + ".new.png"); + + const makeScreenshot = (process.env.TEST_PNG_RE_GEN_FOR && (this.scriptName.substring(0, process.env.TEST_PNG_RE_GEN_FOR.length) == process.env.TEST_PNG_RE_GEN_FOR)); + const oldSHAcmd = makeScreenshot ? "" : "echo sha256:`sha256sum $PNG`"; + + let generateNewScreenshotFromNextCapture = 0; + let loops = 0; + do { + // get screenshot + const output = syncBackTicks('export PNG=' + png + ' ; curl --silent --show-error --output $PNG.new.png http://127.0.0.1:' + this.speculosButtonsPort + '/screenshot 2>&1 ; echo sha256:`sha256sum $PNG.new.png` ; '+ oldSHAcmd); + + const errorArray = output.match(/Empty reply from server/gi); + if (null != errorArray) { + console.log(humanTime() + " curl: screen shot: warning: curl failed to grab screen shot"); + throw new Error(); + } + const regex = /sha256:[^\s]*/gm; + const sha256Array = output.match(regex); // e.g. ['sha256:f3916e7cbbf8502b3eedbdf40cc6d6063b90f0e4a4814e34f2e7029bdaa4eaac','sha256:f3916e7cbbf8502b3eedbdf40cc6d6063b90f0e4a4814e34f2e7029bdaa4eaac'] + + // verify, that the screenshot is not the same as previous one + if (sha256Array[0] /* newly generated PNG */ == this.pngSha256Previous) { + loops += 1; + generateNewScreenshotFromNextCapture = 0 + if (loops < 20) { + if (loops == 15 && lastButton != "" && sha256Array[0] == originalScreenshotSHA) { + await sleep(100); + console.log(humanTime() + " Retrying last button press: " +lastButton); + this.curlButton(lastButton, " Retry last button press."); + await sleep(100); + } + console.log(humanTime() + " curlScreenShot() // matches previous screen shot SHA256 (" + this.pngSha256Previous + "); so requesting another screen shot"); + await sleep(90+10*loops) + continue; + } else { + console.log(humanTime() + " curlScreenShot() // matches previous screen shot SHA256 (" + + "); ERROR: giving up because too many tries; curl one-liner output:"); + console.log(output); + console.log(png); + console.log(humanTime() + " curlScreenShot() // NOTE: re-run with TEST_PNG_RE_GEN_FOR=" + this.scriptName + " to regenerate PNGs"); + throw new Error(); + } + } + + if (sha256Array[0] /* newly generated PNG */ == this.fioThreeDots) { + await sleep(90+10*loops) + continue; + } + + // if we generate this screenshot ... + if (makeScreenshot) { + // the screenshot we have may be partial capture + // the tests made suggest, that when we make another screenshot, it will be OK + if (generateNewScreenshotFromNextCapture == 0) { + generateNewScreenshotFromNextCapture = 1; + continue; + } + this.pngSha256Previous = sha256Array[0]; + + // second try, we believe the screenshot is correct + generateNewScreenshotFromNextCapture = 0; + syncBackTicks('export PNG=' + png + ' ; cp $PNG.new.png $PNG'); + break; + } + // if we want to compare this screenshot + else { + this.pngSha256Previous = sha256Array[0]; + + // if we have it, we are done + if (sha256Array[0] == sha256Array[1]) { + break; + } + + //ignore DEVEL/nonDEVEL mismatch + if ((sha256Array[0] == this.fioWaitingSHA && sha256Array[1] == this.fioWarningSHA) || + (sha256Array[1] == this.fioWaitingSHA && sha256Array[0] == this.fioWarningSHA)) { + break + } + // if we want to ignore the test we are done + if (process.env.TEST_IGNORE_SHA256_SUMS >= 1) { + console.log(humanTime() + " curlScreenShot() // running tests with TEST_IGNORE_SHA256_SUMS=1 to ignore all PNG differences"); + break; + } + // otherwise, we will try again (this deals with partial capture) + loops += 1; + if (loops < 20) { + await sleep(100+10*loops) + console.log(humanTime() + " curlScreenShot() // screen shot: warning: sha256 sums are different; could be partially rendered screen, so re-requesting screen shot // re-run with TEST_IGNORE_SHA256_SUMS=1 to ignore all PNGs"); + this.pngSha256Previous = sha256Array[0]; + continue; + } else { + console.log(humanTime() + " curlScreenShot() // screen shot: warning: sha256 sums are different; ERROR: re-requested screen shot too many times // re-run with TEST_IGNORE_SHA256_SUMS=1 to ignore all PNGs"); + console.log(png); + throw new Error(); + } + } + } while (true); + console.log(humanTime() + " png " + this.pngNum + " captured, SHA: " + this.pngSha256Previous + "."); + this.pngNum++; + return this.pngSha256Previous; + } + + //higher level functions to be used in the tests + //Each step should end on "FIO Ready" screen + checkFioReadyScreen(sha) { + if (sha != this.fioWaitingSHA && sha != this.fioWarningSHA) { + throw new Error(); + } + } + + async makeStartingScreenshot() { + console.log(humanTime() + " screen shot before sending first apdu command"); + const sha = await this.curlScreenShot(); + this.checkFioReadyScreen(sha); + } + + async _reviewInternal(counts, textWhat) { + for(let i=0; i { + await sleep(200); + console.log(msg) + + process.stdin.setRawMode(true) + return new Promise(resolve => process.stdin.once('data', (d) => { + process.stdin.setRawMode(false) + resolve() + })) +// await sleep(5000); + }; + } + curlButton(which, hint) {} + async curlButtonAndScreenshot(which, hint) {} + async curlScreenShot(lastButton = "") {} + async makeStartingScreenshot() {} + + async review(textWhat) { + await this.wait("Please, review the transaction on the device.") + } + + async reviewPartial(textWhat) { + await this.wait("Please, review part of the transaction till error occours.") + } + + async toggleExpertMode(textWhat) { + await this.wait("Please, toggle expert mode ("+textWhat+")") + } + + async enterMenuElementAndReview(menuElementIndex, textWhat) { + await this.wait("Please, go to menu element "+menuElementIndex+" ("+textWhat+") and review the screens.") + } +} + +function getButtonsAndSnapshots(scriptName, conf) { + if (conf.testOn === "ledger") { + return new LedgerButtonsAndSnapshots() + } + return new ButtonsAndSnapshots(scriptName, conf) +} + +export {getButtonsAndSnapshots}; diff --git a/test-integration/speculos-common.js b/test-integration/speculos-common.js new file mode 100644 index 00000000..7efccce1 --- /dev/null +++ b/test-integration/speculos-common.js @@ -0,0 +1,158 @@ +import { execSync } from 'child_process'; +import { basename } from 'path'; + +// see https://stackoverflow.com/questions/9763441/milliseconds-to-time-in-javascript +function msToTime(s) { + // Pad to 2 or 3 digits, default is 2 + function pad(n, z) { + z = z || 2; + return ('00' + n).slice(-z); + } + + const ms = s % 1000; + s = (s - ms) / 1000; + const secs = s % 60; + s = (s - secs) / 60; + const mins = s % 60; + const hrs = (((s - mins) / 60) + 20) % 24; + + return pad(hrs) + ':' + pad(mins) + ':' + pad(secs) + '.' + pad(ms, 3); +} + +function msToMatchSpeculosContainer() { + return (4 * 3600 * 1000); +} + +function humanTime() { + return msToTime(Date.now() + msToMatchSpeculosContainer()); +} + +function syncBackTicks(command) { + if (process.env.TEST_DEBUG >= 1) { + console.log(humanTime() + " syncBackTicks() // command: " + command); + } + const curl_bash = execSync( command ); + const output = curl_bash.toString().trim(); + if (process.env.TEST_DEBUG >= 1) { + console.log(humanTime() + " syncBackTicks() // command: " + output); + } + return output; +} + +function testStart(scriptName) { // e.g. test-basic-slot-status-set.js + console.log(humanTime() + " " + "vv".repeat(63) + " testStart() // " + scriptName); + console.log(humanTime() + " // re-run with TEST_PNG_RE_GEN_FOR=" + scriptName + " to regenerate PNGs, TEST_IGNORE_SHA256_SUMS=1 to ignore all PNGs, TEST_DEBUG=1 for extra debug output"); + syncBackTicks('rm -f ' + scriptName + '.*.png.new.png'); + if (process.env.TEST_PNG_RE_GEN_FOR && (scriptName.substring(0, process.env.TEST_PNG_RE_GEN_FOR.length) == process.env.TEST_PNG_RE_GEN_FOR)) { + console.log(humanTime() + " curlScreenShot() // TEST_PNG_RE_GEN_FOR detected; deleting PNGs for this test"); + syncBackTicks('rm -f ' + scriptName + '.*.png'); + } +} + +function testCombo(scriptNameCombo) { + console.log(humanTime() + " " + "v ".repeat(63) + " testCombo() // " + scriptNameCombo); +} + +function testStep(asciiGraphic, scriptNameStep) { + console.log(humanTime() + asciiGraphic.repeat(21) + " testStep() // " + scriptNameStep); +} + +function testEnd(scriptName) { // e.g. test-basic-slot-status-set.js + console.log(humanTime() + " " + "^^".repeat(63) + " testEnd() // " + scriptName); +} + + +function hex2ascii(hex) { + let str = ''; + for (let i = 0; i < hex.length; i += 2) + str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + return str; +} + +function compare(givenHex, expected, whatGiven, parts) { + //console.log(humanTime() + " compare() // givenHex:" + givenHex + " expected:" + expected); + let givenHexExploded = ""; + let expectedExploded = ""; + let signatureCompact = ""; + let p = 0; + let foundHexMismatch = ""; + let foundLenMismatch = ""; + for (const [key, value] of Object.entries(parts)) { + const givenHexSubstring = givenHex.substring(p, p + (value * 2)); + const expectedSubstring = expected.substring(p, p + (value * 2)); + const expectedSubstringLength = (key == "unexpected") ? 0 : (value * 2); + if ((key.substring(0, 15) != "do_not_compare_") && (givenHexSubstring != expectedSubstring)) { + foundHexMismatch = key; + } + if (expectedSubstring.length != expectedSubstringLength) { + foundLenMismatch = key; + } + givenHexExploded = givenHexExploded + key + ':' + givenHexSubstring + ' '; + expectedExploded = expectedExploded + key + ':' + expectedSubstring + ' '; + if (key == 'signatureCompact') { + const hex = givenHex.substring(p, p + (value * 2)); + signatureCompact = "; signatureCompact.ascii:" + hex2ascii(hex); + } + p += value * 2; + } + console.log(humanTime() + " compare() // givenHexExploded:" + givenHexExploded + " <- " + whatGiven + signatureCompact); + console.log(humanTime() + " compare() // expectedExploded:" + expectedExploded); + if (foundHexMismatch != "") { + console.log(humanTime() + " compare() // expected named part '" + foundHexMismatch + "' has WRONG hex digits"); + throw new Error(); + } + if (foundLenMismatch != "") { + console.log(humanTime() + " compare() // expected named part '" + foundLenMismatch + "' has WRONG length"); + throw new Error(); + } +} + +function compareInAPDU(transport, expected, whatGiven, parts) { + const givenHex = transport.hexApduCommandIn.shift(); + compare(givenHex, expected, whatGiven, parts); +} + +function compareOutAPDU(transport, expected, whatGiven, parts) { + const givenHex = transport.hexApduCommandOut.shift(); + compare(givenHex, expected, whatGiven, parts); +} + +function noMoreAPDUs(transport) { + if ((transport.hexApduCommandIn.length !== 0) || (transport.hexApduCommandOut.length !== 0)) { + throw new Error(); + } +} + +function compareGetVersionAPDUs(transport) { + let hexExpected = "3300000000"; + compareOutAPDU(transport, hexExpected, "apdu command", {cla:1, ins:1, p1:1, p2:1, len:1, unexpected:9999}); + hexExpected = "00xxxxxx00xxxxxxxx9000"; + compareInAPDU(transport, hexExpected, "apdu response", {testMode:1, do_not_compare_major:1, do_not_compare_minor:1, do_not_compare_patch:1, deviceLocked:1, do_not_compare_targetId:4, returnCode:2, unexpected:9999}); +} + + + +function timeout(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +async function sleep(ms, what) { + if (process.env.TEST_DEBUG >= 1) {console.log(humanTime() + " sleep() // " + ms + "ms <- " + what);} + await timeout(ms); +} + +function getScriptName(path) { + return "snapshots/"+basename(path); +} + +function getSpeculosDefaultConf() { + return { + testOn: process.env.TEST_ON_DEVICE ? "ledger": "speculos", + speculosApiPort: process.env.TEST_SPECULOS_API_PORT ? process.env.TEST_SPECULOS_API_PORT : 5000, + speculosApduPort: process.env.TEST_SPECULOS_APDU_PORT ? process.env.TEST_SPECULOS_APDU_PORT : 40000, + deviceType: process.env.TEST_DEVICE, //nanos, nanox, nanosp + snapshotName: process.env.TEST_DEVICE == "nanos" ? "nanos" : "nanox", //snapshots for nanosp are identical to nanox + }; +} + +export {testStart, testCombo, testStep, testEnd, compareInAPDU, compareOutAPDU, noMoreAPDUs, compareGetVersionAPDUs, humanTime, sleep, getScriptName, syncBackTicks, getSpeculosDefaultConf}; diff --git a/test-integration/speculos-transport.js b/test-integration/speculos-transport.js new file mode 100644 index 00000000..d64040d1 --- /dev/null +++ b/test-integration/speculos-transport.js @@ -0,0 +1,16 @@ +'use strict'; +import SpeculosTransport from "@ledgerhq/hw-transport-node-speculos"; +import TransportNodeHid from "@ledgerhq/hw-transport-node-hid" + +async function getTransport(speculosConf) { + let transport = 0; + if (speculosConf.testOn === "ledger") { + transport = await TransportNodeHid.default.create(1000); + } + else { + transport = await SpeculosTransport.default.open({ apduPort: speculosConf.speculosApduPort }); + } + return transport; +} + +export {getTransport}; From 7c079db84c0e366b9514ee6a9cb66e4756c50b30 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 3 Jun 2022 21:55:32 +0200 Subject: [PATCH 06/83] Speculos tests documentation + .gitignore --- .gitignore | 2 ++ README.md | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7fbb468c..efac2b31 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ src/glyphs.c output-scan-build pkg *.log +*.new.png +yarn.lock diff --git a/README.md b/README.md index 5e1ee48f..fb20e568 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,9 @@ If you update JavaScript, you need to `make js-build` to compile it and then `ma Prepares dependencies for speculos tests `make speculos_port_5001_test` -Runs integration tests on Speculos. +Runs integration tests on Speculos. If screenshot change, then you need to set variable `TEST_PNG_RE_GEN_FOR`. +E.g. `TEST_PNG_RE_GEN_FOR=snapshots/getPublicKey.js make speculos_port_5001_test` runs tests and re-genetates screenshots +for `getPublicKey.js` integration tests. `TEST_PNG_RE_GEN_FOR=snapshots make speculos_port_5001_test` regenerates all snapshots. `make speculos_port_5001_unit_test` Runs unit tests on Speculos. Requires DEVEL build. From bf361abcf0d984f6491247a2c57983268a9df240 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 18 Jun 2022 20:38:55 +0200 Subject: [PATCH 07/83] Remove unused files --- test-integration/integration/getSerial.js | 21 -- .../integration/signTransaction.js | 231 ------------------ 2 files changed, 252 deletions(-) delete mode 100644 test-integration/integration/getSerial.js delete mode 100644 test-integration/integration/signTransaction.js diff --git a/test-integration/integration/getSerial.js b/test-integration/integration/getSerial.js deleted file mode 100644 index 911e8004..00000000 --- a/test-integration/integration/getSerial.js +++ /dev/null @@ -1,21 +0,0 @@ -import {expect} from "chai" - -import type Fio from "../../src/fio" -import {getFio} from "../test_utils" - -describe("getSerial", async () => { - let fio: Fio = {} as Fio - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Should correctly get the serial number of the device", async () => { - const response = await fio.getSerial() - expect(response.serial.length).to.equal(14) - }) -}) diff --git a/test-integration/integration/signTransaction.js b/test-integration/integration/signTransaction.js deleted file mode 100644 index 5502f603..00000000 --- a/test-integration/integration/signTransaction.js +++ /dev/null @@ -1,231 +0,0 @@ -import {expect} from "chai" -import {log} from "console" -import {type} from "os" -import type {HexString, Uint64_str} from "types/internal" -import {assert} from "utils/assert" - -import type {Fio} from "../../src/fio" -import {DeviceStatusError, HARDENED} from "../../src/fio" -import type {Transaction} from "../../src/types/public" -import {hex_to_buf, uint64_to_buf} from "../../src/utils/serialize" -import {getFio} from "../test_utils" - -// We initialize constants -const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] -const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" as HexString -const PrivateKey = require('@fioprotocol/fiojs/dist/ecc/key_private') -const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) -const publicKey = privateKey.toPublic() - -const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] -const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" as HexString -const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) -const otherPublicKey = otherPrivateKey.toPublic() - -const {TextEncoder, TextDecoder} = require('text-encoding') -const fetch = require('node-fetch') -const {base64ToBinary, arrayToHex} = require('@fioprotocol/fiojs/dist/chain-numeric') -const Signature = require('@fioprotocol/fiojs/dist/ecc/signature') -const crypto = require("crypto") -var ser = require("@fioprotocol/fiojs/dist/chain-serialize") -const textDecoder = new TextDecoder() -const textEncoder = new TextEncoder() -const {JsSignatureProvider} = require('@fioprotocol/fiojs/dist/chain-jssig') - -// To do this we must perform asynchronous calls, initialized in before method -const httpEndpointTestnet = 'http://testnet.fioprotocol.io' -const httpEndpointMainnet = 'https://fio.greymass.com' -var networkInfo: any - - -// Serializes and signs transaction using fiojs -async function buildTxAndSignatureFioJs(network: string, tx: Transaction, pubkey: any) { - // We serialize the transaction - // Get the addaddress action type - const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') - - // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) - const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) - actionAddaddress.serialize(buffer, tx.actions[0].data) - const serializedData = arrayToHex(buffer.asUint8Array()) - - // Get the actions parameter from the transaction and replace the data field with the serialized data field - var serializedAction = tx.actions[0] as any - serializedAction = { - ...serializedAction, - data: serializedData, - } - - const rawTransaction = { - ...tx, - max_net_usage_words: 0x00, - max_cpu_usage_ms: 0x00, - delay_sec: 0x00, - context_free_actions: [], - actions: [serializedAction], //Actions have to be an array - transaction_extensions: [], - } - - // Get the transaction action type - const txnaction = networkInfo[network].typesTransaction.get('transaction') - - // Serialize the transaction - const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) - txnaction.serialize(buffer2, rawTransaction) - const serializedTransaction = buffer2.asUint8Array() - - //Lets compute hash in using Signature.sign - const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) - const hash = crypto.createHash('sha256').update(msg).digest('hex') - - //Now using signatureProvider.sign - const signatureProvider = new JsSignatureProvider([PrivateKey.fromHex(privateKeyDHex).toString(), - PrivateKey.fromHex(otherPrivateKeyDHex).toString()]) - const requiredKeys = [pubkey.toString()] - const serializedContextFreeData = null - - const signedTxn = await signatureProvider.sign({ - chainId: networkInfo[network].chainId, - requiredKeys: requiredKeys, - serializedTransaction: serializedTransaction, - serializedContextFreeData: serializedContextFreeData, - }) - - return { - serializedTx: serializedTransaction, - fullMsg: msg, - hash: crypto.createHash('sha256').update(msg).digest('hex'), - signature: signedTxn.signatures[0], - } -} - -const basicTx: Transaction = { - expiration: "2021-08-28T12:50:36.686", - ref_block_num: 0x1122, - ref_block_prefix: 0x33445566, - context_free_actions: [], - actions: [{ - account: "fio.token", - name: "trnsfiopubky", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - amount: "20", - max_fee: 0x11223344, - tpid: "rewards@wallet", - actor: "aftyershcu22", - }, - }], - transaction_extensions: [], -} - -describe("signTransaction", async () => { - let fio: Fio = {} as Fio - - before(async () => { - const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() - const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() - - const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { - body: `{"account_name": "fio.token"}`, - method: 'POST', - })).json() - const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { - body: `{"account_name": "eosio.msig"}`, - method: 'POST', - })).json() - const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { - body: `{"account_name": "fio.token"}`, - method: 'POST', - })).json() - const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { - body: `{"account_name": "eosio.msig"}`, - method: 'POST', - })).json() - - // Get a Map of all the types from fio.address - const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) - const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) - const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) - const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) - networkInfo = { - "TESTNET": { - chainId: infoTestnet.chain_id, - typesFioAddress: typesFioAddressTestnet, - typesTransaction: typesTransactionTestnet, - }, - "MAINNET": { - chainId: infoMainnet.chain_id, - typesFioAddress: typesFioAddressMainnet, - typesTransaction: typesTransactionMainnet, - }, - } - - }) - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Sign testnet transaction", async () => { - const network = "TESTNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerResponse = await fio.signTransaction({path, chainId, tx}) - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - expect(ledgerResponse.txHashHex).to.be.equal(hash) - expect(signatureLedger.verify(fullMsg, publicKey)).to.be.true - expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.false - }) - - it("Sign mainnet transaction", async () => { - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, otherPublicKey) - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerResponse = await fio.signTransaction({path: otherPath, chainId, tx}) - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - expect(ledgerResponse.txHashHex).to.be.equal(hash) - expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.true - expect(signatureLedger.verify(fullMsg, publicKey)).to.be.false - }) - - it("Invalid transaction: actor dont match", async () => { - const network = "MAINNET" - const action = {...basicTx.actions[0], name: "name.error"} - const tx: Transaction = {...basicTx, actions: [action]} - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = fio.signTransaction({path, chainId, tx}) - await expect(promise).to.be.rejected - }) - - it("Path rejected by ledger", async () => { - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = fio.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) - await expect(promise).to.be.rejectedWith(DeviceStatusError, "Action rejected by Ledger's security policy") - }) -}) From 569838ca94ff510fecaa28b8dd370391bf1516f3 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 18 Jun 2022 20:51:22 +0200 Subject: [PATCH 08/83] Ass Diffie-Hellman encryption support --- src/diffieHellman.c | 180 +++++++++++++++++++++++++++++++++++++++ src/diffieHellman.h | 68 +++++++++++++++ src/diffieHelmann_test.c | 159 ++++++++++++++++++++++++++++++++++ src/hash.h | 56 ++++++++++++ src/keyDerivation_test.c | 8 +- src/runTests.c | 2 + 6 files changed, 467 insertions(+), 6 deletions(-) create mode 100644 src/diffieHellman.c create mode 100644 src/diffieHellman.h create mode 100644 src/diffieHelmann_test.c diff --git a/src/diffieHellman.c b/src/diffieHellman.c new file mode 100644 index 00000000..006c25e0 --- /dev/null +++ b/src/diffieHellman.c @@ -0,0 +1,180 @@ +#include "diffieHellman.h" +#include "os_math.h" + +__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_path_t *pathSpec, const public_key_t *publicKey) { + private_key_t privateKey; + unsigned char basicSecret[32]; + unsigned char secret[SHA_512_SIZE]; + uint8_t K[SHA_512_SIZE]; + + TRACE("dh_init_aesKey"); + BEGIN_TRY { + TRY { + derivePrivateKey(pathSpec, &privateKey); + + //this is how it is done... + cx_err_t err = cx_ecdh_no_throw(&privateKey, CX_ECDH_X, publicKey->W, publicKey->W_len, basicSecret, SIZEOF(basicSecret)); + ASSERT(err == CX_OK); + sha_512_hash(basicSecret, SIZEOF(basicSecret), secret, SIZEOF(secret)); + sha_512_hash(secret, SIZEOF(secret), K, SIZEOF(K)); + + //First DH_AES_SECRET_SIZE bytes are used to compute shared secret, then DH_KM_SIZE are used as Km for HMAC calculation + STATIC_ASSERT(SIZEOF(K) == DH_AES_SECRET_SIZE + DH_KM_SIZE, "Incompatible types"); + cx_aes_init_key_no_throw(K, DH_AES_SECRET_SIZE, &dhKey->aesKey); + STATIC_ASSERT(SIZEOF(dhKey->km) == DH_KM_SIZE, "Incompatible types"); + memmove(dhKey->km, K + DH_AES_SECRET_SIZE, DH_KM_SIZE); + dhKey->initialized_magic = DH_AES_KEY_INITIALIZED_MAGIC; + } + FINALLY { + explicit_bzero(&privateKey, sizeof(privateKey)); + explicit_bzero(basicSecret, SIZEOF(basicSecret)); + explicit_bzero(secret, SIZEOF(secret)); + explicit_bzero(K, SIZEOF(K)); + } + } + END_TRY; +} + +size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* iv, size_t ivSize, + uint8_t* outBuffer, size_t outSize) { + TRACE("dh_encode_init"); + + ASSERT(ivSize == SIZEOF(ctx->IV)); + ASSERT(aes_key->initialized_magic == DH_AES_KEY_INITIALIZED_MAGIC); + + ctx->cacheLength = 0; + explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); + memcpy(ctx->IV, iv, SIZEOF(ctx->IV)); + + explicit_bzero(&ctx->hmacCtx, SIZEOF(ctx->hmacCtx)); + cx_err_t err = cx_hmac_sha256_init_no_throw(&ctx->hmacCtx, aes_key->km , SIZEOF(aes_key->km)); + ASSERT(err == CX_OK); + err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, iv, ivSize); + ASSERT(err == CX_OK); + + ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; + + ASSERT(outSize >= SIZEOF(ctx->IV)); + memcpy(outBuffer, ctx->IV, SIZEOF(ctx->IV)); + + return SIZEOF(ctx->IV); +} + +size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize) { + TRACE("dh_encode_append"); + + ASSERT(inSize < BUFFER_SIZE_PARANOIA); + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + ASSERT(aes_key->initialized_magic == DH_AES_KEY_INITIALIZED_MAGIC); + ASSERT(ctx->cacheLength < CX_AES_BLOCK_SIZE); + STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); + + size_t processedInput = 0; + size_t written = 0; + while (processedInput < outSize) { + //fill ctx->buffer + size_t to_read = MIN(CX_AES_BLOCK_SIZE-ctx->cacheLength, inSize-processedInput); + memcpy(ctx->cache+ctx->cacheLength, inBuffer+processedInput, to_read); + ctx->cacheLength += to_read; + processedInput += to_read; + + //if block is only partially filled, we finish encoding, the data was read to cache + //this means that there was not enough input to fill the block + if (ctx->cacheLength < CX_AES_BLOCK_SIZE) { + break; + } + //cache is full now + //we can encrypt a block, + STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); + STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); + ASSERT(outSize - written >= CX_AES_BLOCK_SIZE); + + //We work in CBC mode + //1. IV xor plaintext + for(size_t i=0; icache[i] ^= ctx->IV[i]; + } + //2. encrypt the result to obtain cyphertext 3. use cyphertext as new IV + cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, ctx->IV); + ASSERT(err == CX_OK); + memmove(outBuffer + written, ctx->IV, CX_AES_BLOCK_SIZE); + written += CX_AES_BLOCK_SIZE; + + //append cyphertext to hmac and clear cache + err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, ctx->IV, CX_AES_BLOCK_SIZE); + ASSERT(err == CX_OK); + ctx->cacheLength = 0; + explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); + } + + return written; +} + +size_t dh_encode_finalize(dh_context_t* ctx, const dh_aes_key_t* aes_key, uint8_t* outBuffer, size_t outSize) { + TRACE("dh_encode_finalize"); + + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + ASSERT(aes_key->initialized_magic == DH_AES_KEY_INITIALIZED_MAGIC); + ASSERT(ctx->cacheLength < CX_AES_BLOCK_SIZE); + + //fill the last cache block with integers equal to number of elements missing + //if the next block is empty we create a block full of 0x10 (CX_AES_BLOCK_SIZE) + STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); + uint8_t fillValue = CX_AES_BLOCK_SIZE - ctx->cacheLength; + for(size_t i=ctx->cacheLength; icache[i] = fillValue; + } + + //encrypt last block + STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); + STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); + //1. IV xor plaintext + for(size_t i=0; icache[i] ^= ctx->IV[i]; + } + //2. eencrypt the result to obtain cyphertext + ASSERT(outSize >= CX_AES_BLOCK_SIZE); + cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, outBuffer); + ASSERT(err == CX_OK); + + //append cyphertext to hmac + err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, outBuffer, CX_AES_BLOCK_SIZE); + ASSERT(err == CX_OK); + + //finalize hmac and append it to cyphertext + ASSERT(outSize >= CX_AES_BLOCK_SIZE + DH_HMAC_SIZE); + size_t hmacOutSize = outSize - CX_AES_BLOCK_SIZE; + err = cx_hmac_final((cx_hmac_t *)&ctx->hmacCtx, outBuffer+CX_AES_BLOCK_SIZE, &hmacOutSize); + ASSERT(err == CX_OK); + ASSERT(hmacOutSize == DH_HMAC_SIZE); + + return CX_AES_BLOCK_SIZE + DH_HMAC_SIZE; +} + +size_t dh_encode(bip44_path_t *pathSpec, public_key_t *publicKey, const uint8_t* iv, size_t ivSize, + const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize) { + dh_aes_key_t key; + TRACE("dh_encode"); + + ASSERT(inSize < BUFFER_SIZE_PARANOIA); + + size_t written = 0; + + BEGIN_TRY { + TRY { + dh_init_aes_key(&key, pathSpec, publicKey); + + dh_context_t ctx; + written += dh_encode_init(&ctx, &key, iv, ivSize, outBuffer+written, outSize-written); + written += dh_encode_append(&ctx, &key, inBuffer, inSize, outBuffer+written, outSize-written); + written += dh_encode_finalize(&ctx, &key, outBuffer+written, outSize-written); + } + FINALLY { + explicit_bzero(&key, sizeof(key)); + } + } + END_TRY; + + return written; +} \ No newline at end of file diff --git a/src/diffieHellman.h b/src/diffieHellman.h new file mode 100644 index 00000000..e612903a --- /dev/null +++ b/src/diffieHellman.h @@ -0,0 +1,68 @@ +#ifndef H_FIO_DIFFIE_HELLMAN +#define H_FIO_DIFFIE_HELLMAN + +#include "common.h" +#include "ox_aes.h" +#include "exceptions.h" +#include "bip44.h" +#include "keyDerivation.h" +#include "hash.h" + +// This file provides convenience functions for using firmware hashing api + +// Note: We would like to make this static const but +// it does not play well with inline functions +enum { + DH_CONTEXT_INITIALIZED_MAGIC = 12345, + DH_AES_KEY_INITIALIZED_MAGIC = 12346, +}; + +#define DH_AES_IV_SIZE 16 +#define DH_KM_SIZE 32 +#define DH_AES_SECRET_SIZE 32 +#define DH_HMAC_SIZE 32 + +//Context does not contain secrets. hmacCtx contains half of SHA-512 hash, but this is of no use without aesKey. +typedef struct { + uint16_t initialized_magic; + uint8_t IV[DH_AES_IV_SIZE]; + uint8_t cacheLength; + uint8_t cache[CX_AES_BLOCK_SIZE]; + cx_hmac_sha256_t hmacCtx; +} dh_context_t; + +//Aes key is secret shared between us and the second party +typedef struct { + uint16_t initialized_magic; + cx_aes_key_t aesKey; + uint8_t km[DH_KM_SIZE]; +} dh_aes_key_t; + + +//You may need to call multiple times if encryption spans multiple APDU's +//You may want to do something like +//APDU1 - dh_init_aes_key, dh_encode_init, dh_encode_append +//APDU2 - dh_init_aes_key, dh_encode_append +//APDU3 - dh_init_aes_key, dh_encode_append, dh_encode_finalize +//Do not forget to guarantee that dh_aes_key_t is zeroes at all times +__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_path_t *pathSpec, const public_key_t *publicKey); + +size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* iv, size_t ivSize, + uint8_t* outBuffer, size_t outSize); + +size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize); + +size_t dh_encode_finalize(dh_context_t* ctx, const dh_aes_key_t* aes_key, uint8_t* outBuffer, size_t outSize); + +/* Convenience function to make all in one step */ +size_t dh_encode(bip44_path_t *pathSpec, public_key_t *publicKey, const uint8_t* iv, size_t ivSize, + const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize); + + +#ifdef DEVEL +void run_diffieHellman_test(); +#endif // DEVEL + + +#endif \ No newline at end of file diff --git a/src/diffieHelmann_test.c b/src/diffieHelmann_test.c new file mode 100644 index 00000000..f7b38449 --- /dev/null +++ b/src/diffieHelmann_test.c @@ -0,0 +1,159 @@ +#ifdef DEVEL + +#include "diffieHellman.h" +#include "hexUtils.h" +#include "testUtils.h" +#include "utils.h" +#include "bip44.h" + +#define HD HARDENED_BIP32 + +//The testcases here were generated using: +//To create shared secret (this creates SharedCipher instance): +//https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L20 +//For encryption (this is method of SharedCypher): +//https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L52 +//It was not very convenient to use higher level funtions for this purpose as they depend on fio serialization + +static void pathSpec_init(bip44_path_t* pathSpec, const uint32_t* pathArray, uint32_t pathLength) { + pathSpec->length = pathLength; + memmove(pathSpec->path, pathArray, pathLength * 4); +} + +static void run_dh_encode_tests() { + BEGIN_ASSERT_NOEXCEPT { + //initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 0}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, &publicKey); + + const uint8_t IV[DH_AES_IV_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + + #define TESTCASE(msgHex_, expectedEncryptedMsgHex_) \ + { \ + const char *msgHex = msgHex_; \ + uint8_t msg[200]; \ + size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ + uint8_t encMsg[300]; \ + size_t encMsgLength = dh_encode(&pathSpec, &publicKey, IV, DH_AES_IV_SIZE, \ + msg, msgLen, encMsg, SIZEOF(encMsg)); \ + const char *expectedEncMsgHex = expectedEncryptedMsgHex_; \ + uint8_t expectedEncMsg[300]; \ + decode_hex(expectedEncMsgHex, expectedEncMsg, SIZEOF(expectedEncMsg)); \ + ASSERT(encMsgLength == strlen(expectedEncMsgHex)/2); \ + EXPECT_EQ_BYTES(expectedEncMsg, encMsg, strlen(expectedEncMsgHex)/2); \ + } + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60b64b8e8c732d893f6cd374cabc0b30882b6eebaba7af72826e54b11d48a8705974adf7d957aba1f428f58aca25ac5a") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576df93b5a2ebef58532ec2d2dd21c11fdb590d05a598740af8fd9263343eb1d85a7e6943c21d254682d0bdc4c74619ea22c") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0011", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d2b88c5f509bb7276a32f94595e196cf382b0625992dd194210a0e545410741a8013a122d2edd9233caa3fd4b75f9946c") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddee", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576df99997fa2a742665b01c35c7d6caebc2fbd1bd4479cb819eb452123a0ec6356f40222f7fc8cebc3a5b81f644f2f75629") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddeeff", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69be21718ab07bc639172663927cb075fa777797e0c1c4") + + #undef TESTCASE + } END_ASSERT_NOEXCEPT; +} + +void run_dh_encode_init_append_finalize_tests() { + BEGIN_ASSERT_NOEXCEPT { + //initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, &publicKey); + + const uint8_t IV[DH_AES_IV_SIZE] = {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; + + dh_aes_key_t key; + dh_init_aes_key(&key, &pathSpec, &publicKey); + dh_context_t ctx; + + const char *inBufferHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddeeff"; + uint8_t inBuffer[200]; \ + size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); + const char *expectedHex = "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; + uint8_t expected[300]; + decode_hex(expectedHex, expected, SIZEOF(expected)); + + uint8_t outBuffer[200]; + size_t outBufferLength = 0; + + outBufferLength = dh_encode(&pathSpec, &publicKey, IV, DH_AES_IV_SIZE, inBuffer, inBufferLength, outBuffer, SIZEOF(outBuffer)); + TRACE_BUFFER(outBuffer, outBufferLength); + ASSERT(outBufferLength == 7*16); + EXPECT_EQ_BYTES(expected, outBuffer, outBufferLength); + + size_t read = 0; + size_t written = 0; + + outBufferLength = dh_encode_init(&ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected+written, outBuffer, 16); + written += 16; + + outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + + outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 14; + + outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 18, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 32); + EXPECT_EQ_BYTES(expected+written, outBuffer, 32); + read += 18, written += 32; + + outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + + outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected+written, outBuffer, 16); + read += 14, written += 16; + + outBufferLength = dh_encode_finalize(&ctx, &key, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 48); + EXPECT_EQ_BYTES(expected+written, outBuffer, 48); + written += 48; + + ASSERT(read == inBufferLength); + } END_ASSERT_NOEXCEPT; +} + +void run_diffieHellman_test() { + PRINTF("Running DH tests\n"); + PRINTF("If they fail, make sure you seeded your device with\n"); + PRINTF("12-word mnemonic: 11*abandon about\n"); + run_dh_encode_tests(); + run_dh_encode_init_append_finalize_tests(); +} + +#endif // DEVEL diff --git a/src/hash.h b/src/hash.h index 3a7a0560..7367c29f 100644 --- a/src/hash.h +++ b/src/hash.h @@ -9,6 +9,7 @@ // it does not play well with inline functions enum { SHA_256_SIZE = 32, + SHA_512_SIZE = 64, }; enum { @@ -66,4 +67,59 @@ static __attribute__((always_inline, unused)) void sha_256_hash(const uint8_t* i sha_256_finalize(&ctx, outBuffer, outSize); } +typedef struct { + uint16_t initialized_magic; + cx_sha512_t cx_ctx; +} sha_512_context_t; + +static __attribute__((always_inline, unused)) void sha_512_init(sha_512_context_t* ctx) +{ + cx_sha512_init(&ctx->cx_ctx); + ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; +} + +static __attribute__((always_inline, unused)) void sha_512_append(sha_512_context_t* ctx, + const uint8_t* inBuffer, size_t inSize) +{ + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + TRACE_BUFFER(inBuffer, inSize); + cx_hash( + & ctx->cx_ctx.header, + 0, /* Do not output the hash, yet */ + inBuffer, + inSize, + NULL, 0 + ); +} + +static __attribute__((always_inline, unused)) void sha_512_finalize(sha_512_context_t* ctx, + uint8_t* outBuffer, size_t outSize) +{ + \ + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + ASSERT(outSize == SHA_512_SIZE); + cx_hash( + & ctx->cx_ctx.header, + CX_LAST, /* Output the hash */ + NULL, + 0, + outBuffer, + SHA_512_SIZE + ); +} + +/* Convenience function to make all in one step */ +static __attribute__((always_inline, unused)) void sha_512_hash(const uint8_t* inBuffer, size_t inSize, + uint8_t* outBuffer, size_t outSize ) +{ + ASSERT(inSize < BUFFER_SIZE_PARANOIA); + ASSERT(outSize == SHA_512_SIZE); + sha_512_context_t ctx; + sha_512_init(&ctx); + /* Note: This could be done by single cx_hash call */ + /* But we don't really care */ + sha_512_append(&ctx, inBuffer, inSize); + sha_512_finalize(&ctx, outBuffer, outSize); +} + #endif // H_FIO_APP_HASH diff --git a/src/keyDerivation_test.c b/src/keyDerivation_test.c index 70f311fd..caefbf81 100644 --- a/src/keyDerivation_test.c +++ b/src/keyDerivation_test.c @@ -45,11 +45,9 @@ void testPrivateKeyDerivation() { // about"? TESTCASE((HD + 44, HD + 235, HD + 0, 0, 0), - "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a"); TESTCASE((HD + 44, HD + 235, HD + 0, 0, 2000), - "0762d870ba3a00625d02c8374dbcd33f1df4d8f1abbaa89387ab5c8afa533d90"); #undef TESTCASE @@ -95,12 +93,10 @@ void testPublicKeyDerivation() { } TESTCASE((HD + 44, HD + 235, HD + 0, 0, 0), - "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e2668" - "50ff980ad349ab8b027c93bf4aead1984168ad43e30ab") + "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab") TESTCASE((HD + 44, HD + 235, HD + 0, 0, 2000), - "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1" - "bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"); + "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"); #undef TESTCASE } diff --git a/src/runTests.c b/src/runTests.c index c45f122e..7f3a9b36 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -10,6 +10,7 @@ #include "textUtils.h" #include "uiHelpers.h" #include "uiScreens.h" +#include "diffieHellman.h" void handleRunTests(uint8_t p1 MARK_UNUSED, uint8_t p2 MARK_UNUSED, @@ -25,6 +26,7 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); + run_diffieHellman_test(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; From 62f3f1c4c61b017e072bf3640d5a0bd52369189f Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 20 Jun 2022 09:00:48 +0200 Subject: [PATCH 09/83] Fix formatting --- src/bip44.c | 2 +- src/diffieHellman.c | 123 +++++++++++++--------- src/diffieHellman.h | 67 +++++++----- src/diffieHellmann_test.c | 210 ++++++++++++++++++++++++++++++++++++++ src/diffieHelmann_test.c | 159 ----------------------------- src/endian.h | 8 +- src/hash.h | 78 +++++++------- src/hexUtils.c | 2 +- src/keyDerivation_test.c | 6 +- src/main.c | 2 +- src/textUtils.c | 4 +- src/utils.h | 6 +- 12 files changed, 382 insertions(+), 285 deletions(-) create mode 100644 src/diffieHellmann_test.c delete mode 100644 src/diffieHelmann_test.c diff --git a/src/bip44.c b/src/bip44.c index 5ffbb651..8366cfa3 100644 --- a/src/bip44.c +++ b/src/bip44.c @@ -81,7 +81,7 @@ size_t bip44_printToStr(const bip44_path_t* pathSpec, char* out, size_t outSize) { \ ASSERT(ptr <= end); \ STATIC_ASSERT(sizeof(end - ptr) == sizeof(size_t), "bad size_t size"); \ - size_t availableSize = (size_t)(end - ptr); \ + size_t availableSize = (size_t) (end - ptr); \ /* Note(ppershing): We do not bother checking return */ \ /* value of snprintf as it always returns 0. */ \ /* Go figure out ... */ \ diff --git a/src/diffieHellman.c b/src/diffieHellman.c index 006c25e0..98788c12 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -1,10 +1,12 @@ #include "diffieHellman.h" #include "os_math.h" -__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_path_t *pathSpec, const public_key_t *publicKey) { +__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, + const bip44_path_t* pathSpec, + const public_key_t* publicKey) { private_key_t privateKey; unsigned char basicSecret[32]; - unsigned char secret[SHA_512_SIZE]; + unsigned char secret[SHA_512_SIZE]; uint8_t K[SHA_512_SIZE]; TRACE("dh_init_aesKey"); @@ -12,13 +14,19 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_ TRY { derivePrivateKey(pathSpec, &privateKey); - //this is how it is done... - cx_err_t err = cx_ecdh_no_throw(&privateKey, CX_ECDH_X, publicKey->W, publicKey->W_len, basicSecret, SIZEOF(basicSecret)); + // this is how it is done... + cx_err_t err = cx_ecdh_no_throw(&privateKey, + CX_ECDH_X, + publicKey->W, + publicKey->W_len, + basicSecret, + SIZEOF(basicSecret)); ASSERT(err == CX_OK); sha_512_hash(basicSecret, SIZEOF(basicSecret), secret, SIZEOF(secret)); - sha_512_hash(secret, SIZEOF(secret), K, SIZEOF(K)); + sha_512_hash(secret, SIZEOF(secret), K, SIZEOF(K)); - //First DH_AES_SECRET_SIZE bytes are used to compute shared secret, then DH_KM_SIZE are used as Km for HMAC calculation + // First DH_AES_SECRET_SIZE bytes are used to compute shared secret, then DH_KM_SIZE are + // used as Km for HMAC calculation STATIC_ASSERT(SIZEOF(K) == DH_AES_SECRET_SIZE + DH_KM_SIZE, "Incompatible types"); cx_aes_init_key_no_throw(K, DH_AES_SECRET_SIZE, &dhKey->aesKey); STATIC_ASSERT(SIZEOF(dhKey->km) == DH_KM_SIZE, "Incompatible types"); @@ -35,8 +43,12 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_ END_TRY; } -size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* iv, size_t ivSize, - uint8_t* outBuffer, size_t outSize) { +size_t dh_encode_init(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* iv, + size_t ivSize, + uint8_t* outBuffer, + size_t outSize) { TRACE("dh_encode_init"); ASSERT(ivSize == SIZEOF(ctx->IV)); @@ -47,9 +59,9 @@ size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint memcpy(ctx->IV, iv, SIZEOF(ctx->IV)); explicit_bzero(&ctx->hmacCtx, SIZEOF(ctx->hmacCtx)); - cx_err_t err = cx_hmac_sha256_init_no_throw(&ctx->hmacCtx, aes_key->km , SIZEOF(aes_key->km)); + cx_err_t err = cx_hmac_sha256_init_no_throw(&ctx->hmacCtx, aes_key->km, SIZEOF(aes_key->km)); ASSERT(err == CX_OK); - err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, iv, ivSize); + err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, iv, ivSize); ASSERT(err == CX_OK); ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; @@ -60,8 +72,12 @@ size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint return SIZEOF(ctx->IV); } -size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, - const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize) { +size_t dh_encode_append(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize) { TRACE("dh_encode_append"); ASSERT(inSize < BUFFER_SIZE_PARANOIA); @@ -73,36 +89,36 @@ size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, size_t processedInput = 0; size_t written = 0; while (processedInput < outSize) { - //fill ctx->buffer - size_t to_read = MIN(CX_AES_BLOCK_SIZE-ctx->cacheLength, inSize-processedInput); - memcpy(ctx->cache+ctx->cacheLength, inBuffer+processedInput, to_read); + // fill ctx->buffer + size_t to_read = MIN(CX_AES_BLOCK_SIZE - ctx->cacheLength, inSize - processedInput); + memcpy(ctx->cache + ctx->cacheLength, inBuffer + processedInput, to_read); ctx->cacheLength += to_read; processedInput += to_read; - //if block is only partially filled, we finish encoding, the data was read to cache - //this means that there was not enough input to fill the block + // if block is only partially filled, we finish encoding, the data was read to cache + // this means that there was not enough input to fill the block if (ctx->cacheLength < CX_AES_BLOCK_SIZE) { break; } - //cache is full now - //we can encrypt a block, + // cache is full now + // we can encrypt a block, STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); ASSERT(outSize - written >= CX_AES_BLOCK_SIZE); - //We work in CBC mode - //1. IV xor plaintext - for(size_t i=0; icache[i] ^= ctx->IV[i]; - } - //2. encrypt the result to obtain cyphertext 3. use cyphertext as new IV + } + // 2. encrypt the result to obtain cyphertext 3. use cyphertext as new IV cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, ctx->IV); ASSERT(err == CX_OK); memmove(outBuffer + written, ctx->IV, CX_AES_BLOCK_SIZE); written += CX_AES_BLOCK_SIZE; - //append cyphertext to hmac and clear cache - err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, ctx->IV, CX_AES_BLOCK_SIZE); + // append cyphertext to hmac and clear cache + err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, ctx->IV, CX_AES_BLOCK_SIZE); ASSERT(err == CX_OK); ctx->cacheLength = 0; explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); @@ -111,49 +127,58 @@ size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, return written; } -size_t dh_encode_finalize(dh_context_t* ctx, const dh_aes_key_t* aes_key, uint8_t* outBuffer, size_t outSize) { +size_t dh_encode_finalize(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + uint8_t* outBuffer, + size_t outSize) { TRACE("dh_encode_finalize"); ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); ASSERT(aes_key->initialized_magic == DH_AES_KEY_INITIALIZED_MAGIC); ASSERT(ctx->cacheLength < CX_AES_BLOCK_SIZE); - - //fill the last cache block with integers equal to number of elements missing - //if the next block is empty we create a block full of 0x10 (CX_AES_BLOCK_SIZE) + + // fill the last cache block with integers equal to number of elements missing + // if the next block is empty we create a block full of 0x10 (CX_AES_BLOCK_SIZE) STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); uint8_t fillValue = CX_AES_BLOCK_SIZE - ctx->cacheLength; - for(size_t i=ctx->cacheLength; icacheLength; i < CX_AES_BLOCK_SIZE; i++) { ctx->cache[i] = fillValue; - } + } - //encrypt last block + // encrypt last block STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); - //1. IV xor plaintext - for(size_t i=0; icache[i] ^= ctx->IV[i]; - } - //2. eencrypt the result to obtain cyphertext + } + // 2. eencrypt the result to obtain cyphertext ASSERT(outSize >= CX_AES_BLOCK_SIZE); cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, outBuffer); ASSERT(err == CX_OK); - //append cyphertext to hmac - err = cx_hmac_update((cx_hmac_t *)&ctx->hmacCtx, outBuffer, CX_AES_BLOCK_SIZE); + // append cyphertext to hmac + err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, outBuffer, CX_AES_BLOCK_SIZE); ASSERT(err == CX_OK); - //finalize hmac and append it to cyphertext + // finalize hmac and append it to cyphertext ASSERT(outSize >= CX_AES_BLOCK_SIZE + DH_HMAC_SIZE); size_t hmacOutSize = outSize - CX_AES_BLOCK_SIZE; - err = cx_hmac_final((cx_hmac_t *)&ctx->hmacCtx, outBuffer+CX_AES_BLOCK_SIZE, &hmacOutSize); + err = cx_hmac_final((cx_hmac_t*) &ctx->hmacCtx, outBuffer + CX_AES_BLOCK_SIZE, &hmacOutSize); ASSERT(err == CX_OK); ASSERT(hmacOutSize == DH_HMAC_SIZE); return CX_AES_BLOCK_SIZE + DH_HMAC_SIZE; } -size_t dh_encode(bip44_path_t *pathSpec, public_key_t *publicKey, const uint8_t* iv, size_t ivSize, - const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize) { +size_t dh_encode(bip44_path_t* pathSpec, + public_key_t* publicKey, + const uint8_t* iv, + size_t ivSize, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize) { dh_aes_key_t key; TRACE("dh_encode"); @@ -166,9 +191,15 @@ size_t dh_encode(bip44_path_t *pathSpec, public_key_t *publicKey, const uint8_t* dh_init_aes_key(&key, pathSpec, publicKey); dh_context_t ctx; - written += dh_encode_init(&ctx, &key, iv, ivSize, outBuffer+written, outSize-written); - written += dh_encode_append(&ctx, &key, inBuffer, inSize, outBuffer+written, outSize-written); - written += dh_encode_finalize(&ctx, &key, outBuffer+written, outSize-written); + written += + dh_encode_init(&ctx, &key, iv, ivSize, outBuffer + written, outSize - written); + written += dh_encode_append(&ctx, + &key, + inBuffer, + inSize, + outBuffer + written, + outSize - written); + written += dh_encode_finalize(&ctx, &key, outBuffer + written, outSize - written); } FINALLY { explicit_bzero(&key, sizeof(key)); diff --git a/src/diffieHellman.h b/src/diffieHellman.h index e612903a..cf677fca 100644 --- a/src/diffieHellman.h +++ b/src/diffieHellman.h @@ -17,12 +17,13 @@ enum { DH_AES_KEY_INITIALIZED_MAGIC = 12346, }; -#define DH_AES_IV_SIZE 16 -#define DH_KM_SIZE 32 +#define DH_AES_IV_SIZE 16 +#define DH_KM_SIZE 32 #define DH_AES_SECRET_SIZE 32 -#define DH_HMAC_SIZE 32 +#define DH_HMAC_SIZE 32 -//Context does not contain secrets. hmacCtx contains half of SHA-512 hash, but this is of no use without aesKey. +// Context does not contain secrets. hmacCtx contains half of SHA-512 hash, but this is of no use +// without aesKey. typedef struct { uint16_t initialized_magic; uint8_t IV[DH_AES_IV_SIZE]; @@ -31,38 +32,54 @@ typedef struct { cx_hmac_sha256_t hmacCtx; } dh_context_t; -//Aes key is secret shared between us and the second party +// Aes key is secret shared between us and the second party typedef struct { uint16_t initialized_magic; cx_aes_key_t aesKey; uint8_t km[DH_KM_SIZE]; } dh_aes_key_t; - -//You may need to call multiple times if encryption spans multiple APDU's -//You may want to do something like -//APDU1 - dh_init_aes_key, dh_encode_init, dh_encode_append -//APDU2 - dh_init_aes_key, dh_encode_append -//APDU3 - dh_init_aes_key, dh_encode_append, dh_encode_finalize -//Do not forget to guarantee that dh_aes_key_t is zeroes at all times -__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t *dhKey, const bip44_path_t *pathSpec, const public_key_t *publicKey); - -size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* iv, size_t ivSize, - uint8_t* outBuffer, size_t outSize); - -size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, - const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize); - -size_t dh_encode_finalize(dh_context_t* ctx, const dh_aes_key_t* aes_key, uint8_t* outBuffer, size_t outSize); +// You may need to call multiple times if encryption spans multiple APDU's +// You may want to do something like +// APDU1 - dh_init_aes_key, dh_encode_init, dh_encode_append +// APDU2 - dh_init_aes_key, dh_encode_append +// APDU3 - dh_init_aes_key, dh_encode_append, dh_encode_finalize +// Do not forget to guarantee that dh_aes_key_t is zeroes at all times +__noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, + const bip44_path_t* pathSpec, + const public_key_t* publicKey); + +size_t dh_encode_init(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* iv, + size_t ivSize, + uint8_t* outBuffer, + size_t outSize); + +size_t dh_encode_append(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize); + +size_t dh_encode_finalize(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + uint8_t* outBuffer, + size_t outSize); /* Convenience function to make all in one step */ -size_t dh_encode(bip44_path_t *pathSpec, public_key_t *publicKey, const uint8_t* iv, size_t ivSize, - const uint8_t* inBuffer, size_t inSize, uint8_t* outBuffer, size_t outSize); - +size_t dh_encode(bip44_path_t* pathSpec, + public_key_t* publicKey, + const uint8_t* iv, + size_t ivSize, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize); #ifdef DEVEL void run_diffieHellman_test(); #endif // DEVEL - #endif \ No newline at end of file diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c new file mode 100644 index 00000000..ba8565f0 --- /dev/null +++ b/src/diffieHellmann_test.c @@ -0,0 +1,210 @@ +#ifdef DEVEL + +#include "diffieHellman.h" +#include "hexUtils.h" +#include "testUtils.h" +#include "utils.h" +#include "bip44.h" + +#define HD HARDENED_BIP32 + +// The testcases here were generated using: +// To create shared secret (this creates SharedCipher instance): +// https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L20 +// For encryption (this is method of SharedCypher): +// https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L52 +// It was not very convenient to use higher level funtions for this purpose as they depend on fio +// serialization + +static void pathSpec_init(bip44_path_t* pathSpec, const uint32_t* pathArray, uint32_t pathLength) { + pathSpec->length = pathLength; + memmove(pathSpec->path, pathArray, pathLength * 4); +} + +static void run_dh_encode_tests() { + BEGIN_ASSERT_NOEXCEPT { + // initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 0}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = + "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1b" + "d84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + publicKeyBuffer, + publicKeyLen, + &publicKey); + + const uint8_t IV[DH_AES_IV_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + +#define TESTCASE(msgHex_, expectedEncryptedMsgHex_) \ + { \ + const char* msgHex = msgHex_; \ + uint8_t msg[200]; \ + size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ + uint8_t encMsg[300]; \ + size_t encMsgLength = dh_encode(&pathSpec, \ + &publicKey, \ + IV, \ + DH_AES_IV_SIZE, \ + msg, \ + msgLen, \ + encMsg, \ + SIZEOF(encMsg)); \ + const char* expectedEncMsgHex = expectedEncryptedMsgHex_; \ + uint8_t expectedEncMsg[300]; \ + decode_hex(expectedEncMsgHex, expectedEncMsg, SIZEOF(expectedEncMsg)); \ + ASSERT(encMsgLength == strlen(expectedEncMsgHex) / 2); \ + EXPECT_EQ_BYTES(expectedEncMsg, encMsg, strlen(expectedEncMsgHex) / 2); \ + } + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" + "958f0a3a005576d60b64b8e8c732d893f6cd374cabc0b30882b6eebaba7af72826e54b11d48a87059" + "74adf7d957aba1f428f58aca25ac5a") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" + "958f0a3a005576df93b5a2ebef58532ec2d2dd21c11fdb590d05a598740af8fd9263343eb1d85a7e6" + "943c21d254682d0bdc4c74619ea22c") + + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0011", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" + "958f0a3a005576d2b88c5f509bb7276a32f94595e196cf382b0625992dd194210a0e545410741a801" + "3a122d2edd9233caa3fd4b75f9946c") + + TESTCASE( + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" + "bbccddee", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576df99997fa2a742665b01c35c7d6caebc2fbd1bd4479cb819eb452123a0ec6356f40222f7fc8ce" + "bc3a5b81f644f2f75629") + + TESTCASE( + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" + "bbccddeeff", + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1f" + "c4349c69be21718ab07bc639172663927cb075fa777797e0c1c4") + +#undef TESTCASE + } + END_ASSERT_NOEXCEPT; +} + +void run_dh_encode_init_append_finalize_tests() { + BEGIN_ASSERT_NOEXCEPT { + // initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = + "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1b" + "d84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + publicKeyBuffer, + publicKeyLen, + &publicKey); + + const uint8_t IV[DH_AES_IV_SIZE] = + {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; + + dh_aes_key_t key; + dh_init_aes_key(&key, &pathSpec, &publicKey); + dh_context_t ctx; + + const char* inBufferHex = + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" + "bbccddeeff"; + uint8_t inBuffer[200]; + size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); + const char* expectedHex = + "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6" + "ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f" + "449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; + uint8_t expected[300]; + decode_hex(expectedHex, expected, SIZEOF(expected)); + + uint8_t outBuffer[200]; + size_t outBufferLength = 0; + + outBufferLength = dh_encode(&pathSpec, + &publicKey, + IV, + DH_AES_IV_SIZE, + inBuffer, + inBufferLength, + outBuffer, + SIZEOF(outBuffer)); + TRACE_BUFFER(outBuffer, outBufferLength); + ASSERT(outBufferLength == 7 * 16); + EXPECT_EQ_BYTES(expected, outBuffer, outBufferLength); + + size_t read = 0; + size_t written = 0; + + outBufferLength = dh_encode_init(&ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected + written, outBuffer, 16); + written += 16; + + outBufferLength = + dh_encode_append(&ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + + outBufferLength = + dh_encode_append(&ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 14; + + outBufferLength = + dh_encode_append(&ctx, &key, inBuffer + read, 18, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 32); + EXPECT_EQ_BYTES(expected + written, outBuffer, 32); + read += 18, written += 32; + + outBufferLength = + dh_encode_append(&ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + + outBufferLength = + dh_encode_append(&ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected + written, outBuffer, 16); + read += 14, written += 16; + + outBufferLength = dh_encode_finalize(&ctx, &key, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 48); + EXPECT_EQ_BYTES(expected + written, outBuffer, 48); + written += 48; + + ASSERT(read == inBufferLength); + } + END_ASSERT_NOEXCEPT; +} + +void run_diffieHellman_test() { + PRINTF("Running DH tests\n"); + PRINTF("If they fail, make sure you seeded your device with\n"); + PRINTF("12-word mnemonic: 11*abandon about\n"); + run_dh_encode_tests(); + run_dh_encode_init_append_finalize_tests(); +} + +#endif // DEVEL diff --git a/src/diffieHelmann_test.c b/src/diffieHelmann_test.c deleted file mode 100644 index f7b38449..00000000 --- a/src/diffieHelmann_test.c +++ /dev/null @@ -1,159 +0,0 @@ -#ifdef DEVEL - -#include "diffieHellman.h" -#include "hexUtils.h" -#include "testUtils.h" -#include "utils.h" -#include "bip44.h" - -#define HD HARDENED_BIP32 - -//The testcases here were generated using: -//To create shared secret (this creates SharedCipher instance): -//https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L20 -//For encryption (this is method of SharedCypher): -//https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/encryption-fio.ts#L52 -//It was not very convenient to use higher level funtions for this purpose as they depend on fio serialization - -static void pathSpec_init(bip44_path_t* pathSpec, const uint32_t* pathArray, uint32_t pathLength) { - pathSpec->length = pathLength; - memmove(pathSpec->path, pathArray, pathLength * 4); -} - -static void run_dh_encode_tests() { - BEGIN_ASSERT_NOEXCEPT { - //initializing derivation paths - uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 0}; - bip44_path_t pathSpec; - pathSpec_init(&pathSpec, path, 5); - bip44_PRINTF(&pathSpec); - PRINTF("\n"); - - public_key_t publicKey; - const char* publicKeyHex = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; - uint8_t publicKeyBuffer[65]; - size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); - ASSERT(publicKeyLen == 65); - cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, &publicKey); - - const uint8_t IV[DH_AES_IV_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; - - #define TESTCASE(msgHex_, expectedEncryptedMsgHex_) \ - { \ - const char *msgHex = msgHex_; \ - uint8_t msg[200]; \ - size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ - uint8_t encMsg[300]; \ - size_t encMsgLength = dh_encode(&pathSpec, &publicKey, IV, DH_AES_IV_SIZE, \ - msg, msgLen, encMsg, SIZEOF(encMsg)); \ - const char *expectedEncMsgHex = expectedEncryptedMsgHex_; \ - uint8_t expectedEncMsg[300]; \ - decode_hex(expectedEncMsgHex, expectedEncMsg, SIZEOF(expectedEncMsg)); \ - ASSERT(encMsgLength == strlen(expectedEncMsgHex)/2); \ - EXPECT_EQ_BYTES(expectedEncMsg, encMsg, strlen(expectedEncMsgHex)/2); \ - } - - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60b64b8e8c732d893f6cd374cabc0b30882b6eebaba7af72826e54b11d48a8705974adf7d957aba1f428f58aca25ac5a") - - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576df93b5a2ebef58532ec2d2dd21c11fdb590d05a598740af8fd9263343eb1d85a7e6943c21d254682d0bdc4c74619ea22c") - - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0011", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d2b88c5f509bb7276a32f94595e196cf382b0625992dd194210a0e545410741a8013a122d2edd9233caa3fd4b75f9946c") - - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddee", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576df99997fa2a742665b01c35c7d6caebc2fbd1bd4479cb819eb452123a0ec6356f40222f7fc8cebc3a5b81f644f2f75629") - - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddeeff", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69be21718ab07bc639172663927cb075fa777797e0c1c4") - - #undef TESTCASE - } END_ASSERT_NOEXCEPT; -} - -void run_dh_encode_init_append_finalize_tests() { - BEGIN_ASSERT_NOEXCEPT { - //initializing derivation paths - uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; - bip44_path_t pathSpec; - pathSpec_init(&pathSpec, path, 5); - bip44_PRINTF(&pathSpec); - PRINTF("\n"); - - public_key_t publicKey; - const char* publicKeyHex = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; - uint8_t publicKeyBuffer[65]; - size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); - ASSERT(publicKeyLen == 65); - cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, &publicKey); - - const uint8_t IV[DH_AES_IV_SIZE] = {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; - - dh_aes_key_t key; - dh_init_aes_key(&key, &pathSpec, &publicKey); - dh_context_t ctx; - - const char *inBufferHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aabbccddeeff"; - uint8_t inBuffer[200]; \ - size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); - const char *expectedHex = "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; - uint8_t expected[300]; - decode_hex(expectedHex, expected, SIZEOF(expected)); - - uint8_t outBuffer[200]; - size_t outBufferLength = 0; - - outBufferLength = dh_encode(&pathSpec, &publicKey, IV, DH_AES_IV_SIZE, inBuffer, inBufferLength, outBuffer, SIZEOF(outBuffer)); - TRACE_BUFFER(outBuffer, outBufferLength); - ASSERT(outBufferLength == 7*16); - EXPECT_EQ_BYTES(expected, outBuffer, outBufferLength); - - size_t read = 0; - size_t written = 0; - - outBufferLength = dh_encode_init(&ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected+written, outBuffer, 16); - written += 16; - - outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 1, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 1; - - outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 14, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 14; - - outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 18, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 32); - EXPECT_EQ_BYTES(expected+written, outBuffer, 32); - read += 18, written += 32; - - outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 1, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 1; - - outBufferLength = dh_encode_append(&ctx, &key, inBuffer+read, 14, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected+written, outBuffer, 16); - read += 14, written += 16; - - outBufferLength = dh_encode_finalize(&ctx, &key, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 48); - EXPECT_EQ_BYTES(expected+written, outBuffer, 48); - written += 48; - - ASSERT(read == inBufferLength); - } END_ASSERT_NOEXCEPT; -} - -void run_diffieHellman_test() { - PRINTF("Running DH tests\n"); - PRINTF("If they fail, make sure you seeded your device with\n"); - PRINTF("12-word mnemonic: 11*abandon about\n"); - run_dh_encode_tests(); - run_dh_encode_init_append_finalize_tests(); -} - -#endif // DEVEL diff --git a/src/endian.h b/src/endian.h index 4bed2d6a..80d96429 100644 --- a/src/endian.h +++ b/src/endian.h @@ -32,16 +32,16 @@ inline uint16_t u2be_read(const uint8_t* inBuffer) { STATIC_ASSERT(sizeof(uint32_t) == sizeof(unsigned), "bad unsigned size"); // bitwise OR promotes unsigned types smaller than int to unsigned - return (uint16_t)(((uint32_t)(u1be_read(inBuffer) << 8)) | - ((uint32_t)(u1be_read(inBuffer + 1)))); + return (uint16_t) (((uint32_t) (u1be_read(inBuffer) << 8)) | + ((uint32_t) (u1be_read(inBuffer + 1)))); } inline uint32_t u4be_read(const uint8_t* inBuffer) { - return ((uint32_t) u2be_read(inBuffer) << 16) | (uint32_t)(u2be_read(inBuffer + 2)); + return ((uint32_t) u2be_read(inBuffer) << 16) | (uint32_t) (u2be_read(inBuffer + 2)); } inline uint64_t u8be_read(const uint8_t* inBuffer) { - return ((uint64_t) u4be_read(inBuffer) << 32u) | (uint64_t)(u4be_read(inBuffer + 4)); + return ((uint64_t) u4be_read(inBuffer) << 32u) | (uint64_t) (u4be_read(inBuffer + 4)); } #ifdef DEVEL diff --git a/src/hash.h b/src/hash.h index 7367c29f..3e3c1756 100644 --- a/src/hash.h +++ b/src/hash.h @@ -68,58 +68,54 @@ static __attribute__((always_inline, unused)) void sha_256_hash(const uint8_t* i } typedef struct { - uint16_t initialized_magic; - cx_sha512_t cx_ctx; + uint16_t initialized_magic; + cx_sha512_t cx_ctx; } sha_512_context_t; -static __attribute__((always_inline, unused)) void sha_512_init(sha_512_context_t* ctx) -{ - cx_sha512_init(&ctx->cx_ctx); - ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; +static __attribute__((always_inline, unused)) void sha_512_init(sha_512_context_t* ctx) { + cx_sha512_init(&ctx->cx_ctx); + ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; } static __attribute__((always_inline, unused)) void sha_512_append(sha_512_context_t* ctx, - const uint8_t* inBuffer, size_t inSize) -{ - ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); - TRACE_BUFFER(inBuffer, inSize); - cx_hash( - & ctx->cx_ctx.header, - 0, /* Do not output the hash, yet */ - inBuffer, - inSize, - NULL, 0 - ); + const uint8_t* inBuffer, + size_t inSize) { + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + TRACE_BUFFER(inBuffer, inSize); + cx_hash(&ctx->cx_ctx.header, + 0, /* Do not output the hash, yet */ + inBuffer, + inSize, + NULL, + 0); } static __attribute__((always_inline, unused)) void sha_512_finalize(sha_512_context_t* ctx, - uint8_t* outBuffer, size_t outSize) -{ - \ - ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); - ASSERT(outSize == SHA_512_SIZE); - cx_hash( - & ctx->cx_ctx.header, - CX_LAST, /* Output the hash */ - NULL, - 0, - outBuffer, - SHA_512_SIZE - ); + uint8_t* outBuffer, + size_t outSize) { + ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); + ASSERT(outSize == SHA_512_SIZE); + cx_hash(&ctx->cx_ctx.header, + CX_LAST, /* Output the hash */ + NULL, + 0, + outBuffer, + SHA_512_SIZE); } /* Convenience function to make all in one step */ -static __attribute__((always_inline, unused)) void sha_512_hash(const uint8_t* inBuffer, size_t inSize, - uint8_t* outBuffer, size_t outSize ) -{ - ASSERT(inSize < BUFFER_SIZE_PARANOIA); - ASSERT(outSize == SHA_512_SIZE); - sha_512_context_t ctx; - sha_512_init(&ctx); - /* Note: This could be done by single cx_hash call */ - /* But we don't really care */ - sha_512_append(&ctx, inBuffer, inSize); - sha_512_finalize(&ctx, outBuffer, outSize); +static __attribute__((always_inline, unused)) void sha_512_hash(const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize) { + ASSERT(inSize < BUFFER_SIZE_PARANOIA); + ASSERT(outSize == SHA_512_SIZE); + sha_512_context_t ctx; + sha_512_init(&ctx); + /* Note: This could be done by single cx_hash call */ + /* But we don't really care */ + sha_512_append(&ctx, inBuffer, inSize); + sha_512_finalize(&ctx, outBuffer, outSize); } #endif // H_FIO_APP_HASH diff --git a/src/hexUtils.c b/src/hexUtils.c index 813d7235..13715f3a 100644 --- a/src/hexUtils.c +++ b/src/hexUtils.c @@ -11,7 +11,7 @@ uint8_t hex_parseNibble(const char c) { uint8_t hex_parseNibblePair(const char* buffer) { uint8_t first = hex_parseNibble(buffer[0]); uint8_t second = hex_parseNibble(buffer[1]); - return (uint8_t)((first << 4) + second); + return (uint8_t) ((first << 4) + second); } size_t decode_hex(const char* inStr, uint8_t* outBuffer, size_t outMaxSize) { diff --git a/src/keyDerivation_test.c b/src/keyDerivation_test.c index caefbf81..353f332b 100644 --- a/src/keyDerivation_test.c +++ b/src/keyDerivation_test.c @@ -93,10 +93,12 @@ void testPublicKeyDerivation() { } TESTCASE((HD + 44, HD + 235, HD + 0, 0, 0), - "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab") + "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e2668" + "50ff980ad349ab8b027c93bf4aead1984168ad43e30ab") TESTCASE((HD + 44, HD + 235, HD + 0, 0, 2000), - "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"); + "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1" + "bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"); #undef TESTCASE } diff --git a/src/main.c b/src/main.c index 61ad70c4..a3dd45ae 100644 --- a/src/main.c +++ b/src/main.c @@ -91,7 +91,7 @@ static void fio_main(void) { rx = tx; tx = 0; // ensure no race in CATCH_OTHER if io_exchange throws an error ASSERT((unsigned int) rx < sizeof(G_io_apdu_buffer)); - rx = (unsigned int) io_exchange((uint8_t)(CHANNEL_APDU | flags), (uint16_t) rx); + rx = (unsigned int) io_exchange((uint8_t) (CHANNEL_APDU | flags), (uint16_t) rx); flags = 0; // We should be awaiting APDU diff --git a/src/textUtils.c b/src/textUtils.c index b00ba70d..3a4c2f86 100644 --- a/src/textUtils.c +++ b/src/textUtils.c @@ -37,7 +37,7 @@ size_t str_formatFIOAmount(uint64_t amount, char* out, size_t outSize) { // Size without terminating character STATIC_ASSERT(sizeof(ptr - scratchBuffer) == sizeof(size_t), "bad size_t size"); - size_t rawSize = (size_t)(ptr - scratchBuffer); + size_t rawSize = (size_t) (ptr - scratchBuffer); const char* suffix = " FIO"; const size_t suffixLength = strlen(suffix); @@ -76,7 +76,7 @@ size_t str_formatUint64(uint64_t number, char* out, size_t outSize) { // Size without terminating character STATIC_ASSERT(sizeof(ptr - scratchBuffer) == sizeof(size_t), "bad size_t size"); - size_t rawSize = (size_t)(ptr - scratchBuffer); + size_t rawSize = (size_t) (ptr - scratchBuffer); if (rawSize + 1 > outSize) { THROW(ERR_DATA_TOO_LARGE); diff --git a/src/utils.h b/src/utils.h index 83cb37aa..12f1428d 100644 --- a/src/utils.h +++ b/src/utils.h @@ -5,9 +5,9 @@ // Does not compile if x is pointer of some kind // See http://zubplot.blogspot.com/2015/01/gcc-is-wonderful-better-arraysize-macro.html -#define ARRAY_NOT_A_PTR(x) \ - (sizeof(__typeof__( \ - int[1 - 2 * !!__builtin_types_compatible_p(__typeof__(x), __typeof__(&x[0]))])) * \ +#define ARRAY_NOT_A_PTR(x) \ + (sizeof(__typeof__(int[1 - 2 * !!__builtin_types_compatible_p(__typeof__(x), \ + __typeof__(&x[0]))])) * \ 0) // Safe array length, does not compile if you accidentally supply a pointer From 7fc2d3df4108c79b10f79a23a85d97ec3a9cc4d6 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 20 Jun 2022 09:02:31 +0200 Subject: [PATCH 10/83] Introduce NO_PULL option (for build and speculos) --- MakefileContainer.mk | 8 +++++++- MakefileSpeculos.mk | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/MakefileContainer.mk b/MakefileContainer.mk index d768d720..21da0daf 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -31,9 +31,15 @@ INTERACTIVE_SETTING:= TTY_SETTING:= endif +ifdef NO_PULL +DOCKER_PULL_COMMAND = +else +DOCKER_PULL_COMMAND = docker pull ghcr.io/ledgerhq/ledger-app-builder/$(APP_BUILDER_IMAGE) +endif + #We build the container from source to avoid this issue https://github.community/t/docker-pull-from-public-github-package-registry-fail-with-no-basic-auth-credentials-error/16358 define run_docker - docker pull ghcr.io/ledgerhq/ledger-app-builder/$(APP_BUILDER_IMAGE) + $(DOCKER_PULL_COMMAND) docker image tag ghcr.io/ledgerhq/ledger-app-builder/$(APP_BUILDER_IMAGE) ledger-app-builder @echo "docker host: id -u: `id -u`" @echo "docker host: whoami: `whoami`" diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk index e690856c..f512ca99 100644 --- a/MakefileSpeculos.mk +++ b/MakefileSpeculos.mk @@ -21,8 +21,14 @@ define run_announce @perl -e 'use Time::HiRes; use POSIX; $$ts = sprintf qq[%f], Time::HiRes::time(); ($$f) = $$ts =~ m~(\....)~; printf qq[%s%s %s make: %s\n], POSIX::strftime("%H:%M:%S", gmtime), $$f, q[-] x 126, $$ARGV[0];' "$(1)" endef +ifdef NO_PULL +DOCKER_SPECULOS_PULL_COMMAND = +else +DOCKER_SPECULOS_PULL_COMMAND = docker pull ghcr.io/ledgerhq/$(SPECULOS_IMAGE) +endif + define start_speculos_container - docker pull ghcr.io/ledgerhq/$(SPECULOS_IMAGE) + $(DOCKER_SPECULOS_PULL_COMMAND) docker image tag ghcr.io/ledgerhq/$(SPECULOS_IMAGE) speculos docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(3):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) --sdk $(SPECULOS_SDK) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) /speculos/app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & @perl -e 'use Time::HiRes; $$t1=Time::HiRes::time(); while(1){ $$o=`cat $(CURDIR)/speculos-port-$(1).log`; if($$o =~ m~Running on .*\:$(1)~s){ printf qq[# detected -- via log -- speculos listening after %f seconds; spy on emulated device via http://localhost:$(1)/\n], Time::HiRes::time() - $$t1; exit; } Time::HiRes::sleep(0.01); };' From 8efc04121de59190a3512bd757ca73beb4c8175b Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 20 Jun 2022 09:03:46 +0200 Subject: [PATCH 11/83] Add sign tx commands integrity checking tools --- src/runTests.c | 6 +- src/signTransactionIntegrity.c | 58 +++++++++++++++++++ src/signTransactionIntegrity.h | 20 +++++++ src/signTransactionIntegrity_test.c | 87 +++++++++++++++++++++++++++++ 4 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 src/signTransactionIntegrity.c create mode 100644 src/signTransactionIntegrity.h create mode 100644 src/signTransactionIntegrity_test.c diff --git a/src/runTests.c b/src/runTests.c index 7f3a9b36..08477ee8 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -11,6 +11,7 @@ #include "uiHelpers.h" #include "uiScreens.h" #include "diffieHellman.h" +#include "signTransactionIntegrity.h" void handleRunTests(uint8_t p1 MARK_UNUSED, uint8_t p2 MARK_UNUSED, @@ -21,12 +22,13 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, // as it interferes with tests verifying assertions BEGIN_ASSERT_NOEXCEPT { PRINTF("Running tests\n"); - run_hex_test(); +/* run_hex_test(); run_endian_test(); run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); - run_diffieHellman_test(); + run_diffieHellman_test();*/ + run_integrityCheck_test(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c new file mode 100644 index 00000000..fac5667c --- /dev/null +++ b/src/signTransactionIntegrity.c @@ -0,0 +1,58 @@ +#include "signTransactionIntegrity.h" +#include "hash.h" + +static const uint8_t allowedHashes[][SHA_256_SIZE] = {}; + +enum { + TX_INTEGRITY_HASH_INITIALIZED_MAGIC = 12345, +}; + +typedef struct { + uint16_t initialized_magic; + uint8_t integrityHash[SHA_256_SIZE]; +} tx_integrity_hash_t; + +static tx_integrity_hash_t integrityHash; + +void integrityCheckInit() { + explicit_bzero(&integrityHash, SIZEOF(integrityHash)); + integrityHash.initialized_magic = TX_INTEGRITY_HASH_INITIALIZED_MAGIC; + + TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); +} + +void integrityCheckProcessInstruction(uint8_t p1, uint8_t p2, const uint8_t *constData, uint8_t constDataLength) { + ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); + sha_256_context_t ctx; + sha_256_init(&ctx); + sha_256_append(&ctx, integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + sha_256_append(&ctx, &p1, SIZEOF(p1)); + sha_256_append(&ctx, &p2, SIZEOF(p2)); + sha_256_append(&ctx, &constDataLength, SIZEOF(constDataLength)); + sha_256_append(&ctx, constData, constDataLength); + sha_256_finalize(&ctx, integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + + TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); +} + +bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength) { + ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); + for(uint16_t i=0; i +#include + +void integrityCheckInit(); + +void integrityCheckProcessInstruction(uint8_t p1, uint8_t p2, const uint8_t *constData, uint8_t constDataLength); + +bool integrityCheckFinalize(); + +#ifdef DEVEL +#include "hash.h" +bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength); + +void run_integrityCheck_test(); +#endif //DEVEL + +#endif // H_FIO_APP_SIGN_TRANSACTION_INTEGRITY diff --git a/src/signTransactionIntegrity_test.c b/src/signTransactionIntegrity_test.c new file mode 100644 index 00000000..7d3bbcb2 --- /dev/null +++ b/src/signTransactionIntegrity_test.c @@ -0,0 +1,87 @@ +#ifdef DEVEL + +#include "signTransactionIntegrity.h" +#include "hash.h" +#include "hexUtils.h" + + +static const char* allowedHashesHex[] = { + "3732fb4f90aff701bbadb8a95b95d1e0ed2a60cf445a1d849fa79340c8d340a9", +}; +static uint8_t allowedHashes[ARRAY_LEN(allowedHashesHex)][SHA_256_SIZE]; + + +static void run1() { + integrityCheckInit(); + const uint8_t data1[] = {3, 4}; + integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + const uint8_t data2[] = {}; + integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); + _integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes)); +} + +//modified p1 +static void run2() { + integrityCheckInit(); + const uint8_t data1[] = {3, 4}; + integrityCheckProcessInstruction(2, 2, data1, SIZEOF(data1)); + const uint8_t data2[] = {}; + integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); +} + +//modified p2 +static void run3() { + integrityCheckInit(); + const uint8_t data1[] = {3, 4}; + integrityCheckProcessInstruction(1, 3, data1, SIZEOF(data1)); + const uint8_t data2[] = {}; + integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); +} + +//modified data +static void run4() { + integrityCheckInit(); + const uint8_t data1[] = {3,}; + integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + const uint8_t data2[] = {}; + integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); +} + +//swapped instructions +static void run5() { + integrityCheckInit(); + const uint8_t data1[] = {3, 4}; + const uint8_t data2[] = {}; + integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); + integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); +} + +//Less instruction and second, correc use +static void run6() { + integrityCheckInit(); + const uint8_t data1[] = {3, 4}; + integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + run1(); +} + +void run_integrityCheck_test() { + //decode hex + for(size_t i=0; i Date: Mon, 20 Jun 2022 09:25:20 +0200 Subject: [PATCH 12/83] Update github workflows linter to 12 --- .github/workflows/lint-workflow.yml | 4 ++-- src/runTests.c | 4 ++-- src/signTransactionIntegrity.c | 17 +++++++++-------- src/signTransactionIntegrity.h | 10 +++++++--- src/signTransactionIntegrity_test.c | 26 +++++++++++++------------- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/.github/workflows/lint-workflow.yml b/.github/workflows/lint-workflow.yml index 56e2d5e0..e5a61570 100644 --- a/.github/workflows/lint-workflow.yml +++ b/.github/workflows/lint-workflow.yml @@ -20,8 +20,8 @@ jobs: uses: actions/checkout@v2 - name: Lint - uses: DoozyX/clang-format-lint-action@v0.11 + uses: DoozyX/clang-format-lint-action@v0.12 with: source: './src' extensions: 'h,c' - clangFormatVersion: 11 + clangFormatVersion: 12 diff --git a/src/runTests.c b/src/runTests.c index 08477ee8..d3728ac1 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -22,12 +22,12 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, // as it interferes with tests verifying assertions BEGIN_ASSERT_NOEXCEPT { PRINTF("Running tests\n"); -/* run_hex_test(); + run_hex_test(); run_endian_test(); run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); - run_diffieHellman_test();*/ + run_diffieHellman_test(); run_integrityCheck_test(); PRINTF("All tests done\n"); } diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index fac5667c..1d052fc0 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -21,7 +21,10 @@ void integrityCheckInit() { TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); } -void integrityCheckProcessInstruction(uint8_t p1, uint8_t p2, const uint8_t *constData, uint8_t constDataLength) { +void integrityCheckProcessInstruction(uint8_t p1, + uint8_t p2, + const uint8_t *constData, + uint8_t constDataLength) { ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); sha_256_context_t ctx; sha_256_init(&ctx); @@ -35,10 +38,12 @@ void integrityCheckProcessInstruction(uint8_t p1, uint8_t p2, const uint8_t *con TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); } -bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength) { +bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], + uint16_t allowedHashesLength) { ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); - for(uint16_t i=0; i Date: Mon, 20 Jun 2022 14:11:33 +0200 Subject: [PATCH 13/83] Refactor tx integrity functions They behave similar to hash functions --- src/signTransactionIntegrity.c | 40 ++++++++++----------- src/signTransactionIntegrity.h | 16 ++++++--- src/signTransactionIntegrity_test.c | 56 +++++++++++++++-------------- 3 files changed, 60 insertions(+), 52 deletions(-) diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 1d052fc0..6987a52b 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -1,4 +1,5 @@ #include "signTransactionIntegrity.h" +#include "state.h" #include "hash.h" static const uint8_t allowedHashes[][SHA_256_SIZE] = {}; @@ -7,44 +8,39 @@ enum { TX_INTEGRITY_HASH_INITIALIZED_MAGIC = 12345, }; -typedef struct { - uint16_t initialized_magic; - uint8_t integrityHash[SHA_256_SIZE]; -} tx_integrity_hash_t; +void integrityCheckInit(tx_integrity_t *integrity) { + explicit_bzero(integrity, SIZEOF(*integrity)); + integrity->initialized_magic = TX_INTEGRITY_HASH_INITIALIZED_MAGIC; -static tx_integrity_hash_t integrityHash; - -void integrityCheckInit() { - explicit_bzero(&integrityHash, SIZEOF(integrityHash)); - integrityHash.initialized_magic = TX_INTEGRITY_HASH_INITIALIZED_MAGIC; - - TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -void integrityCheckProcessInstruction(uint8_t p1, +void integrityCheckProcessInstruction(tx_integrity_t *integrity, + uint8_t p1, uint8_t p2, const uint8_t *constData, uint8_t constDataLength) { - ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); + ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); sha_256_context_t ctx; sha_256_init(&ctx); - sha_256_append(&ctx, integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + sha_256_append(&ctx, integrity->integrityHash, SIZEOF(integrity->integrityHash)); sha_256_append(&ctx, &p1, SIZEOF(p1)); sha_256_append(&ctx, &p2, SIZEOF(p2)); sha_256_append(&ctx, &constDataLength, SIZEOF(constDataLength)); sha_256_append(&ctx, constData, constDataLength); - sha_256_finalize(&ctx, integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + sha_256_finalize(&ctx, integrity->integrityHash, SIZEOF(integrity->integrityHash)); - TRACE_BUFFER(&integrityHash.integrityHash, SIZEOF(integrityHash.integrityHash)); + TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], +bool _integrityCheckFinalize(tx_integrity_t *integrity, + const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength) { - ASSERT(integrityHash.initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); + ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); for (uint16_t i = 0; i < allowedHashesLength; i++) { - STATIC_ASSERT(SIZEOF(allowedHashes[i]) == SIZEOF(integrityHash.integrityHash), + STATIC_ASSERT(SIZEOF(allowedHashes[i]) == SIZEOF(integrity->integrityHash), "Incompatible hashes."); - if (memcmp(integrityHash.integrityHash, allowedHashes[i], SIZEOF(allowedHashes[i])) == 0) { + if (memcmp(integrity->integrityHash, allowedHashes[i], SIZEOF(allowedHashes[i])) == 0) { TRACE("Integrity check passed"); return true; } @@ -54,6 +50,6 @@ bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], return false; } -bool integrityCheckFinalize() { - return _integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes)); +bool integrityCheckFinalize(tx_integrity_t *integrity) { + return _integrityCheckFinalize(integrity, allowedHashes, ARRAY_LEN(allowedHashes)); } diff --git a/src/signTransactionIntegrity.h b/src/signTransactionIntegrity.h index 1da58450..1a8d7902 100644 --- a/src/signTransactionIntegrity.h +++ b/src/signTransactionIntegrity.h @@ -3,19 +3,27 @@ #include #include +#include "hash.h" + +typedef struct { + uint16_t initialized_magic; + uint8_t integrityHash[SHA_256_SIZE]; +} tx_integrity_t; -void integrityCheckInit(); +void integrityCheckInit(tx_integrity_t *integrity); -void integrityCheckProcessInstruction(uint8_t p1, +void integrityCheckProcessInstruction(tx_integrity_t *integrity, + uint8_t p1, uint8_t p2, const uint8_t *constData, uint8_t constDataLength); -bool integrityCheckFinalize(); +bool integrityCheckFinalize(tx_integrity_t *integrity); #ifdef DEVEL #include "hash.h" -bool _integrityCheckFinalize(const uint8_t (*allowedHashes)[SHA_256_SIZE], +bool _integrityCheckFinalize(tx_integrity_t *integrity, + const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength); void run_integrityCheck_test(); diff --git a/src/signTransactionIntegrity_test.c b/src/signTransactionIntegrity_test.c index f06a9479..1e56ec58 100644 --- a/src/signTransactionIntegrity_test.c +++ b/src/signTransactionIntegrity_test.c @@ -10,62 +10,66 @@ static const char* allowedHashesHex[] = { static uint8_t allowedHashes[ARRAY_LEN(allowedHashesHex)][SHA_256_SIZE]; static void run1() { - integrityCheckInit(); + tx_integrity_t integrity; + integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; - integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; - integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); - _integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes)); + integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); + _integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes)); } // modified p1 static void run2() { - integrityCheckInit(); + tx_integrity_t integrity; + integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; - integrityCheckProcessInstruction(2, 2, data1, SIZEOF(data1)); + integrityCheckProcessInstruction(&integrity, 2, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; - integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified p2 static void run3() { - integrityCheckInit(); + tx_integrity_t integrity; + integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; - integrityCheckProcessInstruction(1, 3, data1, SIZEOF(data1)); + integrityCheckProcessInstruction(&integrity, 1, 3, data1, SIZEOF(data1)); const uint8_t data2[] = {}; - integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified data static void run4() { - integrityCheckInit(); - const uint8_t data1[] = { - 3, - }; - integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); + tx_integrity_t integrity; + integrityCheckInit(&integrity); + const uint8_t data1[] = {3}; + integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; - integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); + ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // swapped instructions static void run5() { - integrityCheckInit(); + tx_integrity_t integrity; + integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; const uint8_t data2[] = {}; - integrityCheckProcessInstruction(5, 6, data2, SIZEOF(data2)); - integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); - ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); + integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); + ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // Less instruction and second, correc use static void run6() { - integrityCheckInit(); + tx_integrity_t integrity; + integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; - integrityCheckProcessInstruction(1, 2, data1, SIZEOF(data1)); - ASSERT(!_integrityCheckFinalize(allowedHashes, ARRAY_LEN(allowedHashes))); + integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); + ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); run1(); } From dbab9888c65aeec5ef9f3aabd830fc27990f2483 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 21 Jun 2022 18:17:58 +0200 Subject: [PATCH 14/83] INIT, APPEND_CONST_DATA, SHOW_MESSAGE, SHOW_MESAGE, FINISH calls --- MakefileTest.mk | 2 + doc/ins_sign_tx_commands.md | 60 ++ src/fio.c | 2 +- src/fio.h | 2 +- src/securityPolicy.c | 23 - src/securityPolicy.h | 6 +- src/signTransaction.c | 858 ++++++------------ src/signTransaction.h | 36 +- src/signTransactionIntegrity.c | 11 +- src/signTransactionParse.c | 96 ++ src/signTransactionParse.h | 29 + src/uiHelpers.c | 3 +- test-integration/signTransactionBasic.js | 1 - .../signTransactionCommandsBasic.js | 233 +++++ .../signTransactionCommandsShowData.js | 285 ++++++ .../signTransactionCommandsBasic/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionCommandsBasic/nanos.03.png | Bin 0 -> 376 bytes .../signTransactionCommandsBasic/nanos.04.png | Bin 0 -> 424 bytes .../signTransactionCommandsBasic/nanos.05.png | Bin 0 -> 356 bytes .../signTransactionCommandsBasic/nanos.06.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.07.png | Bin 0 -> 314 bytes .../signTransactionCommandsBasic/nanos.08.png | Bin 0 -> 376 bytes .../signTransactionCommandsBasic/nanos.09.png | Bin 0 -> 424 bytes .../signTransactionCommandsBasic/nanos.10.png | Bin 0 -> 356 bytes .../signTransactionCommandsBasic/nanos.11.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.12.png | Bin 0 -> 322 bytes .../signTransactionCommandsBasic/nanos.13.png | Bin 0 -> 383 bytes .../signTransactionCommandsBasic/nanos.14.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.15.png | Bin 0 -> 314 bytes .../signTransactionCommandsBasic/nanos.16.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.17.png | Bin 0 -> 322 bytes .../signTransactionCommandsBasic/nanos.18.png | Bin 0 -> 426 bytes .../signTransactionCommandsBasic/nanos.19.png | Bin 0 -> 314 bytes .../signTransactionCommandsBasic/nanos.20.png | Bin 0 -> 376 bytes .../signTransactionCommandsBasic/nanos.21.png | Bin 0 -> 426 bytes .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 417 bytes .../nanos.04.png | Bin 0 -> 372 bytes .../nanos.05.png | Bin 0 -> 367 bytes .../nanos.06.png | Bin 0 -> 309 bytes .../nanos.07.png | Bin 0 -> 266 bytes .../nanos.08.png | Bin 0 -> 424 bytes .../nanos.09.png | Bin 0 -> 356 bytes .../nanos.10.png | Bin 0 -> 426 bytes .../nanos.11.png | Bin 0 -> 322 bytes .../nanos.12.png | Bin 0 -> 426 bytes .../nanos.13.png | Bin 0 -> 322 bytes .../nanos.14.png | Bin 0 -> 426 bytes .../nanos.15.png | Bin 0 -> 322 bytes .../nanos.16.png | Bin 0 -> 426 bytes .../nanos.17.png | Bin 0 -> 322 bytes .../nanos.18.png | Bin 0 -> 426 bytes .../nanos.19.png | Bin 0 -> 322 bytes .../nanos.20.png | Bin 0 -> 426 bytes .../nanos.21.png | Bin 0 -> 322 bytes .../nanos.22.png | Bin 0 -> 426 bytes .../nanos.23.png | Bin 0 -> 322 bytes .../nanos.24.png | Bin 0 -> 426 bytes .../nanos.25.png | Bin 0 -> 322 bytes .../nanos.26.png | Bin 0 -> 426 bytes .../nanos.27.png | Bin 0 -> 322 bytes .../nanos.28.png | Bin 0 -> 426 bytes test-integration/speculos-common.js | 11 +- 65 files changed, 1006 insertions(+), 652 deletions(-) create mode 100644 doc/ins_sign_tx_commands.md create mode 100644 src/signTransactionParse.c create mode 100644 src/signTransactionParse.h create mode 100644 test-integration/signTransactionCommandsBasic.js create mode 100644 test-integration/signTransactionCommandsShowData.js create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.28.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 3c967cf1..1bdb302e 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -41,6 +41,8 @@ speculos_port_5001_test_internal: speculos_port_5001_unit_test_internal: $(call run_announce,$@) $(call run_nodejs_test,5001,40001,runUnitTests.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsBasic.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsShowData.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md new file mode 100644 index 00000000..ab76b3e3 --- /dev/null +++ b/doc/ins_sign_tx_commands.md @@ -0,0 +1,60 @@ +STORED1 4b, STORED2 12b, stored3 64b + + + +General APDU structure: constDataLen, varDataLen, constData, varData +=================== +INIT +---------- +---------- +chainId +=================== +APPEND_CONST_DATA +---------- +data_to_append +---------- +=================== +SHOW_MESSAGE +---------- +Key Len +Key +Value Len +Value +---------- +=================== +SHOW_DATA +---------- +ValueFormat: NAME, STRING, UINT64 (1b) +ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) +ValueValidationArg 1 (1b) +ValueValidationArg 2 (1b) +Policy (1b) +Key Len: +Key +---------- +Value +=================== +START_COUNTED_SECTION +---------- +ValueValidation: NONE, LENGTH(min, max) +format: UINT8, VARUINT32 +---------- +expected length +==================== +END_COUNTED_SECTION +---------- +---------- +==================== +STORE_VALUE +---------- +STORED_1/STORED_2/STORED_3 +ValueValidation: NONE, LENGTH(min, max) +---------- +Value +==================== +FINISH +---------- +---------- +Derivation path +==================== + diff --git a/src/fio.c b/src/fio.c index 69e8de4a..6d960320 100644 --- a/src/fio.c +++ b/src/fio.c @@ -79,7 +79,7 @@ void name_to_string(name_t value, char *out, size_t size) { } // Wrapper -void uint8array_name_to_string(uint8_t *value, size_t valueSize, char *out, size_t outSize) { +void uint8array_name_to_string(const uint8_t *value, size_t valueSize, char *out, size_t outSize) { ASSERT(valueSize == NAME_VAR_LENGTH); name_t tmp; ASSERT(sizeof(tmp) >= valueSize); diff --git a/src/fio.h b/src/fio.h index c9362cad..09d09302 100644 --- a/src/fio.h +++ b/src/fio.h @@ -27,7 +27,7 @@ action_type_t getActionTypeByContractAccountName(network_type_t network, typedef uint64_t name_t; #define NAME_STRING_MAX_LENGTH 14 void name_to_string(name_t value, char *out, size_t size); -void uint8array_name_to_string(uint8_t *value, size_t valueSize, char *out, size_t outSize); +void uint8array_name_to_string(const uint8_t *value, size_t valueSize, char *out, size_t outSize); #define MAX_WIF_PUBKEY_LENGTH 55 #define MAX_TPID_LENGTH 21 diff --git a/src/securityPolicy.c b/src/securityPolicy.c index 5c96d24b..809444be 100644 --- a/src/securityPolicy.c +++ b/src/securityPolicy.c @@ -39,29 +39,6 @@ security_policy_t policyForGetPublicKey(const bip44_path_t* pathSpec, get_key_p1 ALLOW(); } -security_policy_t policyForSignTxInit(network_type_t network) { - DENY_IF(network == NETWORK_UNKNOWN); - SHOW(); -} - -security_policy_t policyForSignTxHeader() { - SHOW(); -} - -security_policy_t policyForSignTxActionHeader(action_type_t action) { - DENY_IF(action == ACTION_TYPE_UNKNOWN); - SHOW(); -} - -security_policy_t policyForSignTxActionAuthorization() { - SHOW(); -} - -security_policy_t policyForSignTxActionData(char* validation_actor, char* data_actor) { - DENY_IF(strncmp(validation_actor, data_actor, NAME_STRING_MAX_LENGTH)) - SHOW(); -} - security_policy_t policyForSignTxWitness(const bip44_path_t* pathSpec) { DENY_UNLESS(bip44_hasValidFIOPrefix(pathSpec)); DENY_UNLESS(bip44_containsAddress(pathSpec)); diff --git a/src/securityPolicy.h b/src/securityPolicy.h index 23c83d0d..a3750fbe 100644 --- a/src/securityPolicy.h +++ b/src/securityPolicy.h @@ -3,6 +3,7 @@ #include "bip44.h" #include "getPublicKey.h" +#include "signTransactionParse.h" typedef enum { POLICY_DENY = 1, @@ -14,11 +15,6 @@ typedef enum { security_policy_t policyForGetPublicKey(const bip44_path_t* pathSpec, get_key_p1_t show_or_not); -security_policy_t policyForSignTxInit(network_type_t network); -security_policy_t policyForSignTxHeader(); -security_policy_t policyForSignTxActionHeader(action_type_t action); -security_policy_t policyForSignTxActionAuthorization(); -security_policy_t policyForSignTxActionData(char* validation_actor, char* data_actor); security_policy_t policyForSignTxWitness(const bip44_path_t* pathSpec); security_policy_t policyDerivePrivateKey(const bip44_path_t* pathSpec); diff --git a/src/signTransaction.c b/src/signTransaction.c index 00c6defb..df23a2b4 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -7,68 +7,17 @@ #include "endian.h" #include "eos_utils.h" #include "securityPolicy.h" +#include "signTransactionIntegrity.h" +#include "signTransactionParse.h" #include "uiHelpers.h" #include "uiScreens.h" #include "textUtils.h" static ins_sign_transaction_context_t* ctx = &(instructionState.signTransactionContext); -typedef enum { - SIGN_STAGE_NONE = 0, - SIGN_STAGE_INIT = 23, - SIGN_STAGE_HEADER = 24, - SIGN_STAGE_ACTION_HEADER = 25, - SIGN_STAGE_ACTION_AUTHORIZATION = 26, - SIGN_STAGE_ACTION_DATA = 27, - SIGN_STAGE_WITNESS = 28, -} sign_tx_stage_t; - -// this is supposed to be called at the beginning of each APDU handler -static inline void CHECK_STAGE(sign_tx_stage_t expected) { - VALIDATE(ctx->stage == expected, ERR_INVALID_STATE); -} - -// advances the stage of the main state machine -static inline void advanceStage() { - TRACE("Advancing sign tx stage from: %d", ctx->stage); - - switch (ctx->stage) { - case SIGN_STAGE_INIT: - ctx->stage = SIGN_STAGE_HEADER; - break; - - case SIGN_STAGE_HEADER: - ctx->stage = SIGN_STAGE_ACTION_HEADER; - break; - - case SIGN_STAGE_ACTION_HEADER: - ctx->stage = SIGN_STAGE_ACTION_AUTHORIZATION; - break; - - case SIGN_STAGE_ACTION_AUTHORIZATION: - ctx->stage = SIGN_STAGE_ACTION_DATA; - break; - - case SIGN_STAGE_ACTION_DATA: - ctx->stage = SIGN_STAGE_WITNESS; - break; - - case SIGN_STAGE_WITNESS: - ctx->stage = SIGN_STAGE_NONE; - ui_idle(); // we are done with this tx - break; - - case SIGN_STAGE_NONE: - // advanceStage() not supposed to be called after tx processing is finished - ASSERT(false); - default: - ASSERT(false); - } +// ============================== MISC ============================== - TRACE("Advancing sign tx stage to: %d", ctx->stage); -} - -void respondSuccessEmptyMsg() { +static void respondSuccessEmptyMsg() { TRACE(); io_send_buf(SUCCESS, NULL, 0); ui_displayBusy(); // needs to happen after I/O @@ -79,539 +28,226 @@ uint8_t const SECP256K1_N[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41}; -// ============================== INIT ============================== +// =====SIMPLE UI STEP SHOWING JUST ONE OR NO SCREEN ================= + enum { - HANDLE_INIT_STEP_DISPLAY_DETAILS = 100, - HANDLE_INIT_STEP_RESPOND, - HANDLE_INIT_STEP_INVALID, + HANDLE_SIMPLE_STEP_DISPLAY_DETAILS = 100, + HANDLE_SIMPLE_STEP_RESPOND, + HANDLE_SIMPLE_STEP_INVALID, }; -static void signTx_handleInit_ui_runStep() { +static void signTx_ui_runStep_simple() { TRACE("UI step %d", ctx->ui_step); TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleInit_ui_runStep; + ui_callback_fn_t* this_fn = signTx_ui_runStep_simple; UI_STEP_BEGIN(ctx->ui_step, this_fn); - UI_STEP(HANDLE_INIT_STEP_DISPLAY_DETAILS) { - switch (ctx->network) { -#define CASE(NETWORK, CHAIN_STRING) \ - case NETWORK: { \ - ui_displayPaginatedText("Chain", CHAIN_STRING, this_fn); \ - break; \ - } - CASE(NETWORK_MAINNET, "Mainnet"); - CASE(NETWORK_TESTNET, "Testnet"); -#undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); - } + UI_STEP(HANDLE_SIMPLE_STEP_DISPLAY_DETAILS) { + ui_displayPaginatedText(ctx->key, ctx->value, this_fn); } - UI_STEP(HANDLE_INIT_STEP_RESPOND) { + UI_STEP(HANDLE_SIMPLE_STEP_RESPOND) { respondSuccessEmptyMsg(); - advanceStage(); } - UI_STEP_END(HANDLE_INIT_STEP_INVALID); + UI_STEP_END(HANDLE_SIMPLE_STEP_INVALID); } -__noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { - TRACE_STACK_USAGE(); - { - // sanity checks - CHECK_STAGE(SIGN_STAGE_INIT); - - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); - } - - { - // parse data - TRACE_BUFFER(wireDataBuffer, wireDataSize); - - struct { - uint8_t chainId[32]; - }* wireData = (void*) wireDataBuffer; - - VALIDATE(SIZEOF(*wireData) == wireDataSize, ERR_INVALID_DATA); - - TRACE("SHA_256_init"); - sha_256_init(&ctx->hashContext); - sha_256_append(&ctx->hashContext, wireData->chainId, SIZEOF(wireData->chainId)); - - ctx->network = getNetworkByChainId(wireData->chainId, SIZEOF(wireData->chainId)); - TRACE("Network %d:", ctx->network); - } - - security_policy_t policy = policyForSignTxInit(ctx->network); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_INIT_STEP_DISPLAY_DETAILS); -#undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); - } - } - - signTx_handleInit_ui_runStep(); -} - -// ============================== HEADER ============================== -enum { - HANDLE_HEADER_STEP_EXPIRATION = 200, - HANDLE_HEADER_STEP_REF_BLOCK_NUM, - HANDLE_HEADER_STEP_REF_BLOCK_PREFIX, - HANDLE_HEADER_STEP_RESPOND, - HANDLE_HEADER_STEP_INVALID, -}; - -static void signTx_handleHeader_ui_runStep() { - TRACE("UI step %d", ctx->ui_step); - TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleHeader_ui_runStep; - - UI_STEP_BEGIN(ctx->ui_step, this_fn); - - /* UI_STEP(HANDLE_HEADER_STEP_EXPIRATION) { - ui_displayTimeScreen( - "Expiration", - ctx->expiration, - this_fn - ); - } - - UI_STEP(HANDLE_HEADER_STEP_REF_BLOCK_NUM) { - ui_displayUint64Screen( - "Ref Block Num", - ctx->refBlockNum, - this_fn - ); - } - - UI_STEP(HANDLE_HEADER_STEP_REF_BLOCK_PREFIX) { - ui_displayUint64Screen( - "Ref Block Prefix", - ctx->refBlockPrefix, - this_fn - ); - }*/ - - UI_STEP(HANDLE_HEADER_STEP_RESPOND) { - respondSuccessEmptyMsg(); - advanceStage(); - } - - UI_STEP_END(HANDLE_HEADER_STEP_INVALID); -} +// ============================== INIT ============================== -__noinline_due_to_stack__ void signTx_handleHeaderAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { +__noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t chainId[CHAIN_ID_LENGTH]; + }* varData = (void*) varDataBuffer; { - // sanity checks - CHECK_STAGE(SIGN_STAGE_HEADER); - - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); + VALIDATE(constSize == 0, ERR_INVALID_DATA); + VALIDATE(varSize == SIZEOF(*varData), ERR_INVALID_DATA); } + // Parse data - prepare to display { - // parse data - TRACE_BUFFER(wireDataBuffer, wireDataSize); - - struct { - uint8_t expiration[4]; - uint8_t refBlockNum[2]; - uint8_t refBlockPrefix[4]; - }* wireData = (void*) wireDataBuffer; - - VALIDATE(SIZEOF(*wireData) == wireDataSize, ERR_INVALID_DATA); - - ctx->expiration = u4be_read(wireData->expiration); - sha_256_append(&ctx->hashContext, (uint8_t*) &ctx->expiration, sizeof(ctx->expiration)); + network_type_t network = getNetworkByChainId(varData->chainId, SIZEOF(varData->chainId)); + TRACE("Chain: %d", (int) network); + VALIDATE(network == NETWORK_MAINNET || network == NETWORK_TESTNET, ERR_INVALID_DATA); - ctx->refBlockNum = u2be_read(wireData->refBlockNum); - sha_256_append(&ctx->hashContext, - (uint8_t*) &ctx->refBlockNum, - SIZEOF(wireData->refBlockNum)); - - ctx->refBlockPrefix = u4be_read(wireData->refBlockPrefix); - sha_256_append(&ctx->hashContext, (uint8_t*) &ctx->refBlockPrefix, sizeof(ctx->expiration)); - - uint8_t buf[4]; // max_net_usage_words, max_cpu_usage_ms, delay_sec, context_free_actions - explicit_bzero(buf, sizeof(buf)); // SIZEOF does no work for 4 - sha_256_append(&ctx->hashContext, buf, sizeof(buf)); + snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Chain"); + switch (network) { +#define CASE(NETWORK, CHAIN_STRING) \ + case NETWORK: { \ + snprintf(ctx->value, MAX_DISPLAY_KEY_LENGTH, CHAIN_STRING); \ + break; \ } - - security_policy_t policy = policyForSignTxHeader(); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_HEADER_STEP_RESPOND); -#undef CASE + CASE(NETWORK_MAINNET, "Mainnet"); + CASE(NETWORK_TESTNET, "Testnet"); default: THROW(ERR_NOT_IMPLEMENTED); - } - } - - signTx_handleHeader_ui_runStep(); -} - -// ============================== ACTION HEADER ============================== - -enum { - HANDLE_ACTION_HEADER_STEP_SHOW_TYPE = 300, - HANDLE_ACTION_HEADER_STEP_RESPOND, - HANDLE_ACTION_HEADER_STEP_INVALID, -}; - -static void signTx_handleActionHeader_ui_runStep() { - TRACE("UI step %d", ctx->ui_step); - TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleActionHeader_ui_runStep; - - UI_STEP_BEGIN(ctx->ui_step, this_fn); - - UI_STEP(HANDLE_ACTION_HEADER_STEP_SHOW_TYPE) { - switch (ctx->action_type) { -#define CASE(ACTION, STRING) \ - case ACTION: { \ - ui_displayPaginatedText("Action", STRING, this_fn); \ - break; \ - } - CASE(ACTION_TYPE_TRNSFIOPUBKY, "Transfer FIO tokens"); #undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); } } - UI_STEP(HANDLE_ACTION_HEADER_STEP_RESPOND) { - respondSuccessEmptyMsg(); - advanceStage(); - } + // Apend data to hash + { sha_256_append(&ctx->hashContext, varData->chainId, SIZEOF(varData->chainId)); } - UI_STEP_END(HANDLE_ACTION_HEADER_STEP_INVALID); + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; + signTx_ui_runStep_simple(); } -__noinline_due_to_stack__ void signTx_handleActionHeaderAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { +// ======================= APPEND CONST DATA =========================== + +__noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t data[MAX_APPEND_CONST_DATA_LEN]; + }* constData = (void*) constDataBuffer; { - // sanity checks - CHECK_STAGE(SIGN_STAGE_ACTION_HEADER); - - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); + VALIDATE(constSize < MAX_APPEND_CONST_DATA_LEN, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); } - { - // parse data - TRACE_BUFFER(wireDataBuffer, wireDataSize); - - struct { - uint8_t contractAccountName[CONTRACT_ACCOUNT_NAME_LENGTH]; - }* wireData = (void*) wireDataBuffer; - - VALIDATE(SIZEOF(*wireData) == wireDataSize, ERR_INVALID_DATA); - - uint8_t buf[1]; - buf[0] = 1; - sha_256_append(&ctx->hashContext, buf, SIZEOF(buf)); // one action - sha_256_append(&ctx->hashContext, (uint8_t*) wireData, SIZEOF(*wireData)); - - ctx->action_type = getActionTypeByContractAccountName(ctx->network, - wireData->contractAccountName, - CONTRACT_ACCOUNT_NAME_LENGTH); - TRACE("Action type %d:", ctx->action_type); - } + // Apend data to hash + { sha_256_append(&ctx->hashContext, constData->data, constSize); } - security_policy_t policy = policyForSignTxActionHeader(ctx->action_type); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_ACTION_HEADER_STEP_SHOW_TYPE); -#undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); - } - } - - signTx_handleActionHeader_ui_runStep(); + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; + signTx_ui_runStep_simple(); } -// ============================== ACTION AUTHORIZATION ============================== - -enum { - HANDLE_ACTION_AUTHORIZATION_STEP_SHOW_ACTOR = 400, - HANDLE_ACTION_AUTHORIZATION_STEP_SHOW_PERMISSION, - HANDLE_ACTION_AUTHORIZATION_STEP_RESPOND, - HANDLE_ACTION_AUTHORIZATION_STEP_INVALID, -}; - -static void signTx_handleActionAuthorization_ui_runStep() { - TRACE("UI step %d", ctx->ui_step); - TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleActionAuthorization_ui_runStep; - - UI_STEP_BEGIN(ctx->ui_step, this_fn); - - /* UI_STEP(HANDLE_ACTION_AUTHORIZATION_STEP_SHOW_ACTOR) { - ui_displayPaginatedText( - "Actor", - ctx->actionValidationActor, - this_fn - ); - } - - UI_STEP(HANDLE_ACTION_AUTHORIZATION_STEP_SHOW_PERMISSION) { - ui_displayPaginatedText( - "Permission", - ctx->actionValidationPermission, - this_fn - ); - }*/ - - UI_STEP(HANDLE_ACTION_AUTHORIZATION_STEP_RESPOND) { - respondSuccessEmptyMsg(); - advanceStage(); - } - - UI_STEP_END(HANDLE_ACTION_AUTHORIZATION_STEP_INVALID); -} +// ======================= SHOW MESSAGE =========================== -__noinline_due_to_stack__ void signTx_handleActionAuthorizationAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { +__noinline_due_to_stack__ void signTx_handleShowMessageAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t keyLen; + uint8_t key[MAX_DISPLAY_KEY_LENGTH]; + }* constData = (void*) constDataBuffer; { - // sanity checks - CHECK_STAGE(SIGN_STAGE_ACTION_AUTHORIZATION); - - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); - } - + VALIDATE(constSize >= 1, ERR_INVALID_DATA); + VALIDATE(constData->keyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize >= 2 + constData->keyLen, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); + str_validateTextBuffer(constData->key, constData->keyLen); + } + struct { + uint8_t valueLen; + uint8_t value[MAX_DISPLAY_VALUE_LENGTH]; + }* constData2 = (void*) constDataBuffer + 1 + constData->keyLen; { - // parse data - TRACE_BUFFER(wireDataBuffer, wireDataSize); - - struct { - uint8_t actor[NAME_VAR_LENGTH]; - uint8_t permission[NAME_VAR_LENGTH]; - }* wireData = (void*) wireDataBuffer; - - VALIDATE(SIZEOF(*wireData) == wireDataSize, ERR_INVALID_DATA); - - uint8_t buf[1]; - buf[0] = 1; - sha_256_append(&ctx->hashContext, buf, SIZEOF(buf)); // one authorization - sha_256_append(&ctx->hashContext, wireData->actor, SIZEOF(wireData->actor)); - sha_256_append(&ctx->hashContext, wireData->permission, SIZEOF(wireData->permission)); - - uint8array_name_to_string(wireData->actor, - NAME_VAR_LENGTH, - ctx->actionValidationActor, - NAME_STRING_MAX_LENGTH); - uint8array_name_to_string(wireData->permission, - NAME_VAR_LENGTH, - ctx->actionValidationPermission, - NAME_STRING_MAX_LENGTH); + VALIDATE(constData2->valueLen <= MAX_DISPLAY_VALUE_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize == 2 + constData->keyLen + constData2->valueLen, ERR_INVALID_DATA); + str_validateTextBuffer(constData2->value, constData2->valueLen); } - security_policy_t policy = policyForSignTxActionAuthorization(); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); + // Parse data - prepare to display { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_ACTION_AUTHORIZATION_STEP_RESPOND); -#undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); - } + memmove(ctx->key, constData->key, constData->keyLen); + ctx->key[constData->keyLen] = 0; + memmove(ctx->value, constData2->value, constData2->valueLen); + ctx->key[constData2->valueLen] = 0; } - signTx_handleActionAuthorization_ui_runStep(); + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; + signTx_ui_runStep_simple(); } -// ============================== ACTION DATA ============================== - -enum { - HANDLE_ACTION_DATA_STEP_SHOW_PUBKEY = 400, - HANDLE_ACTION_DATA_STEP_SHOW_AMOUNT, - HANDLE_ACTION_DATA_STEP_SHOW_MAX_FEE, - HANDLE_ACTION_DATA_STEP_SHOW_TPID, - HANDLE_ACTION_DATA_STEP_RESPOND, - HANDLE_ACTION_DATA_STEP_INVALID, -}; +// ======================= SHOW DATA =========================== -static void signTx_handleActionData_ui_runStep() { - TRACE("UI step %d", ctx->ui_step); +__noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleActionData_ui_runStep; - - UI_STEP_BEGIN(ctx->ui_step, this_fn); - - UI_STEP(HANDLE_ACTION_DATA_STEP_SHOW_PUBKEY) { - ui_displayPaginatedText("Payee Pubkey", ctx->pubkey, this_fn); - } - - UI_STEP(HANDLE_ACTION_DATA_STEP_SHOW_AMOUNT) { - ui_displayFIOAmountScreen("Amount", ctx->amount, this_fn); - } - - UI_STEP(HANDLE_ACTION_DATA_STEP_SHOW_MAX_FEE) { - ui_displayFIOAmountScreen("Max fee", ctx->maxFee, this_fn); - } - - /* UI_STEP(HANDLE_ACTION_DATA_STEP_SHOW_TPID) { - ui_displayPaginatedText( - "Tpid", - ctx->tpid, - this_fn - ); - }*/ - - UI_STEP(HANDLE_ACTION_DATA_STEP_RESPOND) { - respondSuccessEmptyMsg(); - advanceStage(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate const data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t valueFormat; + uint8_t valueValidation; + uint8_t valueValidationArg1; + uint8_t valueValidationArg2; + uint8_t valuePolicy; + uint8_t keyLen; + uint8_t key[MAX_DISPLAY_KEY_LENGTH]; + }* constData = (void*) constDataBuffer; + { + VALIDATE(constSize >= 6, ERR_INVALID_DATA); + VALIDATE(constData->keyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize == 6 + constData->keyLen, ERR_INVALID_DATA); + str_validateTextBuffer(constData->key, constData->keyLen); } - UI_STEP_END(HANDLE_ACTION_DATA_STEP_INVALID); -} - -__noinline_due_to_stack__ void signTx_handleActionDataAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { - TRACE_STACK_USAGE(); + // Parse data - prepare to display { - // sanity checks - CHECK_STAGE(SIGN_STAGE_ACTION_DATA); + memcpy(ctx->key, constData->key, constData->keyLen); + ctx->key[constData->keyLen] = 0; - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); + parseValue(constData->valueFormat, + constData->valueValidation, + constData->valueValidationArg1, + constData->valueValidationArg2, + varDataBuffer, + varSize, + ctx->value); } - { - // parse data - TRACE_BUFFER(wireDataBuffer, wireDataSize); - - struct { - uint8_t dataLength[1]; - uint8_t pubkeyLength[1]; - uint8_t pubkey[MAX_WIF_PUBKEY_LENGTH]; // null terminated, for convenience, we will use - // displayPaginatedText - }* wireData1 = (void*) wireDataBuffer; - const uint8_t expectedWireData1Length = - SIZEOF(*wireData1) - MAX_WIF_PUBKEY_LENGTH + wireData1->pubkeyLength[0] + 1; - - struct { - uint8_t amount[8]; - uint8_t maxFee[8]; - uint8_t actor[NAME_VAR_LENGTH]; - uint8_t tpidLength[1]; - uint8_t tpid[MAX_TPID_LENGTH]; // null terminated, for convenience, we will use - // displayPaginatedText - }* wireData2 = ((void*) wireDataBuffer) + expectedWireData1Length; - const uint8_t expectedWireData2Length = - SIZEOF(*wireData2) - MAX_TPID_LENGTH + wireData2->tpidLength[0] + 1; - - VALIDATE(expectedWireData1Length + expectedWireData2Length == wireDataSize, - ERR_INVALID_DATA); - VALIDATE(wireData1->dataLength[0] == wireDataSize - 3, - ERR_INVALID_DATA); //-1 for data length, -2 fo trailing 0's - VALIDATE(wireData1->dataLength[0] <= MAX_SINGLE_BYTE_LENGTH, ERR_INVALID_DATA); - VALIDATE(wireData1->pubkeyLength[0] < MAX_SINGLE_BYTE_LENGTH, - ERR_INVALID_DATA); // < for terminating 0 - VALIDATE(wireData1->pubkeyLength[0] < MAX_WIF_PUBKEY_LENGTH, - ERR_INVALID_DATA); // < for terminating 0 - str_validateNullTerminatedTextBuffer(wireData1->pubkey, wireData1->pubkeyLength[0]); - - VALIDATE(wireData2->tpidLength[0] < MAX_SINGLE_BYTE_LENGTH, - ERR_INVALID_DATA); // < for terminating 0 - VALIDATE(wireData2->tpidLength[0] < MAX_TPID_LENGTH, - ERR_INVALID_DATA); // < for terminating 0 - str_validateNullTerminatedTextBuffer(wireData2->tpid, wireData2->tpidLength[0]); - - ctx->pubkey = (char*) wireData1->pubkey; - ctx->amount = u8be_read(wireData2->amount); - ctx->maxFee = u8be_read(wireData2->maxFee); - uint8array_name_to_string(wireData2->actor, - SIZEOF(wireData2->actor), - ctx->actionDataActor, - NAME_STRING_MAX_LENGTH); - ctx->tpid = (char*) wireData2->tpid; - - sha_256_append(&ctx->hashContext, - (uint8_t*) wireData1->dataLength, - SIZEOF(wireData1->dataLength)); - sha_256_append(&ctx->hashContext, - (uint8_t*) wireData1->pubkeyLength, - SIZEOF(wireData1->pubkeyLength)); - sha_256_append(&ctx->hashContext, (uint8_t*) wireData1->pubkey, wireData1->pubkeyLength[0]); - - sha_256_append(&ctx->hashContext, (uint8_t*) &ctx->amount, SIZEOF(ctx->amount)); - sha_256_append(&ctx->hashContext, (uint8_t*) &ctx->maxFee, SIZEOF(ctx->maxFee)); - sha_256_append(&ctx->hashContext, (uint8_t*) wireData2->actor, SIZEOF(wireData2->actor)); - sha_256_append(&ctx->hashContext, - (uint8_t*) wireData2->tpidLength, - SIZEOF(wireData2->tpidLength)); - sha_256_append(&ctx->hashContext, (uint8_t*) wireData2->tpid, wireData2->tpidLength[0]); - } + // Apend data to hash + { sha_256_append(&ctx->hashContext, varDataBuffer, varSize); } - security_policy_t policy = - policyForSignTxActionData(ctx->actionValidationActor, ctx->actionDataActor); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); + // Policy - { - // select UI steps - switch (policy) { + switch (constData->valuePolicy) { #define CASE(POLICY, UI_STEP) \ case POLICY: { \ ctx->ui_step = UI_STEP; \ break; \ } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_ACTION_DATA_STEP_SHOW_PUBKEY); -#undef CASE + CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_SIMPLE_STEP_RESPOND); + CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_SIMPLE_STEP_DISPLAY_DETAILS); default: THROW(ERR_NOT_IMPLEMENTED); +#undef CASE } } - signTx_handleActionData_ui_runStep(); + // Run ui step + signTx_ui_runStep_simple(); } // ============================== WITNESS ============================== @@ -631,7 +267,7 @@ static void signTx_handleWitness_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(HANDLE_WITNESS_STEP_DISPLAY_DETAILS) { - ui_displayPubkeyScreen("Sign with", &ctx->wittnessPathPubkey, this_fn); + ui_displayPaginatedText(ctx->key, ctx->value, this_fn); } UI_STEP(HANDLE_WITNESS_STEP_CONFIRM) { @@ -641,78 +277,113 @@ static void signTx_handleWitness_ui_runStep() { UI_STEP(HANDLE_WITNESS_STEP_RESPOND) { io_send_buf(SUCCESS, G_io_apdu_buffer, 65 + 32); ui_displayBusy(); // needs to happen after I/O - advanceStage(); + ui_idle(); // we are done with this tx } UI_STEP_END(HANDLE_WITNESS_STEP_INVALID); } __noinline_due_to_stack__ void signTx_handleWitnessAPDU(uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize) { + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // sanity checks TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t pathLen; + uint8_t path[BIP44_MAX_PATH_ELEMENTS * + sizeof(uint32_t)]; // SIZEOF does not work for 4-byte data + }* varData = (void*) varDataBuffer; { - // sanity checks - CHECK_STAGE(SIGN_STAGE_WITNESS); - VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); - ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); + VALIDATE(constSize == 0, ERR_INVALID_DATA); + VALIDATE(varSize >= 1, ERR_INVALID_DATA); + VALIDATE(varData->pathLen <= BIP44_MAX_PATH_ELEMENTS, ERR_INVALID_DATA); + VALIDATE(varSize == (size_t) 1 + varData->pathLen * sizeof(uint32_t), ERR_INVALID_DATA); } - explicit_bzero(&ctx->wittnessPath, SIZEOF(ctx->wittnessPath)); - + // Parse data and prepare to display them + bip44_path_t wittnessPath; + explicit_bzero(&wittnessPath, SIZEOF(wittnessPath)); { - // parse - TRACE_BUFFER(wireDataBuffer, wireDataSize); + size_t parsedSize = bip44_parseFromWire(&wittnessPath, varDataBuffer, varSize); + VALIDATE(parsedSize == varSize, ERR_INVALID_DATA); + + public_key_t wittnessPathPubkey; + explicit_bzero(&wittnessPathPubkey, SIZEOF(wittnessPathPubkey)); + derivePublicKey(&wittnessPath, &wittnessPathPubkey); + TRACE_BUFFER(wittnessPathPubkey.W, SIZEOF(wittnessPathPubkey.W)); - size_t parsedSize = bip44_parseFromWire(&ctx->wittnessPath, wireDataBuffer, wireDataSize); - VALIDATE(parsedSize == wireDataSize, ERR_INVALID_DATA); + snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Sign with"); + uint32_t outlen = public_key_to_wif(wittnessPathPubkey.W, + SIZEOF(wittnessPathPubkey.W), + ctx->value, + SIZEOF(ctx->value)); + ASSERT(outlen < SIZEOF(ctx->value)); + ctx->value[outlen] = 0; } + // Hash - this is the last call, we finalize it + uint8_t hashBuf[32]; + explicit_bzero(hashBuf, SIZEOF(hashBuf)); + { + sha_256_finalize(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); + TRACE("SHA_256_finalize, resulting hash:"); + TRACE_BUFFER(hashBuf, 32); + } + + // This is the last call - we need to check integrity of the command sequence + { VALIDATE(integrityCheckFinalize(&ctx->integrity), ERR_INVALID_STATE); } + + // Security policy security_policy_t policy = POLICY_DENY; { - // get policy - policy = policyForSignTxWitness(&ctx->wittnessPath); + policy = policyForSignTxWitness(&wittnessPath); TRACE("Policy: %d", (int) policy); ENSURE_NOT_DENIED(policy); + { + // select UI steps + switch (policy) { +#define CASE(POLICY, UI_STEP) \ + case POLICY: { \ + ctx->ui_step = UI_STEP; \ + break; \ + } + CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_WITNESS_STEP_DISPLAY_DETAILS); + default: + THROW(ERR_NOT_IMPLEMENTED); +#undef CASE + } + } } - // Extension points - uint8_t buf[1]; - explicit_bzero(buf, SIZEOF(buf)); - sha_256_append(&ctx->hashContext, buf, SIZEOF(buf)); - - // We finish the hash appending a 32-byte empty buffer - uint8_t hashBuf[32]; - explicit_bzero(hashBuf, SIZEOF(hashBuf)); - sha_256_append(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); - - // we get the resulting hash - sha_256_finalize(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); - TRACE("SHA_256_finalize, resulting hash:"); - TRACE_BUFFER(hashBuf, 32); - - // We derive the private key + // Derive keys and sign the transaction, setup private_key_t privateKey; - derivePrivateKey(&ctx->wittnessPath, &privateKey); - TRACE("privateKey.d:"); - TRACE_BUFFER(privateKey.d, privateKey.d_len); - - // We want to show pubkey, thus we derive it - derivePublicKey(&ctx->wittnessPath, &ctx->wittnessPathPubkey); - TRACE_BUFFER(ctx->wittnessPathPubkey.W, SIZEOF(ctx->wittnessPathPubkey.W)); - - // We sign the hash - // Code producing signatures is taken from EOS app - uint8_t V[33]; - uint8_t K[32]; - int tries = 0; - - // Loop until a candidate matching the canonical signature is found - // Taken from EOS app - // We use G_io_apdu_buffer to save memory (and also to minimize changes to EOS code) - // The code produces the signature right where we need it for the respons + explicit_bzero(&privateKey, SIZEOF(privateKey)); BEGIN_TRY { TRY { + // We derive the private key + { + derivePrivateKey(&wittnessPath, &privateKey); + TRACE("privateKey.d:"); + TRACE_BUFFER(privateKey.d, privateKey.d_len); + } + + // We sign the hash + // Code producing signatures is taken from EOS app + uint8_t V[33]; + uint8_t K[32]; + int tries = 0; + + // Loop until a candidate matching the canonical signature is found + // Taken from EOS app + // We use G_io_apdu_buffer to save memory (and also to minimize changes to EOS code) + // The code produces the signature right where we need it for the respons explicit_bzero(G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); for (;;) { if (tries == 0) { @@ -767,27 +438,16 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU(uint8_t p2, TRACE_BUFFER(G_io_apdu_buffer, 65); memcpy(G_io_apdu_buffer + 65, hashBuf, 32); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_WITNESS_STEP_DISPLAY_DETAILS); -#undef CASE - default: - THROW(ERR_NOT_IMPLEMENTED); - } - } - signTx_handleWitness_ui_runStep(); } // ============================== MAIN HANDLER ============================== -typedef void subhandler_fn_t(uint8_t p2, uint8_t* dataBuffer, size_t dataSize); +typedef void subhandler_fn_t(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize); static subhandler_fn_t* lookup_subhandler(uint8_t p1) { switch (p1) { @@ -798,10 +458,12 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { default: \ return HANDLER; CASE(0x01, signTx_handleInitAPDU); - CASE(0x02, signTx_handleHeaderAPDU); - CASE(0x03, signTx_handleActionHeaderAPDU); - CASE(0x04, signTx_handleActionAuthorizationAPDU); - CASE(0x05, signTx_handleActionDataAPDU); + CASE(0x02, signTx_handleAppendConstDataAPDU); + CASE(0x03, signTx_handleShowMessageAPDU); + CASE(0x04, signTx_handleShowDataAPDU); + /* CASE(0x05, signTx_handleStartCountedSectionAPDU); + CASE(0x06, signTx_handleEndCountedSectionAPDU); + CASE(0x07, signTx_handleStoreValueAPDU);*/ CASE(0x10, signTx_handleWitnessAPDU); DEFAULT(NULL) #undef CASE @@ -818,10 +480,26 @@ void signTransaction_handleAPDU(uint8_t p1, if (isNewCall) { explicit_bzero(ctx, SIZEOF(*ctx)); - ctx->stage = SIGN_STAGE_INIT; + TRACE("SHA_256_init"); + sha_256_init(&ctx->hashContext); + TRACE("Integrity check init"); + integrityCheckInit(&ctx->integrity); } + // Parse APDU into const and non-const part + ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); + VALIDATE(wireDataSize >= 2, ERR_INVALID_DATA); + uint8_t constantDataLen = wireDataBuffer[0]; + uint8_t variableDataLen = wireDataBuffer[1]; + VALIDATE(wireDataSize >= (size_t) 2 + constantDataLen + variableDataLen, ERR_INVALID_DATA); + uint8_t* constantData = wireDataBuffer + 2; + uint8_t* variableData = constantData + constantDataLen; + + // Update integrity and transaction hash + integrityCheckProcessInstruction(&ctx->integrity, p1, p2, constantData, constantDataLen); + subhandler_fn_t* subhandler = lookup_subhandler(p1); VALIDATE(subhandler != NULL, ERR_INVALID_REQUEST_PARAMETERS); - subhandler(p2, wireDataBuffer, wireDataSize); + + subhandler(p2, constantData, constantDataLen, variableData, variableDataLen); } diff --git a/src/signTransaction.h b/src/signTransaction.h index aaa7ff40..15e639f5 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -5,40 +5,22 @@ #include "hash.h" #include "fio.h" #include "keyDerivation.h" +#include "signTransactionIntegrity.h" handler_fn_t signTransaction_handleAPDU; +#define MAX_DISPLAY_KEY_LENGTH 20 +#define MAX_DISPLAY_VALUE_LENGTH 200 + +#define MAX_APPEND_CONST_DATA_LEN 200 + typedef struct { sha_256_context_t hashContext; + tx_integrity_t integrity; int ui_step; - int stage; - - network_type_t network; - char actionValidationActor[NAME_STRING_MAX_LENGTH]; - - // The following data is not needed at once. - // to be used in HEADER step - uint32_t expiration; - uint16_t refBlockNum; - uint32_t refBlockPrefix; - - // only used in ACTION HEADER step - action_type_t action_type; - - // only used in ACTION_AUTHORIZATION step - char actionValidationPermission[NAME_STRING_MAX_LENGTH]; - - // only used in ACTION_DATA step - char *pubkey; - uint64_t amount; - uint64_t maxFee; - char actionDataActor[NAME_STRING_MAX_LENGTH]; - char *tpid; - - // only used in WITNESS step - bip44_path_t wittnessPath; - public_key_t wittnessPathPubkey; + char key[MAX_DISPLAY_KEY_LENGTH]; + char value[MAX_DISPLAY_VALUE_LENGTH]; } ins_sign_transaction_context_t; #endif // H_FIO_APP_SIGN_TRANSACTION diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 6987a52b..4daa8c81 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -2,7 +2,16 @@ #include "state.h" #include "hash.h" -static const uint8_t allowedHashes[][SHA_256_SIZE] = {}; +static const uint8_t allowedHashes[][SHA_256_SIZE] = { +#ifdef DEVEL + {0x8a, 0xe3, 0x7f, 0xe4, 0x95, 0x02, 0x7a, 0xc1, 0x09, 0xde, 0x2e, + 0xe3, 0xf7, 0x95, 0x39, 0x14, 0x0f, 0xd5, 0x6a, 0xa5, 0x6a, 0x50, + 0xd3, 0xe9, 0x96, 0x83, 0x0e, 0x03, 0x3e, 0xda, 0x36, 0x76}, + {0xf3, 0xa5, 0xd8, 0xa3, 0x3f, 0x25, 0x13, 0xa3, 0xdd, 0x2a, 0xc0, + 0xc6, 0x37, 0x43, 0xc8, 0x5a, 0x5c, 0xe9, 0x24, 0x9d, 0x36, 0xd6, + 0xef, 0x32, 0xe8, 0xf1, 0x20, 0x38, 0x6e, 0xe9, 0x2c, 0x69}, +#endif +}; enum { TX_INTEGRITY_HASH_INITIALIZED_MAGIC = 12345, diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c new file mode 100644 index 00000000..b9ae52ea --- /dev/null +++ b/src/signTransactionParse.c @@ -0,0 +1,96 @@ +#include "common.h" +#include "signTransactionParse.h" +#include "hexUtils.h" +#include "textUtils.h" +#include "fio.h" + +static void parse_bufferShowAsHex(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + VALIDATE(valueLen * 2 < MAX_DISPLAY_VALUE_LENGTH, ERR_INVALID_DATA); + size_t outlen = encode_hex(value, valueLen, display, MAX_DISPLAY_VALUE_LENGTH); + ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); + display[outlen] = 0; +} + +static void parse_asciiString(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + VALIDATE(valueLen < MAX_DISPLAY_VALUE_LENGTH, ERR_INVALID_DATA); + str_validateTextBuffer(value, valueLen); + memcpy(display, value, valueLen); + display[valueLen] = 0; +} + +static void parse_fioAmount(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + uint64_t amount = 0; + VALIDATE(valueLen == SIZEOF(amount), ERR_INVALID_DATA); + memcpy(&amount, value, SIZEOF(amount)); + size_t outlen = str_formatFIOAmount(amount, display, MAX_DISPLAY_VALUE_LENGTH); + ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); + display[outlen] = 0; +} + +static void parse_name(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + VALIDATE(valueLen == NAME_VAR_LENGTH, ERR_INVALID_DATA); + uint8array_name_to_string(value, + valueLen, + display, + MAX_DISPLAY_VALUE_LENGTH); // null terminated, no return vallue +} + +static void parse_uint64(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + uint64_t number = 0; + VALIDATE(valueLen == SIZEOF(number), ERR_INVALID_DATA); + memcpy(&number, value, SIZEOF(number)); + size_t outlen = str_formatUint64(number, display, MAX_DISPLAY_VALUE_LENGTH); + ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); + display[outlen] = 0; +} + +//-------------------- MAIN FUNCITON ---------------------- + +void parseValue(value_format_t format, + value_buffer_validation_t validation, + uint8_t arg1, + uint8_t arg2, + const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + // buffer validation + switch (validation) { +#define CASE(VALIDATION, CHECK) \ + case VALIDATION: { \ + VALIDATE(CHECK, ERR_INVALID_DATA); \ + break; \ + } + + CASE(VALUE_VALIDATION_NONE, arg2 == 0 && arg2 == 0); + CASE(VALUE_VALIDATION_INBUFFER_LENGTH, arg1 <= valueLen && arg2 >= valueLen); + default: + THROW(ERR_INVALID_DATA); +#undef CASE + } + + // parsing + switch (format) { +#define CASE(FORMAT, HANDLER) \ + case FORMAT: \ + return HANDLER(value, valueLen, display); + + CASE(VALUE_FORMAT_BUFFER_SHOW_AS_HEX, parse_bufferShowAsHex); + CASE(VALUE_FORMAT_ASCII_STRING, parse_asciiString); + CASE(VALUE_FORMAT_FIO_AMOUNT, parse_fioAmount); + CASE(VALUE_FORMAT_NAME, parse_name); + CASE(VALUE_UINT64, parse_uint64); + default: + THROW(ERR_INVALID_DATA); +#undef CASE + } +} diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h new file mode 100644 index 00000000..0f915148 --- /dev/null +++ b/src/signTransactionParse.h @@ -0,0 +1,29 @@ +#ifndef H_FIO_APP_SIGN_TRANSACTION_PARSE +#define H_FIO_APP_SIGN_TRANSACTION_PARSE +#include +#include "signTransaction.h" + +typedef enum { + VALUE_FORMAT_UNKNOWN = 0x00, + VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01, + VALUE_FORMAT_ASCII_STRING = 0x02, + VALUE_FORMAT_NAME = 0x03, + VALUE_FORMAT_FIO_AMOUNT = 0x10, + VALUE_UINT64 = 0x14, +} value_format_t; + +typedef enum { + VALUE_VALIDATION_UNKNOWN = 0, + VALUE_VALIDATION_NONE = 1, + VALUE_VALIDATION_INBUFFER_LENGTH = 2, +} value_buffer_validation_t; + +void parseValue(value_format_t format, + value_buffer_validation_t validation, + uint8_t arg1, + uint8_t arg2, + const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]); + +#endif // H_FIO_APP_SIGN_TRANSACTION_PARSE diff --git a/src/uiHelpers.c b/src/uiHelpers.c index 3a94fe50..1192b5b6 100644 --- a/src/uiHelpers.c +++ b/src/uiHelpers.c @@ -187,8 +187,6 @@ void ui_displayPaginatedText(const char* headerStr, uiCallback_init(&ctx->callback, callback, NULL); ctx->initMagic = INIT_MAGIC_PAGINATED_TEXT; - TRACE("setting timeout"); - TRACE("done"); ASSERT(io_state == IO_EXPECT_NONE || io_state == IO_EXPECT_UI); io_state = IO_EXPECT_UI; @@ -202,6 +200,7 @@ void ui_displayPaginatedText(const char* headerStr, } void respond_with_user_reject() { + explicit_bzero(G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); io_send_buf(ERR_REJECTED_BY_USER, NULL, 0); ui_idle(); } diff --git a/test-integration/signTransactionBasic.js b/test-integration/signTransactionBasic.js index b043f2fb..b1f393e3 100644 --- a/test-integration/signTransactionBasic.js +++ b/test-integration/signTransactionBasic.js @@ -2,7 +2,6 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } f import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" -import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionCommandsBasic.js b/test-integration/signTransactionCommandsBasic.js new file mode 100644 index 00000000..f966f53d --- /dev/null +++ b/test-integration/signTransactionCommandsBasic.js @@ -0,0 +1,233 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer, sleep } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - testnet"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Append "0102030405" to transaction + const buffer12 = getAPDUDataBuffer("0102030405", ""); + const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Show "Test Key" "Test Value" to transaction hex: 0854657374204b6579, 0a546573742056616c7565 (total length 0x14) + const buffer13 = getAPDUDataBuffer("0854657374204b65790a546573742056616c7565", ""); + const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm sign with"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response14 = await promise14; + + //The signed message should contain chainId + 0102030405 + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"+"0102030405", "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response14.slice(0, 65)); + assert.equal(response14.slice(65,65+32).toString("hex"), hash1); + assert.equal(response14.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - mainnet"); +{ + //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Append "0102030405" to transaction + const buffer12 = getAPDUDataBuffer("0102030405", ""); + const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Show "Test Key" "Test Value" to transaction hex: 0854657374204b6579, 0a546573742056616c7565 (total length 0x14) + const buffer13 = getAPDUDataBuffer("0854657374204b65790a546573742056616c7565", ""); + const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm sign with"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response14 = await promise14; + + //The signed message should contain chainId + 0102030405 + const msg1 = Buffer.from("21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c0102030405", "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response14.slice(0, 65)); + assert.equal(response14.slice(65,65+32).toString("hex"), hash1); + assert.equal(response14.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "One byte constant data difference should cause integrity validation error (Test Value->Uest Value)"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Append "0102030405" to transaction + const buffer12 = getAPDUDataBuffer("0102030405", ""); + const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Show "Test Key" "Test Walue" to transaction hex: 0854657374204b6579, 0a55(54)6573742056616c7565 (total length 0x14) + const buffer13 = getAPDUDataBuffer("0854657374204b65790a556573742056616c7565", ""); + const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); + await assert.rejects(promise14, err(0x6e06)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Incorrect chain should result in immediate failure"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f incorrect chain - last bit + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await assert.rejects(promise11, err(0x6e07)); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Incorrect lengths should lead to failure"); +{ + //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Append "0102030405(06)" to transaction + const buffer12 = Buffer.from("0501010203040506", "hex"); + const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Non ASCII character in message"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Show "Test Key" "Test Val_e" to transaction hex: 0854657374204b6579, 0a546573742056616c(00)65 + const buffer13 = getAPDUDataBuffer("0854657374204b65790a546573742056616c0065", ""); + const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); + await assert.rejects(promise13, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "incorrect path should result in failure"); +{ + //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Append "0102030405" to transaction + const buffer12 = getAPDUDataBuffer("0102030405", ""); + const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Show "Test Key" "Test Value" to transaction hex: 0854657374204b6579, 0a546573742056616c7565 (total length 0x14) + const buffer13 = getAPDUDataBuffer("0854657374204b65790a546573742056616c7565", ""); + const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //Finish path=44'/236'/0'/0/0 + const buffer14 = getAPDUDataBuffer("", "058000002c800000ec800000000000000000000000"); + const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); + await assert.rejects(promise14, err(0x6e10)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- + + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); \ No newline at end of file diff --git a/test-integration/signTransactionCommandsShowData.js b/test-integration/signTransactionCommandsShowData.js new file mode 100644 index 00000000..47ae69ea --- /dev/null +++ b/test-integration/signTransactionCommandsShowData.js @@ -0,0 +1,285 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - testnet"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("010200080509486578537472696e67", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 00-min, 00-max, 05-policy, Key = "String" (06537472696e67) + const buffer13 = getAPDUDataBuffer("020100000506537472696e67", "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + const promise13 = transport.send(215, 0x20, 0x04, 0, buffer13); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //SHOW DATA 03-name, 01-no validation, 00-min, 00-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" + const buffer14 = getAPDUDataBuffer("03010000050a4e616d65537472696e67", "0000980ad20ca85b"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response14 = await promise14; + assert.equal(response14.toString("hex"), "9000"); + + //SHOW DATA 10-amount, 01-no validation, 00-min, 00-max, 05-policy, Key = "Amount" (06416d6f756e74) + const buffer15 = getAPDUDataBuffer("100100000506416d6f756e74", "0100000000000000"); + const promise15 = transport.send(215, 0x20, 0x04, 0, buffer15); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response15 = await promise15; + assert.equal(response15.toString("hex"), "9000"); + + //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 05-policy, Key = "Number" (064e756d626572) + const buffer16 = getAPDUDataBuffer("1401000005064e756d626572", "0200000000000000"); + const promise16 = transport.send(215, 0x20, 0x04, 0, buffer16); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response16 = await promise16; + assert.equal(response16.toString("hex"), "9000"); + + //This is to test do not show policy + //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 02-policy, Key = "Number" (064e756d626572) + const buffer17 = getAPDUDataBuffer("1401000002064e756d626572", "0300000000000000"); + const promise17 = transport.send(215, 0x20, 0x04, 0, buffer17); + const response17 = await promise17; + assert.equal(response17.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer19 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise19 = transport.send(215, 0x20, 0x10, 0, buffer19); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm sign with"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response19 = await promise19; + + //The signed message should contain chainId + 0102030405 + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e" + + "0011223344556677" + + "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67" + + "0000980ad20ca85b" + + "0100000000000000" + + "0200000000000000" + + "0300000000000000" + , "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response19.slice(0, 65)); + assert.equal(response19.slice(65,65+32).toString("hex"), hash1); + assert.equal(response19.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Unknown data type leads to failure"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 00-unknown, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("000200080509486578537472696e67", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Buffer does not pass length validation"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("010200080509486578537472696e67", "001122334455667788"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Key length does not match"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" 08(09)486578537472696e67 + const buffer12 = getAPDUDataBuffer("010200080508486578537472696e67", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Key contains invalid symbols"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "?exString" 0900(48)6578537472696e67 + const buffer12 = getAPDUDataBuffer("010200080509ff6578537472696e67", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Key too long"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "01234567890123456789" + const buffer12 = getAPDUDataBuffer("0102000805143031323334353637383930313233343536373839", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "String value contains non readable characters"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 00-min, 00-max, 05-policy, Key = "String" (06537472696e67) + const buffer13 = getAPDUDataBuffer("020100000506537472696e67", "4eff636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + const promise13 = transport.send(215, 0x20, 0x04, 0, buffer13); + await assert.rejects(promise13, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Name string has incorrect length"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 03-name, 01-no validation, 00-min, 00-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" + const buffer14 = getAPDUDataBuffer("03010000050a4e616d65537472696e67", "00980ad20ca85b"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await assert.rejects(promise14, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Amount incorrect length"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 10-amount, 01-no validation, 00-min, 00-max, 05-policy, Key = "Amount" (06416d6f756e74) + const buffer15 = getAPDUDataBuffer("100100000506416d6f756e74", "010000000000000000"); + const promise15 = transport.send(215, 0x20, 0x04, 0, buffer15); + await assert.rejects(promise15, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "UInt64 incorrect length"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 05-policy, Key = "Number" (064e756d626572) + const buffer16 = getAPDUDataBuffer("1401000005064e756d626572", "02000000000000"); + const promise16 = transport.send(215, 0x20, 0x04, 0, buffer16); + await assert.rejects(promise16, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- + + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionCommandsBasic/nanos.01.png b/test-integration/snapshots/signTransactionCommandsBasic/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsBasic/nanos.03.png b/test-integration/snapshots/signTransactionCommandsBasic/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc4489f3a24875365a47d1743c4babdf4faaf63 GIT binary patch literal 376 zcmV-;0f+vHP)JwVP|-&+bjHGElx`KC6A%>X0?+_KGNgKzVpi zz(#AcMPCvhbx|+?r=Tn|NFv(J7&^}YCmG-fC{lFr-fr?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIJwVP|-&+bjHGElx`KC6A%>X0?+_KGNgKzVpi zz(#AcMPCvhbx|+?r=Tn|NFv(J7&^}YCmG-fC{lFr-fr?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsBasic/nanos.13.png b/test-integration/snapshots/signTransactionCommandsBasic/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..1380610ce32edab723968a346db387036487de32 GIT binary patch literal 383 zcmV-_0f7FAP)$-~WMoXb*HK5)u(DS#`fd#~)lU38BOg2qA>rmC1VmA-rFU(`nu%l^)NJ z$vTA_`r4<9Th;t{dJjM+88HTOej1PCuMBe;`^B^QT~3rQMa;@r)*2KS<#j^}V4^&{ z2cRRZ*I|2_o#9o zz>jVR*cDJ)%J=>C-oZ9v-4#$xM>f{J8T@s#rfVWOAep0TK3U;0kY?@ZdI(4k2ue=3 zjh-A+4d*>w4*|>p-4#$xs@<$kWuh}wLmMlg=fvrwytYW%6;NZHlph)keJ#t6S%e88 dgb+f=k`J{i&ndL%$=Cn@002ovPDHLkV1m5%o-zOc literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsBasic/nanos.14.png b/test-integration/snapshots/signTransactionCommandsBasic/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsBasic/nanos.18.png b/test-integration/snapshots/signTransactionCommandsBasic/nanos.18.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIJwVP|-&+bjHGElx`KC6A%>X0?+_KGNgKzVpi zz(#AcMPCvhbx|+?r=Tn|NFv(J7&^}YCmG-fC{lFr-fr%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.03.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2e8c6f4337082ba72e96b88d9c962db688f8aa GIT binary patch literal 417 zcmV;S0bc%zP)-`+|tsmDc;LW4} zL(56HW-maZdULzIel{0k`{(y|`{+*lR_Y*)Y~tVtlPZ9?ZAF)Lnw3vSR||*wo%Sud zw8xVw0KI4GZoV<=?xr0Z<2hL}1Q~rwqs?xzRa{blhT$17L-qr-o&e1$Dxw`8oh}-~ zxpFvdR_9e~UxiU)cK<`x|x0TtSV%UZ6of&>$1Zv76eop91oiSeJz- zfBP(!HB&pU2=!}3n#DMdWqCg8G{XyCTIeM2Ar@`?PLX4`#oJgPK}tg>;W{6k)LQm_ zF8VUodlRM@gPS)ZJ(-Vwd@D#k+00000 LNkvXXu0mjf{sp-# literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.04.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..109df4905cfd28cdbdc0bc27ee13772656b0e551 GIT binary patch literal 372 zcmV-)0gL{LP)lR*7$BtytN(Xs%rRyBMUj>T006+OtlkC)9Q#>bw?a$30eAux zK&lynueSj<((I?_x}9RAa`FJyX)@X1D^`v@pF8@>mi5Z04iwb`=%OBa*?znYP-!yt z$(f?67}WzB5_RemQ3YVP>}NX?J+VPolw&*$vCn{EkhPC`6K;k5M*TK{1A%D>xd%=L zH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@F`AEL$II?P(zWOsu1EolabaEus!5j` zdy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`zgkE9( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.05.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd828fc03b64e894672b6cb6fe2793966c0f585 GIT binary patch literal 367 zcmV-#0g(QQP)(pnLr6ul?QqD)FhTL@Po0001>JHJ)Cy=ggqF8S~-vI%M% zfYTPQd`(9S3;k9K%dRnN96aGRn1=yyy}`N*!!wv~D3LO5TT`;qb!b)E4>4}n?`gYh5+Bk{Nsqzi7V zL478WN3ZI9no)B;b}3l8u|pI=PxVekI!*hY8Wh#g*Ku_A(GSUmN@uy=IkaMYh;hx) z-#U2Wp#k8cx7T$>k|LggXU#RiWd$6)hRk-J4|Cv2OW4#6wf1L& zu1*i3c}jn#YKZlyi7zCz&0ZOUAq1oOlpk6AAb3DO7~@^gOkDnX^?x*80>A)x6#<3* zcyKXHz@F&^iY4f8*w)eatf~$0^@zO-%Jbxl5JCtcgq+|3NC4hcsKpT&00000NkvXX Hu0mjfB6^0N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.07.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..775f50d8a74eb0ad0160bf51adba4e38152c8cbd GIT binary patch literal 266 zcmV+l0rmcgP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.12.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.14.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.16.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.18.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.18.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.20.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.20.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.22.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.24.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.24.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.26.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.28.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.28.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Tue, 21 Jun 2022 19:57:04 +0200 Subject: [PATCH 15/83] Counted section internals and unit tests --- src/runTests.c | 6 +- src/signTransaction.c | 8 +- src/signTransactionCountedSection.c | 65 ++++++++++++++++ src/signTransactionCountedSection.h | 30 +++++++ src/signTransactionCountedSection_test.c | 99 ++++++++++++++++++++++++ src/signTransactionIntegrity_test.c | 2 +- src/utils.h | 6 ++ 7 files changed, 209 insertions(+), 7 deletions(-) create mode 100644 src/signTransactionCountedSection.c create mode 100644 src/signTransactionCountedSection.h create mode 100644 src/signTransactionCountedSection_test.c diff --git a/src/runTests.c b/src/runTests.c index d3728ac1..c91a4867 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -12,6 +12,7 @@ #include "uiScreens.h" #include "diffieHellman.h" #include "signTransactionIntegrity.h" +#include "signTransactionCountedSection.h" void handleRunTests(uint8_t p1 MARK_UNUSED, uint8_t p2 MARK_UNUSED, @@ -22,13 +23,14 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, // as it interferes with tests verifying assertions BEGIN_ASSERT_NOEXCEPT { PRINTF("Running tests\n"); - run_hex_test(); +/* run_hex_test(); run_endian_test(); run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); run_diffieHellman_test(); - run_integrityCheck_test(); + run_integrityCheck_test();*/ + run_countedSection_test(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; diff --git a/src/signTransaction.c b/src/signTransaction.c index df23a2b4..8d8ab7f4 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -57,7 +57,7 @@ static void signTx_ui_runStep_simple() { // ============================== INIT ============================== __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, - uint8_t* constDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { @@ -110,7 +110,7 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, __noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, uint8_t* constDataBuffer, size_t constSize, - uint8_t* varDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { // Sanity checks TRACE_STACK_USAGE(); @@ -140,7 +140,7 @@ __noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, __noinline_due_to_stack__ void signTx_handleShowMessageAPDU(uint8_t p2, uint8_t* constDataBuffer, size_t constSize, - uint8_t* varDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { // Sanity checks TRACE_STACK_USAGE(); @@ -284,7 +284,7 @@ static void signTx_handleWitness_ui_runStep() { } __noinline_due_to_stack__ void signTx_handleWitnessAPDU(uint8_t p2, - uint8_t* constDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { diff --git a/src/signTransactionCountedSection.c b/src/signTransactionCountedSection.c new file mode 100644 index 00000000..0def0c28 --- /dev/null +++ b/src/signTransactionCountedSection.c @@ -0,0 +1,65 @@ +#include "signTransactionCountedSection.h" +#include "utils.h" + +enum { + TX_COUNTED_SECTION_INITIALIZED_MAGIC = 12345, +}; + +void countedSectionInit(tx_counted_section_t *cs) { + explicit_bzero(cs, SIZEOF(*cs)); + cs->initialized_magic = TX_COUNTED_SECTION_INITIALIZED_MAGIC; +} + +bool countedSectionBegin(tx_counted_section_t *cs, uint16_t expectedLength) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); + + //too deep nesting + if(cs->currentLevel >= MAX_NESTED_COUNTED_SECTIONS) { + return false; + } + + cs->currentLevel++; + cs->count[cs->currentLevel-1] = expectedLength; + return true; +} + +bool countedSectionProcess(tx_counted_section_t *cs, uint16_t expectedLength) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); + ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); + + for(size_t i=0; icurrentLevel; i++) { + if (cs->count[i] < expectedLength) { + return false; + } + cs->count[i] -= expectedLength; + } + return true; +} + +bool countedSectionEnd(tx_counted_section_t *cs) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); + ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); + + // curentLevel == 0 we cannot exit counted section + if (cs->currentLevel == 0) { + return false; + } + + // Counted section mismatch + if (cs->count[cs->currentLevel-1] != 0) { + return false; + } + + cs->currentLevel--; + return true; +} + +bool countedSectionFinalize(tx_counted_section_t *cs) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); + + return (cs->currentLevel == 0); +} diff --git a/src/signTransactionCountedSection.h b/src/signTransactionCountedSection.h new file mode 100644 index 00000000..eabb9343 --- /dev/null +++ b/src/signTransactionCountedSection.h @@ -0,0 +1,30 @@ +#ifndef H_FIO_APP_SIGN_COIUNTED_SECTION +#define H_FIO_APP_SIGN_COIUNTED_SECTION + +#include +#include + +#define MAX_NESTED_COUNTED_SECTIONS 5 + +//currencLevel=1 strores value on count[0], etc... +typedef struct { + uint16_t initialized_magic; + uint16_t count[MAX_NESTED_COUNTED_SECTIONS]; + uint8_t currentLevel; +} tx_counted_section_t; + +void countedSectionInit(tx_counted_section_t *cs); + +bool countedSectionBegin(tx_counted_section_t *cs, uint16_t expectedLength); + +bool countedSectionProcess(tx_counted_section_t *cs, uint16_t expectedLength); + +bool countedSectionEnd(tx_counted_section_t *cs); + +bool countedSectionFinalize(tx_counted_section_t *cs); + +#ifdef DEVEL +void run_countedSection_test(); +#endif // DEVEL + +#endif // H_FIO_APP_SIGN_COIUNTED_SECTION diff --git a/src/signTransactionCountedSection_test.c b/src/signTransactionCountedSection_test.c new file mode 100644 index 00000000..284df202 --- /dev/null +++ b/src/signTransactionCountedSection_test.c @@ -0,0 +1,99 @@ +#ifdef DEVEL + +#include "signTransactionCountedSection.h" +#include "assert.h" + +static void tooMuchNesting_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(!countedSectionBegin(&cs, 1000)); +} + +static void finalizeOnNonZeroLevel_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 0)); + ASSERT(!countedSectionFinalize(&cs)); +} + +static void endSectionOnZeroLevel_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(!countedSectionEnd(&cs)); +} + +static void underflowLevel0_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionProcess(&cs, 999)); + ASSERT(!countedSectionEnd(&cs)); +} + +static void overflowLevel0_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionProcess(&cs, 1000)); + ASSERT(!countedSectionProcess(&cs, 1)); +} + +static void overflowLevel0From2_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionProcess(&cs, 300)); + ASSERT(countedSectionBegin(&cs, 800)); + ASSERT(countedSectionProcess(&cs, 500)); + ASSERT(countedSectionBegin(&cs, 500)); + ASSERT(!countedSectionProcess(&cs, 250)); +} + +static void underflowLevel0From2_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionProcess(&cs, 100)); + ASSERT(countedSectionBegin(&cs, 800)); + ASSERT(countedSectionProcess(&cs, 300)); + ASSERT(countedSectionBegin(&cs, 500)); + ASSERT(countedSectionProcess(&cs, 250)); + ASSERT(countedSectionProcess(&cs, 250)); + ASSERT(countedSectionEnd(&cs)); + ASSERT(countedSectionEnd(&cs)); + ASSERT(!countedSectionEnd(&cs)); +} + +static void correct_test() { + tx_counted_section_t cs; + countedSectionInit(&cs); + ASSERT(countedSectionBegin(&cs, 1000)); + ASSERT(countedSectionProcess(&cs, 200)); + ASSERT(countedSectionBegin(&cs, 800)); + ASSERT(countedSectionProcess(&cs, 300)); + ASSERT(countedSectionBegin(&cs, 500)); + ASSERT(countedSectionProcess(&cs, 250)); + ASSERT(countedSectionProcess(&cs, 250)); + ASSERT(countedSectionEnd(&cs)); + ASSERT(countedSectionEnd(&cs)); + ASSERT(countedSectionEnd(&cs)); +} + + +void run_countedSection_test() { + tooMuchNesting_test(); + finalizeOnNonZeroLevel_test(); + endSectionOnZeroLevel_test(); + underflowLevel0_test(); + overflowLevel0_test(); + overflowLevel0From2_test(); + underflowLevel0From2_test(); + correct_test(); +} + +#endif \ No newline at end of file diff --git a/src/signTransactionIntegrity_test.c b/src/signTransactionIntegrity_test.c index 1e56ec58..65bf1e77 100644 --- a/src/signTransactionIntegrity_test.c +++ b/src/signTransactionIntegrity_test.c @@ -16,7 +16,7 @@ static void run1() { integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); - _integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes)); + ASSERT(_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified p1 diff --git a/src/utils.h b/src/utils.h index 12f1428d..cecaf932 100644 --- a/src/utils.h +++ b/src/utils.h @@ -50,6 +50,12 @@ // Note: unused removes unused warning but does not warn if you suddenly // start using such variable. deprecated deals with that. #define MARK_UNUSED __attribute__((unused, deprecated)) +#ifdef DEVEL +#define MARK_UNUSED_NO_DEVEL +#else +#define MARK_UNUSED_NO_DEVEL __attribute__((unused, deprecated)) +#endif + // Note: inlining can increase stack memory usage // where we really do not want it From 8280104b28ca98b4958d5d00c862d4e1ef329009 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 22 Jun 2022 12:33:03 +0200 Subject: [PATCH 16/83] Counted section commands --- MakefileTest.mk | 1 + doc/ins_sign_tx_commands.md | 10 +- src/runTests.c | 4 +- src/signTransaction.c | 161 +++++++-- src/signTransaction.h | 2 + src/signTransactionCountedSection.c | 35 +- src/signTransactionCountedSection.h | 10 +- src/signTransactionCountedSection_test.c | 1 - src/signTransactionIntegrity.c | 9 +- src/signTransactionParse.c | 231 ++++++++++--- src/signTransactionParse.h | 31 +- src/utils.h | 3 +- .../signTransactionCommandsCountedSection.js | 312 ++++++++++++++++++ .../signTransactionCommandsShowData.js | 62 ++-- .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 424 bytes .../nanos.04.png | Bin 0 -> 356 bytes .../nanos.05.png | Bin 0 -> 426 bytes .../nanos.06.png | Bin 0 -> 322 bytes .../nanos.07.png | Bin 0 -> 426 bytes .../nanos.08.png | Bin 0 -> 322 bytes .../nanos.09.png | Bin 0 -> 426 bytes .../nanos.10.png | Bin 0 -> 322 bytes .../nanos.11.png | Bin 0 -> 426 bytes .../nanos.12.png | Bin 0 -> 322 bytes .../nanos.13.png | Bin 0 -> 426 bytes .../nanos.14.png | Bin 0 -> 322 bytes .../nanos.15.png | Bin 0 -> 426 bytes .../nanos.16.png | Bin 0 -> 322 bytes .../nanos.17.png | Bin 0 -> 426 bytes .../nanos.18.png | Bin 0 -> 322 bytes .../nanos.19.png | Bin 0 -> 426 bytes .../speculos-buttons-and-snapshots.js | 6 +- 34 files changed, 724 insertions(+), 154 deletions(-) create mode 100644 test-integration/signTransactionCommandsCountedSection.js create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionCommandsCountedSection/nanos.19.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 1bdb302e..9bea69d2 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -43,6 +43,7 @@ speculos_port_5001_unit_test_internal: $(call run_nodejs_test,5001,40001,runUnitTests.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsBasic.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsShowData.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsCountedSection.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md index ab76b3e3..a828b6fd 100644 --- a/doc/ins_sign_tx_commands.md +++ b/doc/ins_sign_tx_commands.md @@ -26,8 +26,8 @@ SHOW_DATA ---------- ValueFormat: NAME, STRING, UINT64 (1b) ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) -ValueValidationArg 1 (1b) -ValueValidationArg 2 (1b) +ValueValidationArg 1 (8b) +ValueValidationArg 2 (8b) Policy (1b) Key Len: Key @@ -36,8 +36,10 @@ Value =================== START_COUNTED_SECTION ---------- -ValueValidation: NONE, LENGTH(min, max) -format: UINT8, VARUINT32 +ValueFormat: must be number format (1b) +ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) +ValueValidationArg 1 (8b) +ValueValidationArg 2 (8b) ---------- expected length ==================== diff --git a/src/runTests.c b/src/runTests.c index c91a4867..60e6a22c 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -23,13 +23,13 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, // as it interferes with tests verifying assertions BEGIN_ASSERT_NOEXCEPT { PRINTF("Running tests\n"); -/* run_hex_test(); + run_hex_test(); run_endian_test(); run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); run_diffieHellman_test(); - run_integrityCheck_test();*/ + run_integrityCheck_test(); run_countedSection_test(); PRINTF("All tests done\n"); } diff --git a/src/signTransaction.c b/src/signTransaction.c index 8d8ab7f4..1bcd585d 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -7,6 +7,7 @@ #include "endian.h" #include "eos_utils.h" #include "securityPolicy.h" +#include "signTransactionCountedSection.h" #include "signTransactionIntegrity.h" #include "signTransactionParse.h" #include "uiHelpers.h" @@ -98,7 +99,11 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, } // Apend data to hash - { sha_256_append(&ctx->hashContext, varData->chainId, SIZEOF(varData->chainId)); } + { + VALIDATE(countedSectionProcess(&ctx->countedSections, SIZEOF(varData->chainId)), + ERR_INVALID_DATA); + sha_256_append(&ctx->hashContext, varData->chainId, SIZEOF(varData->chainId)); + } // Run ui step ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; @@ -107,11 +112,12 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, // ======================= APPEND CONST DATA =========================== -__noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, - uint8_t* constDataBuffer, - size_t constSize, - MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, - size_t varSize) { +__noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU( + uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, + size_t varSize) { // Sanity checks TRACE_STACK_USAGE(); { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } @@ -128,7 +134,10 @@ __noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, } // Apend data to hash - { sha_256_append(&ctx->hashContext, constData->data, constSize); } + { + VALIDATE(countedSectionProcess(&ctx->countedSections, constSize), ERR_INVALID_DATA); + sha_256_append(&ctx->hashContext, constData->data, constSize); + } // Run ui step ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; @@ -137,11 +146,12 @@ __noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU(uint8_t p2, // ======================= SHOW MESSAGE =========================== -__noinline_due_to_stack__ void signTx_handleShowMessageAPDU(uint8_t p2, - uint8_t* constDataBuffer, - size_t constSize, - MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, - size_t varSize) { +__noinline_due_to_stack__ void signTx_handleShowMessageAPDU( + uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, + size_t varSize) { // Sanity checks TRACE_STACK_USAGE(); { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } @@ -200,16 +210,16 @@ __noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, struct { uint8_t valueFormat; uint8_t valueValidation; - uint8_t valueValidationArg1; - uint8_t valueValidationArg2; + uint8_t valueValidationArg1[8]; + uint8_t valueValidationArg2[8]; uint8_t valuePolicy; uint8_t keyLen; uint8_t key[MAX_DISPLAY_KEY_LENGTH]; }* constData = (void*) constDataBuffer; { - VALIDATE(constSize >= 6, ERR_INVALID_DATA); + VALIDATE(constSize >= 20, ERR_INVALID_DATA); VALIDATE(constData->keyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); - VALIDATE(constSize == 6 + constData->keyLen, ERR_INVALID_DATA); + VALIDATE(constSize == 20 + constData->keyLen, ERR_INVALID_DATA); str_validateTextBuffer(constData->key, constData->keyLen); } @@ -218,17 +228,20 @@ __noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, memcpy(ctx->key, constData->key, constData->keyLen); ctx->key[constData->keyLen] = 0; - parseValue(constData->valueFormat, - constData->valueValidation, - constData->valueValidationArg1, - constData->valueValidationArg2, - varDataBuffer, - varSize, - ctx->value); + parseValueToDisplay(constData->valueFormat, + constData->valueValidation, + constData->valueValidationArg1, + constData->valueValidationArg2, + varDataBuffer, + varSize, + ctx->value); } // Apend data to hash - { sha_256_append(&ctx->hashContext, varDataBuffer, varSize); } + { + VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); + sha_256_append(&ctx->hashContext, varDataBuffer, varSize); + } // Policy - { @@ -250,6 +263,84 @@ __noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, signTx_ui_runStep_simple(); } +// ======================= START COUNTED SECTION =========================== + +__noinline_due_to_stack__ void signTx_handleStartCountedSectionAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks + TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate const data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + struct { + uint8_t valueFormat; + uint8_t valueValidation; + uint8_t valueValidationArg1[8]; + uint8_t valueValidationArg2[8]; + }* constData = (void*) constDataBuffer; + { VALIDATE(constSize == SIZEOF(*constData), ERR_INVALID_DATA); } + + // Parse data - prepare to display + uint32_t numberOfExpectedBytes = 0; + { + uint64_t value = 0; + parseValueToUInt64(constData->valueFormat, + constData->valueValidation, + constData->valueValidationArg1, + constData->valueValidationArg2, + varDataBuffer, + varSize, + &value); + VALIDATE(value <= UINT32_MAX, ERR_INVALID_DATA); + numberOfExpectedBytes = value; + } + + // Apend data to hash + { + VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); + VALIDATE(countedSectionBegin(&ctx->countedSections, numberOfExpectedBytes), + ERR_INVALID_DATA); + sha_256_append(&ctx->hashContext, varDataBuffer, varSize); + } + + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; + signTx_ui_runStep_simple(); +} + +// ======================= END COUNTED SECTION =========================== + +__noinline_due_to_stack__ void signTx_handleEndCountedSectionAPDU( + uint8_t p2, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, + size_t constSize, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks + TRACE_STACK_USAGE(); + { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + + // Validate const data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + { + VALIDATE(constSize == 0, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); + } + + // Apend data to hash (no data) + { VALIDATE(countedSectionEnd(&ctx->countedSections), ERR_INVALID_DATA); } + + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; + signTx_ui_runStep_simple(); +} + // ============================== WITNESS ============================== enum { @@ -283,11 +374,12 @@ static void signTx_handleWitness_ui_runStep() { UI_STEP_END(HANDLE_WITNESS_STEP_INVALID); } -__noinline_due_to_stack__ void signTx_handleWitnessAPDU(uint8_t p2, - MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, - size_t constSize, - uint8_t* varDataBuffer, - size_t varSize) { +__noinline_due_to_stack__ void signTx_handleWitnessAPDU( + uint8_t p2, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { // sanity checks TRACE_STACK_USAGE(); { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } @@ -328,10 +420,11 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU(uint8_t p2, ctx->value[outlen] = 0; } - // Hash - this is the last call, we finalize it + // Hash - this is the last call, we finalize it + counted sections uint8_t hashBuf[32]; explicit_bzero(hashBuf, SIZEOF(hashBuf)); { + VALIDATE(countedSectionFinalize(&ctx->countedSections), ERR_INVALID_DATA); sha_256_finalize(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); TRACE("SHA_256_finalize, resulting hash:"); TRACE_BUFFER(hashBuf, 32); @@ -461,9 +554,9 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { CASE(0x02, signTx_handleAppendConstDataAPDU); CASE(0x03, signTx_handleShowMessageAPDU); CASE(0x04, signTx_handleShowDataAPDU); - /* CASE(0x05, signTx_handleStartCountedSectionAPDU); - CASE(0x06, signTx_handleEndCountedSectionAPDU); - CASE(0x07, signTx_handleStoreValueAPDU);*/ + CASE(0x05, signTx_handleStartCountedSectionAPDU); + CASE(0x06, signTx_handleEndCountedSectionAPDU); + /* CASE(0x07, signTx_handleStoreValueAPDU);*/ CASE(0x10, signTx_handleWitnessAPDU); DEFAULT(NULL) #undef CASE @@ -484,6 +577,8 @@ void signTransaction_handleAPDU(uint8_t p1, sha_256_init(&ctx->hashContext); TRACE("Integrity check init"); integrityCheckInit(&ctx->integrity); + TRACE("Counted sections init"); + countedSectionInit(&ctx->countedSections); } // Parse APDU into const and non-const part diff --git a/src/signTransaction.h b/src/signTransaction.h index 15e639f5..087bce9a 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -6,6 +6,7 @@ #include "fio.h" #include "keyDerivation.h" #include "signTransactionIntegrity.h" +#include "signTransactionCountedSection.h" handler_fn_t signTransaction_handleAPDU; @@ -17,6 +18,7 @@ handler_fn_t signTransaction_handleAPDU; typedef struct { sha_256_context_t hashContext; tx_integrity_t integrity; + tx_counted_section_t countedSections; int ui_step; char key[MAX_DISPLAY_KEY_LENGTH]; diff --git a/src/signTransactionCountedSection.c b/src/signTransactionCountedSection.c index 0def0c28..3d48e7f5 100644 --- a/src/signTransactionCountedSection.c +++ b/src/signTransactionCountedSection.c @@ -10,26 +10,33 @@ void countedSectionInit(tx_counted_section_t *cs) { cs->initialized_magic = TX_COUNTED_SECTION_INITIALIZED_MAGIC; } -bool countedSectionBegin(tx_counted_section_t *cs, uint16_t expectedLength) { - STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); +bool countedSectionBegin(tx_counted_section_t *cs, uint32_t expectedLength) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, + "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); - //too deep nesting - if(cs->currentLevel >= MAX_NESTED_COUNTED_SECTIONS) { - return false; + // too deep nesting + if (cs->currentLevel >= MAX_NESTED_COUNTED_SECTIONS) { + return false; } - cs->currentLevel++; - cs->count[cs->currentLevel-1] = expectedLength; + cs->currentLevel++; + cs->count[cs->currentLevel - 1] = expectedLength; return true; } -bool countedSectionProcess(tx_counted_section_t *cs, uint16_t expectedLength) { - STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); +bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength) { + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, + "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); - for(size_t i=0; icurrentLevel; i++) { + for (size_t i = 0; i < cs->currentLevel; i++) { + TRACE("countedSectionProcess %d/%d: We have %d, use %d.", + (int) (i + 1), + (int) cs->currentLevel, + (int) cs->count[i], + (int) expectedLength); if (cs->count[i] < expectedLength) { return false; } @@ -39,7 +46,8 @@ bool countedSectionProcess(tx_counted_section_t *cs, uint16_t expectedLength) { } bool countedSectionEnd(tx_counted_section_t *cs) { - STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, + "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); @@ -49,7 +57,7 @@ bool countedSectionEnd(tx_counted_section_t *cs) { } // Counted section mismatch - if (cs->count[cs->currentLevel-1] != 0) { + if (cs->count[cs->currentLevel - 1] != 0) { return false; } @@ -58,7 +66,8 @@ bool countedSectionEnd(tx_counted_section_t *cs) { } bool countedSectionFinalize(tx_counted_section_t *cs) { - STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); + STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, + "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); return (cs->currentLevel == 0); diff --git a/src/signTransactionCountedSection.h b/src/signTransactionCountedSection.h index eabb9343..362e8075 100644 --- a/src/signTransactionCountedSection.h +++ b/src/signTransactionCountedSection.h @@ -6,18 +6,18 @@ #define MAX_NESTED_COUNTED_SECTIONS 5 -//currencLevel=1 strores value on count[0], etc... +// currencLevel=1 strores value on count[0], etc... typedef struct { - uint16_t initialized_magic; - uint16_t count[MAX_NESTED_COUNTED_SECTIONS]; + uint32_t initialized_magic; + uint32_t count[MAX_NESTED_COUNTED_SECTIONS]; uint8_t currentLevel; } tx_counted_section_t; void countedSectionInit(tx_counted_section_t *cs); -bool countedSectionBegin(tx_counted_section_t *cs, uint16_t expectedLength); +bool countedSectionBegin(tx_counted_section_t *cs, uint32_t expectedLength); -bool countedSectionProcess(tx_counted_section_t *cs, uint16_t expectedLength); +bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength); bool countedSectionEnd(tx_counted_section_t *cs); diff --git a/src/signTransactionCountedSection_test.c b/src/signTransactionCountedSection_test.c index 284df202..1d70592a 100644 --- a/src/signTransactionCountedSection_test.c +++ b/src/signTransactionCountedSection_test.c @@ -84,7 +84,6 @@ static void correct_test() { ASSERT(countedSectionEnd(&cs)); } - void run_countedSection_test() { tooMuchNesting_test(); finalizeOnNonZeroLevel_test(); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 4daa8c81..c828d404 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -7,9 +7,12 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x8a, 0xe3, 0x7f, 0xe4, 0x95, 0x02, 0x7a, 0xc1, 0x09, 0xde, 0x2e, 0xe3, 0xf7, 0x95, 0x39, 0x14, 0x0f, 0xd5, 0x6a, 0xa5, 0x6a, 0x50, 0xd3, 0xe9, 0x96, 0x83, 0x0e, 0x03, 0x3e, 0xda, 0x36, 0x76}, - {0xf3, 0xa5, 0xd8, 0xa3, 0x3f, 0x25, 0x13, 0xa3, 0xdd, 0x2a, 0xc0, - 0xc6, 0x37, 0x43, 0xc8, 0x5a, 0x5c, 0xe9, 0x24, 0x9d, 0x36, 0xd6, - 0xef, 0x32, 0xe8, 0xf1, 0x20, 0x38, 0x6e, 0xe9, 0x2c, 0x69}, + {0xe6, 0x61, 0x26, 0xce, 0x75, 0x57, 0xf1, 0x30, 0xca, 0x99, 0xd7, + 0xa3, 0x05, 0x1c, 0x81, 0x36, 0x80, 0xfa, 0x41, 0x02, 0xd7, 0x91, + 0x5c, 0xbd, 0x68, 0xe6, 0xe3, 0x61, 0xef, 0x85, 0x71, 0x03}, + {0x2c, 0x55, 0x0f, 0x1f, 0x21, 0x8d, 0x01, 0x3a, 0x02, 0x7d, 0x2b, + 0x98, 0xbe, 0xfd, 0x5b, 0x82, 0x31, 0xc5, 0x7d, 0xcf, 0xe3, 0x63, + 0x45, 0x6a, 0x6e, 0x9c, 0x9c, 0xcf, 0xb7, 0xa5, 0x3b, 0x30}, #endif }; diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index b9ae52ea..fc99fcf4 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -4,38 +4,69 @@ #include "textUtils.h" #include "fio.h" -static void parse_bufferShowAsHex(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { +static bool isNumberType(value_format_t format) { + return (format >= 0x10 && format < 0x20); +} + +// Returns number of bytes read +// Based on: +// https://github.com/fioprotocol/fiojs/blob/10848a02983a4b5b7f185c90bc96fb78e9ab0a6f/src/chain-serialize.ts#L259 +// As of my understanding, allowed values are between 0 and UINT32_MAX +static uint8_t getNumberFromVarUInt(const uint8_t *value, uint8_t valueLen, uint64_t *number) { + ASSERT(number != NULL); + uint8_t bitShift = 0; + uint8_t readPosition = 0; + *number = 0; + + while (true) { + VALIDATE(readPosition < valueLen, ERR_INVALID_DATA); + uint8_t nextByte = value[readPosition]; + *number |= ((uint64_t) (nextByte & 0x7f)) << bitShift; + bitShift += 7; + readPosition++; + TRACE("readPosition: %d, nextByte:%d, Value read: %d,%d", + (int) readPosition, + (int) nextByte, + (int) ((*number) / 0x100000000), + (int) *(number)); + if (!(nextByte & 0x80)) { + break; + } + VALIDATE(readPosition < 9, + ERR_INVALID_DATA); // if we read more than 9 values we will owerflow uint64 + } + + TRACE("VarUInt conversion: Value read: %d,%d, Number of bytes: %d", + (int) ((*number) / 0x100000000), + (int) *(number), + (int) readPosition); + + return readPosition; +} + +//-------------------- STRING PARSING AND DISPLAYING FUNCTIONS ---------------------- + +static void displayBufferShowAsHex(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { VALIDATE(valueLen * 2 < MAX_DISPLAY_VALUE_LENGTH, ERR_INVALID_DATA); size_t outlen = encode_hex(value, valueLen, display, MAX_DISPLAY_VALUE_LENGTH); ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); display[outlen] = 0; } -static void parse_asciiString(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { +static void displayASCIIString(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { VALIDATE(valueLen < MAX_DISPLAY_VALUE_LENGTH, ERR_INVALID_DATA); str_validateTextBuffer(value, valueLen); memcpy(display, value, valueLen); display[valueLen] = 0; } -static void parse_fioAmount(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { - uint64_t amount = 0; - VALIDATE(valueLen == SIZEOF(amount), ERR_INVALID_DATA); - memcpy(&amount, value, SIZEOF(amount)); - size_t outlen = str_formatFIOAmount(amount, display, MAX_DISPLAY_VALUE_LENGTH); - ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); - display[outlen] = 0; -} - -static void parse_name(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { +static void displayName(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { VALIDATE(valueLen == NAME_VAR_LENGTH, ERR_INVALID_DATA); uint8array_name_to_string(value, valueLen, @@ -43,52 +74,152 @@ static void parse_name(const uint8_t *value, MAX_DISPLAY_VALUE_LENGTH); // null terminated, no return vallue } -static void parse_uint64(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { - uint64_t number = 0; - VALIDATE(valueLen == SIZEOF(number), ERR_INVALID_DATA); - memcpy(&number, value, SIZEOF(number)); +//-------------------- NUMBER PARSING FUNCTIONS ---------------------- + +static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { + VALIDATE(valueLen == SIZEOF(*number), ERR_INVALID_DATA); + memcpy(number, value, SIZEOF(*number)); +} + +static void parseVarUInt32(const uint8_t *value, uint8_t valueLen, uint64_t *number) { + uint8_t read = getNumberFromVarUInt(value, valueLen, number); + VALIDATE(read == valueLen, ERR_INVALID_DATA); + VALIDATE(*number <= UINT32_MAX, ERR_INVALID_DATA); +} + +//-------------------- NUMBER VALIDATING FUNCTIONS ---------------------- + +static void validateNumber(value_buffer_validation_t validation, + uint64_t arg1, + uint64_t arg2, + uint64_t number) { + if (validation == VALUE_VALIDATION_NUMBER) { + VALIDATE(arg1 <= number && number <= arg2, ERR_INVALID_DATA); + } +} + +//-------------------- NUMBER DISPLAYING FUNCTIONS ---------------------- + +static void displayFioAmount(uint64_t amount, char display[MAX_DISPLAY_VALUE_LENGTH]) { + size_t outlen = str_formatFIOAmount(amount, display, MAX_DISPLAY_VALUE_LENGTH); + ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); + display[outlen] = 0; +} + +static void displayNumber(uint64_t number, char display[MAX_DISPLAY_VALUE_LENGTH]) { size_t outlen = str_formatUint64(number, display, MAX_DISPLAY_VALUE_LENGTH); ASSERT(outlen < MAX_DISPLAY_VALUE_LENGTH); display[outlen] = 0; } -//-------------------- MAIN FUNCITON ---------------------- +//-------------------- BUFFER VALIDATION ---------------------- -void parseValue(value_format_t format, - value_buffer_validation_t validation, - uint8_t arg1, - uint8_t arg2, - const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { +void bufferValidation(value_format_t format, + value_buffer_validation_t validation, + uint64_t arg1, + uint64_t arg2, + MARK_UNUSED const uint8_t *value, + uint8_t valueLen) { // buffer validation switch (validation) { -#define CASE(VALIDATION, CHECK) \ - case VALIDATION: { \ - VALIDATE(CHECK, ERR_INVALID_DATA); \ - break; \ +#define CASE(VALIDATION, condition) \ + case VALIDATION: { \ + VALIDATE(condition, ERR_INVALID_DATA); \ + break; \ } - - CASE(VALUE_VALIDATION_NONE, arg2 == 0 && arg2 == 0); + CASE(VALUE_VALIDATION_NONE, arg1 == 0 && arg2 == 0); CASE(VALUE_VALIDATION_INBUFFER_LENGTH, arg1 <= valueLen && arg2 >= valueLen); + CASE(VALUE_VALIDATION_NUMBER, + isNumberType(format)); // number validation implies number type default: THROW(ERR_INVALID_DATA); #undef CASE } +} + +//-------------------- MAIN FUNCITONS ---------------------- + +void parseValueToUInt64(value_format_t format, + value_buffer_validation_t validation, + uint8_t argument1[8], + uint8_t argument2[8], + const uint8_t *value, + uint8_t valueLen, + uint64_t *number) { + uint64_t arg1 = 0; + uint64_t arg2 = 0; + memcpy(&arg1, argument1, 8); + memcpy(&arg2, argument2, 8); + + bufferValidation(format, validation, arg1, arg2, value, valueLen); + + switch (format) { + case VALUE_FORMAT_FIO_AMOUNT: { + parseUInt64(value, valueLen, number); + validateNumber(validation, arg1, arg2, *number); + break; + } + case VALUE_FORMAT_UINT64: { + parseUInt64(value, valueLen, number); + validateNumber(validation, arg1, arg2, *number); + break; + } + case VALUE_FORMAT_VARUINT32: { + parseVarUInt32(value, valueLen, number); + validateNumber(validation, arg1, arg2, *number); + break; + } + default: + THROW(ERR_INVALID_DATA); +#undef CASE + } +} + +void parseValueToDisplay(value_format_t format, + value_buffer_validation_t validation, + uint8_t argument1[8], + uint8_t argument2[8], + const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + uint64_t arg1 = 0; + uint64_t arg2 = 0; + memcpy(&arg1, argument1, 8); + memcpy(&arg2, argument2, 8); + + bufferValidation(format, validation, arg1, arg2, value, valueLen); - // parsing switch (format) { -#define CASE(FORMAT, HANDLER) \ - case FORMAT: \ - return HANDLER(value, valueLen, display); - - CASE(VALUE_FORMAT_BUFFER_SHOW_AS_HEX, parse_bufferShowAsHex); - CASE(VALUE_FORMAT_ASCII_STRING, parse_asciiString); - CASE(VALUE_FORMAT_FIO_AMOUNT, parse_fioAmount); - CASE(VALUE_FORMAT_NAME, parse_name); - CASE(VALUE_UINT64, parse_uint64); + case VALUE_FORMAT_BUFFER_SHOW_AS_HEX: + displayBufferShowAsHex(value, valueLen, display); + break; + case VALUE_FORMAT_ASCII_STRING: + displayASCIIString(value, valueLen, display); + break; + case VALUE_FORMAT_NAME: + displayName(value, valueLen, display); + break; + case VALUE_FORMAT_FIO_AMOUNT: { + uint64_t amount; + parseUInt64(value, valueLen, &amount); + validateNumber(validation, arg1, arg2, amount); + displayFioAmount(amount, display); + break; + } + case VALUE_FORMAT_UINT64: { + uint64_t number; + parseUInt64(value, valueLen, &number); + validateNumber(validation, arg1, arg2, number); + displayNumber(number, display); + break; + } + case VALUE_FORMAT_VARUINT32: { + uint64_t number; + parseVarUInt32(value, valueLen, &number); + validateNumber(validation, arg1, arg2, number); + displayNumber(number, display); + break; + } default: THROW(ERR_INVALID_DATA); #undef CASE diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index 0f915148..f95d072f 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -5,25 +5,40 @@ typedef enum { VALUE_FORMAT_UNKNOWN = 0x00, + + // String types VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01, VALUE_FORMAT_ASCII_STRING = 0x02, VALUE_FORMAT_NAME = 0x03, + + // Number VALUE_FORMAT_FIO_AMOUNT = 0x10, - VALUE_UINT64 = 0x14, + VALUE_FORMAT_UINT64 = 0x14, + VALUE_FORMAT_VARUINT32 = 0x17, } value_format_t; typedef enum { VALUE_VALIDATION_UNKNOWN = 0, VALUE_VALIDATION_NONE = 1, VALUE_VALIDATION_INBUFFER_LENGTH = 2, + + VALUE_VALIDATION_NUMBER = 3, } value_buffer_validation_t; -void parseValue(value_format_t format, - value_buffer_validation_t validation, - uint8_t arg1, - uint8_t arg2, - const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]); +void parseValueToDisplay(value_format_t format, + value_buffer_validation_t validation, + uint8_t argument1[8], + uint8_t argument2[8], + const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]); + +void parseValueToUInt64(value_format_t format, + value_buffer_validation_t validation, + uint8_t argument1[8], + uint8_t argument2[8], + const uint8_t *value, + uint8_t valueLen, + uint64_t *number); #endif // H_FIO_APP_SIGN_TRANSACTION_PARSE diff --git a/src/utils.h b/src/utils.h index cecaf932..1124e405 100644 --- a/src/utils.h +++ b/src/utils.h @@ -51,12 +51,11 @@ // start using such variable. deprecated deals with that. #define MARK_UNUSED __attribute__((unused, deprecated)) #ifdef DEVEL -#define MARK_UNUSED_NO_DEVEL +#define MARK_UNUSED_NO_DEVEL #else #define MARK_UNUSED_NO_DEVEL __attribute__((unused, deprecated)) #endif - // Note: inlining can increase stack memory usage // where we really do not want it #define __noinline_due_to_stack__ __attribute__((noinline)) diff --git a/test-integration/signTransactionCommandsCountedSection.js b/test-integration/signTransactionCommandsCountedSection.js new file mode 100644 index 00000000..01f79e27 --- /dev/null +++ b/test-integration/signTransactionCommandsCountedSection.js @@ -0,0 +1,312 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTION instructions"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Append to transaction (32 bytes) + const buffer13 = getAPDUDataBuffer("00000000000000000000000000000000000000000000000000000000000000000", ""); + const promise13 = transport.send(215, 0x20, 0x02, 0, buffer13); + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer14 = getAPDUDataBuffer("1701000000000000000000000000000000000", "40"); // value - 64 + const promise14 = transport.send(215, 0x20, 0x05, 0, buffer14); + const response14 = await promise14; + assert.equal(response14.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer15 = getAPDUDataBuffer("1701000000000000000000000000000000000", "20"); // value - 32 + const promise15 = transport.send(215, 0x20, 0x05, 0, buffer15); + const response15 = await promise15; + assert.equal(response15.toString("hex"), "9000"); + + //Append to transaction (32 bytes) + const buffer16 = getAPDUDataBuffer("0000000000000000000000000000000000000000000000000000000000000000", ""); + const promise16 = transport.send(215, 0x20, 0x02, 0, buffer16); + const response16 = await promise16; + assert.equal(response16.toString("hex"), "9000"); + + //END_COUNTED_SECTION + const buffer17 = getAPDUDataBuffer("", ""); + const promise17 = transport.send(215, 0x20, 0x06, 0, buffer17); + const response17 = await promise17; + assert.equal(response17.toString("hex"), "9000"); + + //Append to transaction (31 bytes) + const buffer18 = getAPDUDataBuffer("00000000000000000000000000000000000000000000000000000000000000", ""); + const promise18 = transport.send(215, 0x20, 0x02, 0, buffer18); + const response18 = await promise18; + assert.equal(response18.toString("hex"), "9000"); + + //END_COUNTED_SECTION + const buffer19 = getAPDUDataBuffer("", ""); + const promise19 = transport.send(215, 0x20, 0x06, 0, buffer19); + const response19 = await promise19; + assert.equal(response19.toString("hex"), "9000"); + + //Append to transaction (31 bytes) + const buffer20 = getAPDUDataBuffer("00000000000000000000000000000000000000000000000000000000000000", ""); + const promise20 = transport.send(215, 0x20, 0x02, 0, buffer20); + const response20 = await promise20; + assert.equal(response20.toString("hex"), "9000"); + + //END_COUNTED_SECTION + const buffer21 = getAPDUDataBuffer("", ""); + const promise21 = transport.send(215, 0x20, 0x06, 0, buffer21); + const response21 = await promise21; + assert.equal(response21.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer99 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise99 = transport.send(215, 0x20, 0x10, 0, buffer99); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm sign with"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response99 = await promise99; + + //The signed message should contain chainId + 0102030405 + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e" + + "8001" + + "0000000000000000000000000000000000000000000000000000000000000000" + + "40" + + "20" + + "0000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000" + , "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response99.slice(0, 65)); + assert.equal(response99.slice(65,65+32).toString("hex"), hash1); + assert.equal(response99.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Validation failure"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 03-number validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170300000000000000007f000000000000000", "8001"); // value - 128, 127 is max + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "VarInt32 incorrect format"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080"); + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "VarInt32 too many bytes"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080808080808080801"); //more than 9 bytes + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Too big for UInt32"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080808080808001"); //more than 9 bytes + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "too much nesting"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + await device.makeStartingScreenshot(); + } +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Unexpected end counted section"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //END_COUNTED_SECTION + const buffer12 = getAPDUDataBuffer("", ""); + const promise12 = transport.send(215, 0x20, 0x06, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Length mismatch"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + //END_COUNTED_SECTION + const buffer12 = getAPDUDataBuffer("", ""); + const promise12 = transport.send(215, 0x20, 0x06, 0, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); + diff --git a/test-integration/signTransactionCommandsShowData.js b/test-integration/signTransactionCommandsShowData.js index 47ae69ea..570342ba 100644 --- a/test-integration/signTransactionCommandsShowData.js +++ b/test-integration/signTransactionCommandsShowData.js @@ -35,7 +35,7 @@ console.log("This test requires app in DEVEL mode.") //!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. //------------------------------------------------------------------------------------- -testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - testnet"); +testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA instructions - testnet"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); @@ -45,40 +45,40 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) - const buffer12 = getAPDUDataBuffer("010200080509486578537472696e67", "0011223344556677"); + //SHOW DATA 01-hexstring, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("0102000000000000000008000000000000000509486578537472696e67", "0011223344556677"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await device.curlScreenShot(); device.curlButton("both", "Confirm message"); //!!!!!! const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); - //SHOW DATA 02-string, 01-no validation, 00-min, 00-max, 05-policy, Key = "String" (06537472696e67) - const buffer13 = getAPDUDataBuffer("020100000506537472696e67", "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "String" (06537472696e67) + const buffer13 = getAPDUDataBuffer("0201000000000000000000000000000000000506537472696e67", "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); const promise13 = transport.send(215, 0x20, 0x04, 0, buffer13); await device.curlScreenShot(); device.curlButton("both", "Confirm message"); //!!!!!! const response13 = await promise13; assert.equal(response13.toString("hex"), "9000"); - //SHOW DATA 03-name, 01-no validation, 00-min, 00-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" - const buffer14 = getAPDUDataBuffer("03010000050a4e616d65537472696e67", "0000980ad20ca85b"); + //SHOW DATA 03-name, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" + const buffer14 = getAPDUDataBuffer("030100000000000000000000000000000000050a4e616d65537472696e67", "0000980ad20ca85b"); const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); await device.curlScreenShot(); device.curlButton("both", "Confirm message"); //!!!!!! const response14 = await promise14; assert.equal(response14.toString("hex"), "9000"); - //SHOW DATA 10-amount, 01-no validation, 00-min, 00-max, 05-policy, Key = "Amount" (06416d6f756e74) - const buffer15 = getAPDUDataBuffer("100100000506416d6f756e74", "0100000000000000"); + //SHOW DATA 10-amount, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "Amount" (06416d6f756e74) + const buffer15 = getAPDUDataBuffer("1001000000000000000000000000000000000506416d6f756e74", "0100000000000000"); const promise15 = transport.send(215, 0x20, 0x04, 0, buffer15); await device.curlScreenShot(); device.curlButton("both", "Confirm message"); //!!!!!! const response15 = await promise15; assert.equal(response15.toString("hex"), "9000"); - //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 05-policy, Key = "Number" (064e756d626572) - const buffer16 = getAPDUDataBuffer("1401000005064e756d626572", "0200000000000000"); + //SHOW DATA 14-uint64, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "Number" (064e756d626572) + const buffer16 = getAPDUDataBuffer("14010000000000000000000000000000000005064e756d626572", "0200000000000000"); const promise16 = transport.send(215, 0x20, 0x04, 0, buffer16); await device.curlScreenShot(); device.curlButton("both", "Confirm message"); //!!!!!! @@ -86,8 +86,8 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ assert.equal(response16.toString("hex"), "9000"); //This is to test do not show policy - //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 02-policy, Key = "Number" (064e756d626572) - const buffer17 = getAPDUDataBuffer("1401000002064e756d626572", "0300000000000000"); + //SHOW DATA 14-uint64, 01-no validation, 0000000000000000-min, 0000000000000000-max, 02-policy, Key = "Number" (064e756d626572) + const buffer17 = getAPDUDataBuffer("14010000000000000000000000000000000002064e756d626572", "0300000000000000"); const promise17 = transport.send(215, 0x20, 0x04, 0, buffer17); const response17 = await promise17; assert.equal(response17.toString("hex"), "9000"); @@ -126,8 +126,8 @@ testStep(" - - -", "Unknown data type leads to failure"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 00-unknown, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) - const buffer12 = getAPDUDataBuffer("000200080509486578537472696e67", "0011223344556677"); + //SHOW DATA 00-unknown, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("0002000000000000000008000000000000000509486578537472696e67", "0011223344556677"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -144,8 +144,8 @@ testStep(" - - -", "Buffer does not pass length validation"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" (09486578537472696e67) - const buffer12 = getAPDUDataBuffer("010200080509486578537472696e67", "001122334455667788"); + //SHOW DATA 01-hexstring, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "HexString" (09486578537472696e67) + const buffer12 = getAPDUDataBuffer("0102000000000000000008000000000000000509486578537472696e67", "001122334455667788"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -162,8 +162,8 @@ testStep(" - - -", "Key length does not match"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "HexString" 08(09)486578537472696e67 - const buffer12 = getAPDUDataBuffer("010200080508486578537472696e67", "0011223344556677"); + //SHOW DATA 01-hexstring, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "HexString" 08(09)486578537472696e67 + const buffer12 = getAPDUDataBuffer("0102000000000000000008000000000000000508486578537472696e67", "0011223344556677"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -180,8 +180,8 @@ testStep(" - - -", "Key contains invalid symbols"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "?exString" 0900(48)6578537472696e67 - const buffer12 = getAPDUDataBuffer("010200080509ff6578537472696e67", "0011223344556677"); + //SHOW DATA 01-hexstring, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "?exString" 0900(48)6578537472696e67 + const buffer12 = getAPDUDataBuffer("0102000000000000000008000000000000000509ff6578537472696e67", "0011223344556677"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -198,8 +198,8 @@ testStep(" - - -", "Key too long"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 01-hexstring, 02-validate length, 00-min, 08-max, 05-policy, Key = "01234567890123456789" - const buffer12 = getAPDUDataBuffer("0102000805143031323334353637383930313233343536373839", "0011223344556677"); + //SHOW DATA 01-hexstring, 02-validate length, 0000000000000000-min, 0800000000000000-max, 05-policy, Key = "01234567890123456789" + const buffer12 = getAPDUDataBuffer("01020000000000000000080000000000000005143031323334353637383930313233343536373839", "0011223344556677"); const promise12 = transport.send(215, 0x20, 0x04, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -216,8 +216,8 @@ testStep(" - - -", "String value contains non readable characters"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 02-string, 01-no validation, 00-min, 00-max, 05-policy, Key = "String" (06537472696e67) - const buffer13 = getAPDUDataBuffer("020100000506537472696e67", "4eff636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "String" (06537472696e67) + const buffer13 = getAPDUDataBuffer("0201000000000000000000000000000000000506537472696e67", "4eff636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); const promise13 = transport.send(215, 0x20, 0x04, 0, buffer13); await assert.rejects(promise13, err(0x6e07)); @@ -234,8 +234,8 @@ testStep(" - - -", "Name string has incorrect length"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 03-name, 01-no validation, 00-min, 00-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" - const buffer14 = getAPDUDataBuffer("03010000050a4e616d65537472696e67", "00980ad20ca85b"); + //SHOW DATA 03-name, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "NameString" (0a4e616d65537472696e67) Shows: "fio.token" + const buffer14 = getAPDUDataBuffer("030100000000000000000000000000000000050a4e616d65537472696e67", "00980ad20ca85b"); const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); await assert.rejects(promise14, err(0x6e07)); @@ -252,8 +252,8 @@ testStep(" - - -", "Amount incorrect length"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 10-amount, 01-no validation, 00-min, 00-max, 05-policy, Key = "Amount" (06416d6f756e74) - const buffer15 = getAPDUDataBuffer("100100000506416d6f756e74", "010000000000000000"); + //SHOW DATA 10-amount, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "Amount" (06416d6f756e74) + const buffer15 = getAPDUDataBuffer("1001000000000000000000000000000000000506416d6f756e74", "010000000000000000"); const promise15 = transport.send(215, 0x20, 0x04, 0, buffer15); await assert.rejects(promise15, err(0x6e07)); @@ -270,8 +270,8 @@ testStep(" - - -", "UInt64 incorrect length"); const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - //SHOW DATA 14-uint64, 01-no validation, 00-min, 00-max, 05-policy, Key = "Number" (064e756d626572) - const buffer16 = getAPDUDataBuffer("1401000005064e756d626572", "02000000000000"); + //SHOW DATA 14-uint64, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "Number" (064e756d626572) + const buffer16 = getAPDUDataBuffer("14010000000000000000000000000000000005064e756d626572", "02000000000000"); const promise16 = transport.send(215, 0x20, 0x04, 0, buffer16); await assert.rejects(promise16, err(0x6e07)); diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.01.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.03.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.07.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.09.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.11.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.11.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.13.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.15.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.17.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.19.png b/test-integration/snapshots/signTransactionCommandsCountedSection/nanos.19.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Wed, 22 Jun 2022 15:30:13 +0200 Subject: [PATCH 17/83] Storage Commands --- MakefileTest.mk | 1 + doc/ins_sign_tx_commands.md | 5 +- src/diffieHellmann_test.c | 6 +- src/signTransaction.c | 96 +++++++++++- src/signTransaction.h | 16 ++ src/signTransactionCountedSection.c | 2 +- src/signTransactionIntegrity.c | 3 + .../signTransactionCommandsStorage.js | 145 ++++++++++++++++++ .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 406 bytes .../nanos.04.png | Bin 0 -> 424 bytes .../nanos.05.png | Bin 0 -> 424 bytes .../nanos.06.png | Bin 0 -> 356 bytes .../nanos.07.png | Bin 0 -> 426 bytes .../nanos.08.png | Bin 0 -> 322 bytes .../nanos.09.png | Bin 0 -> 426 bytes .../nanos.10.png | Bin 0 -> 322 bytes .../nanos.11.png | Bin 0 -> 426 bytes 19 files changed, 263 insertions(+), 11 deletions(-) create mode 100644 test-integration/signTransactionCommandsStorage.js create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsStorage/nanos.11.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 9bea69d2..27c7879d 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -44,6 +44,7 @@ speculos_port_5001_unit_test_internal: $(call run_nodejs_test,5001,40001,signTransactionCommandsBasic.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsShowData.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsCountedSection.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsStorage.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md index a828b6fd..99814f88 100644 --- a/doc/ins_sign_tx_commands.md +++ b/doc/ins_sign_tx_commands.md @@ -28,7 +28,7 @@ ValueFormat: NAME, STRING, UINT64 (1b) ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) ValueValidationArg 1 (8b) ValueValidationArg 2 (8b) -Policy (1b) +Policy + storage (1b) higher 4 bits storage, lower 4 bits policy Key Len: Key ---------- @@ -48,9 +48,8 @@ END_COUNTED_SECTION ---------- ==================== STORE_VALUE +P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b ---------- -STORED_1/STORED_2/STORED_3 -ValueValidation: NONE, LENGTH(min, max) ---------- Value ==================== diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index ba8565f0..98460582 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -130,16 +130,16 @@ void run_dh_encode_init_append_finalize_tests() { const char* inBufferHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" "bbccddeeff"; - uint8_t inBuffer[200]; + uint8_t inBuffer[100]; size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); const char* expectedHex = "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6" "ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f" "449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; - uint8_t expected[300]; + uint8_t expected[150]; decode_hex(expectedHex, expected, SIZEOF(expected)); - uint8_t outBuffer[200]; + uint8_t outBuffer[150]; size_t outBufferLength = 0; outBufferLength = dh_encode(&pathSpec, diff --git a/src/signTransaction.c b/src/signTransaction.c index 1bcd585d..8ce0795a 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -16,6 +16,17 @@ static ins_sign_transaction_context_t* ctx = &(instructionState.signTransactionContext); +typedef enum { + VALUE_STORAGE_CHECK_NO = 0x00, + VALUE_STORAGE_CHECK_R1 = 0x10, + VALUE_STORAGE_CHECK_R2 = 0x20, + VALUE_STORAGE_CHECK_R3 = 0x30, +} tx_storage_check_t; + +enum { + TX_STORAGE_INITIALIZED_MAGIC = 12345, +}; + // ============================== MISC ============================== static void respondSuccessEmptyMsg() { @@ -212,7 +223,7 @@ __noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, uint8_t valueValidation; uint8_t valueValidationArg1[8]; uint8_t valueValidationArg2[8]; - uint8_t valuePolicy; + uint8_t valuePolicyAndStorage; uint8_t keyLen; uint8_t key[MAX_DISPLAY_KEY_LENGTH]; }* constData = (void*) constDataBuffer; @@ -243,9 +254,39 @@ __noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, sha_256_append(&ctx->hashContext, varDataBuffer, varSize); } - // Policy - + // Stograge { - switch (constData->valuePolicy) { + tx_storage_check_t storage = constData->valuePolicyAndStorage & 0xF0; + TRACE("Storage request :%d, Stored length %d,%d,%d", + (int) storage, + (int) ctx->storage.storedValueLen1, + (int) ctx->storage.storedValueLen2, + (int) ctx->storage.storedValueLen3); + TRACE("Initialized: %d", ctx->storage.initialized_magic); + switch (storage) { +#define CASE_STORAGE_EQUALS(n) \ + case VALUE_STORAGE_CHECK_R##n: { \ + ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ + ASSERT(ctx->storage.storedValueLen##n <= SIZEOF(ctx->storage.storedValue##n)); \ + VALIDATE(ctx->storage.storedValueLen##n == varSize, ERR_INVALID_DATA); \ + VALIDATE(!memcmp(ctx->storage.storedValue##n, varDataBuffer, varSize), ERR_INVALID_DATA); \ + break; \ + } + CASE_STORAGE_EQUALS(1); + CASE_STORAGE_EQUALS(2); + CASE_STORAGE_EQUALS(3); + case VALUE_STORAGE_CHECK_NO: + break; + default: + THROW(ERR_INVALID_DATA); +#undef CASE_STORAGE_EQUALS + } + } + + // Policy + { + security_policy_t policy = constData->valuePolicyAndStorage & 0x0F; + switch (policy) { #define CASE(POLICY, UI_STEP) \ case POLICY: { \ ctx->ui_step = UI_STEP; \ @@ -341,6 +382,50 @@ __noinline_due_to_stack__ void signTx_handleEndCountedSectionAPDU( signTx_ui_runStep_simple(); } +// ======================= STORE_VALUE =========================== + +__noinline_due_to_stack__ void signTx_handleStoreValueAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks + TRACE_STACK_USAGE(); + { + VALIDATE(p2 >= 1 && p2 <= 3, ERR_INVALID_REQUEST_PARAMETERS); + } // as of now we have three slots + + TRACE("Storing to %d", (int) p2); + TRACE_BUFFER(varDataBuffer, varSize); + + // Validate const data + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + { + VALIDATE(constSize == 0, ERR_INVALID_DATA); + switch (p2) { +#define CASE(n) \ + case n: { \ + ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ + VALIDATE(varSize <= SIZEOF(ctx->storage.storedValue##n), ERR_INVALID_DATA); \ + ctx->storage.storedValueLen##n = varSize; \ + memcpy(ctx->storage.storedValue##n, varDataBuffer, varSize); \ + break; \ + } + CASE(1); + CASE(2); + CASE(3); + default: + THROW(ERR_NOT_IMPLEMENTED); +#undef CASE + } + } + + // Run ui step + ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; + signTx_ui_runStep_simple(); +} + // ============================== WITNESS ============================== enum { @@ -556,7 +641,7 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { CASE(0x04, signTx_handleShowDataAPDU); CASE(0x05, signTx_handleStartCountedSectionAPDU); CASE(0x06, signTx_handleEndCountedSectionAPDU); - /* CASE(0x07, signTx_handleStoreValueAPDU);*/ + CASE(0x07, signTx_handleStoreValueAPDU); CASE(0x10, signTx_handleWitnessAPDU); DEFAULT(NULL) #undef CASE @@ -579,6 +664,9 @@ void signTransaction_handleAPDU(uint8_t p1, integrityCheckInit(&ctx->integrity); TRACE("Counted sections init"); countedSectionInit(&ctx->countedSections); + TRACE("Storage init"); + explicit_bzero(&ctx->storage, SIZEOF(ctx->storage)); + ctx->storage.initialized_magic = TX_STORAGE_INITIALIZED_MAGIC; } // Parse APDU into const and non-const part diff --git a/src/signTransaction.h b/src/signTransaction.h index 087bce9a..7e971404 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -7,6 +7,7 @@ #include "keyDerivation.h" #include "signTransactionIntegrity.h" #include "signTransactionCountedSection.h" +#include handler_fn_t signTransaction_handleAPDU; @@ -15,14 +16,29 @@ handler_fn_t signTransaction_handleAPDU; #define MAX_APPEND_CONST_DATA_LEN 200 +typedef struct { + uint32_t initialized_magic; + + uint8_t storedValueLen1; + uint8_t storedValue1[8]; + + uint8_t storedValueLen2; + uint8_t storedValue2[8]; + + uint8_t storedValueLen3; + uint8_t storedValue3[64]; +} tx_value_storage_t; + typedef struct { sha_256_context_t hashContext; tx_integrity_t integrity; tx_counted_section_t countedSections; + tx_value_storage_t storage; int ui_step; char key[MAX_DISPLAY_KEY_LENGTH]; char value[MAX_DISPLAY_VALUE_LENGTH]; + } ins_sign_transaction_context_t; #endif // H_FIO_APP_SIGN_TRANSACTION diff --git a/src/signTransactionCountedSection.c b/src/signTransactionCountedSection.c index 3d48e7f5..846b389b 100644 --- a/src/signTransactionCountedSection.c +++ b/src/signTransactionCountedSection.c @@ -32,7 +32,7 @@ bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength) { ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); for (size_t i = 0; i < cs->currentLevel; i++) { - TRACE("countedSectionProcess %d/%d: We have %d, use %d.", + TRACE("%d/%d: We have %d, use %d.", (int) (i + 1), (int) cs->currentLevel, (int) cs->count[i], diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index c828d404..b96fa7f8 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -13,6 +13,9 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x2c, 0x55, 0x0f, 0x1f, 0x21, 0x8d, 0x01, 0x3a, 0x02, 0x7d, 0x2b, 0x98, 0xbe, 0xfd, 0x5b, 0x82, 0x31, 0xc5, 0x7d, 0xcf, 0xe3, 0x63, 0x45, 0x6a, 0x6e, 0x9c, 0x9c, 0xcf, 0xb7, 0xa5, 0x3b, 0x30}, + {0x3c, 0xc2, 0xa2, 0x0d, 0xfb, 0x3b, 0xde, 0xf4, 0xdd, 0x17, 0xf9, + 0x97, 0x1c, 0xc8, 0x42, 0x1a, 0xc3, 0x9f, 0x6a, 0x63, 0x9d, 0x0d, + 0x5d, 0x9f, 0xb4, 0x24, 0xcf, 0x6b, 0xe5, 0x7c, 0x38, 0x29}, #endif }; diff --git a/test-integration/signTransactionCommandsStorage.js b/test-integration/signTransactionCommandsStorage.js new file mode 100644 index 00000000..06c17e98 --- /dev/null +++ b/test-integration/signTransactionCommandsStorage.js @@ -0,0 +1,145 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign transaction using storage"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Store data to register1 + const buffer12 = getAPDUDataBuffer("", "001122334455"); + const promise12 = transport.send(215, 0x20, 0x07, 0x01, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //Store data to register3 + const buffer13 = getAPDUDataBuffer("", "00112233445566778899aa"); + const promise13 = transport.send(215, 0x20, 0x07, 0x03, buffer13); + const response13 = await promise13; + assert.equal(response13.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 01-no validation, 0000000000000000-min, 0000000000000000-max, 15-policy, Key = "HexString" (09486578537472696e67) + const buffer14 = getAPDUDataBuffer("0101000000000000000000000000000000001509486578537472696e67", "001122334455"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response14 = await promise14; + assert.equal(response14.toString("hex"), "9000"); + + //SHOW DATA 02-hexstring, 01-no validation, 0000000000000000-min, 0000000000000000-max, 35-policy, Key = "HexString" (09486578537472696e67) + const buffer15 = getAPDUDataBuffer("0101000000000000000000000000000000003509486578537472696e67", "00112233445566778899aa"); + const promise15 = transport.send(215, 0x20, 0x04, 0, buffer15); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response15 = await promise15; + assert.equal(response15.toString("hex"), "9000"); + + //Finish path=44'/235'/0'/0/0 + const buffer19 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const promise19 = transport.send(215, 0x20, 0x10, 0, buffer19); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm sign with"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response19 = await promise19; + + //The signed message should contain chainId + 0102030405 + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e" + +"001122334455" + +"00112233445566778899aa", "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response19.slice(0, 65)); + assert.equal(response19.slice(65,65+32).toString("hex"), hash1); + assert.equal(response19.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Storing too long data"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Store data to register1 + const buffer12 = getAPDUDataBuffer("", "00112233445566778899"); + const promise12 = transport.send(215, 0x20, 0x07, 0x01, buffer12); + await assert.rejects(promise12, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Data do not match"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Store data to register1 + const buffer12 = getAPDUDataBuffer("", "001122334455"); + const promise12 = transport.send(215, 0x20, 0x07, 0x01, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //SHOW DATA 01-hexstring, 01-no validation, 0000000000000000-min, 0000000000000000-max, 15-policy, Key = "HexString" (09486578537472696e67) + const buffer14 = getAPDUDataBuffer("0101000000000000000000000000000000001509486578537472696e67", "001122334456"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await assert.rejects(promise14, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- + + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); + diff --git a/test-integration/snapshots/signTransactionCommandsStorage/nanos.01.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsStorage/nanos.03.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b5768818c66f0f3342313be71176fc82197da5 GIT binary patch literal 406 zcmV;H0crk;P);^&i!AEnWQIy0b|Yq00029dB0LWvvd8YXczFK(EwS= zMR-~tfWvEZ+rK}f3wHeRz3r#z;arbjBr+Sj_+U&8z`8A~vcxcVRMAb&!M`hV|wonCq}|+vSbKS>NJct)mU3`NdrV=b3hB$H_&f+ea#8UTNcxo4ugzheUzjMIx=AXoN_oDned?D?=whePOhBXncPh@)qko z374V_Zlw|FKpEK@Sl$3sM{MW0V~1IjVESPcf|O*nuUy0hfu81}MEV)e!goLy?K?RZ zX=2oP1{i>Sf6}W}N#9nc2UIXI0RR91007*U55Vd9I_--qSO5S307*qoM6N<$g2A+} AssI20 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsStorage/nanos.04.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..5929bb69b56a7c7504f1b10223572280f66d289f GIT binary patch literal 424 zcmV;Z0ayNsP)!_6l-qx*U#!gz5n^W-9Lu&v4t{8bpU^6Zf?0T%kJg_E8#U+G6V%}%A-v;*v7ouD;mp!ikBjAHfH0y_RfGqMlB(mn~lT-_9 z%4MwgTSJy)*F4p#hH^kr)4Y%!1*c}8BC+OodK=x6$j$P?ooZegD&3n^S1ed>*y~yE zBuwGpwl^X@8IOKag>21IbpK^Iz<&VJTEv6Bpoobn7U-Mo>|C9G5^h>QI0>;pFY}O- zeg>Jce#W_Pz^v6<0U;8j79-{W^)HcG-AAj`3znf%l+wIs?6wR50002MH}MBfiWhpR S(Zjd^0000?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsStorage/nanos.09.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsStorage/nanos.11.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.11.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Thu, 23 Jun 2022 21:53:08 +0200 Subject: [PATCH 18/83] Transaction templates The code now pases original integration tests --- doc/ins_sign_tx_commands.md | 4 +- ledgerjs-fio/src/errors/invalidDataReason.ts | 1 + .../src/interactions/signTransaction.ts | 128 ++-------- .../transactionTemplates/commands.ts | 99 ++++++++ .../template_trnsfiopubky.ts | 235 ++++++++++++++++++ ledgerjs-fio/src/utils/serialize.ts | 18 +- src/signTransaction.c | 23 +- src/signTransactionIntegrity.c | 8 + test-integration/getPublicKey.js | 7 + test-integration/signTransactionBasic.js | 18 ++ .../snapshots/getPublicKey/nanos.05.png | Bin 428 -> 425 bytes .../snapshots/getPublicKey/nanos.06.png | Bin 437 -> 401 bytes .../snapshots/getPublicKey/nanos.07.png | Bin 452 -> 426 bytes .../snapshots/getPublicKey/nanos.08.png | Bin 401 -> 428 bytes .../snapshots/getPublicKey/nanos.09.png | Bin 426 -> 437 bytes .../snapshots/getPublicKey/nanos.10.png | Bin 428 -> 452 bytes .../snapshots/getPublicKey/nanos.11.png | Bin 437 -> 401 bytes .../snapshots/getPublicKey/nanos.12.png | Bin 452 -> 426 bytes .../snapshots/getPublicKey/nanos.13.png | Bin 401 -> 428 bytes .../snapshots/getPublicKey/nanos.14.png | Bin 426 -> 437 bytes .../snapshots/getPublicKey/nanos.15.png | Bin 0 -> 452 bytes .../snapshots/getPublicKey/nanos.16.png | Bin 0 -> 401 bytes .../snapshots/getPublicKey/nanos.17.png | Bin 0 -> 426 bytes .../signTransactionBasic/nanos.01.png | Bin 415 -> 426 bytes .../signTransactionBasic/nanos.09.png | Bin 415 -> 426 bytes .../signTransactionBasic/nanos.17.png | Bin 415 -> 426 bytes .../signTransactionBasic/nanos.23.png | Bin 415 -> 426 bytes .../signTransactionBasic/nanos.24.png | Bin 246 -> 322 bytes .../signTransactionBasic/nanos.25.png | Bin 0 -> 366 bytes .../signTransactionBasic/nanos.26.png | Bin 0 -> 498 bytes .../signTransactionBasic/nanos.27.png | Bin 0 -> 323 bytes .../signTransactionBasic/nanos.28.png | Bin 0 -> 393 bytes .../signTransactionBasic/nanos.29.png | Bin 0 -> 424 bytes .../signTransactionBasic/nanos.30.png | Bin 0 -> 356 bytes .../signTransactionBasic/nanos.31.png | Bin 0 -> 426 bytes .../speculos-buttons-and-snapshots.js | 13 + 36 files changed, 434 insertions(+), 120 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/commands.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts create mode 100644 test-integration/snapshots/getPublicKey/nanos.15.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.16.png create mode 100644 test-integration/snapshots/getPublicKey/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionBasic/nanos.31.png diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md index 99814f88..1852b5c6 100644 --- a/doc/ins_sign_tx_commands.md +++ b/doc/ins_sign_tx_commands.md @@ -22,7 +22,7 @@ Value Len Value ---------- =================== -SHOW_DATA +APPEND_DATA ---------- ValueFormat: NAME, STRING, UINT64 (1b) ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) @@ -37,7 +37,7 @@ Value START_COUNTED_SECTION ---------- ValueFormat: must be number format (1b) -ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) +ValueValidation: NONE, LENGTH (1b) ValueValidationArg 1 (8b) ValueValidationArg 2 (8b) ---------- diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index 7ca60fdd..b125600d 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -23,4 +23,5 @@ export enum InvalidDataReason { INVALID_ACTOR = "invalid actor", INVALID_PERMISSION = "invalid permission", ACTION_DATA_TOO_LONG = "action data too long", + UNEXPECTED_ERROR = "Unexpected error", } diff --git a/ledgerjs-fio/src/interactions/signTransaction.ts b/ledgerjs-fio/src/interactions/signTransaction.ts index e0d335fe..daa5240b 100644 --- a/ledgerjs-fio/src/interactions/signTransaction.ts +++ b/ledgerjs-fio/src/interactions/signTransaction.ts @@ -2,7 +2,6 @@ import type {HexString, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, import {InvalidDataReason} from "../errors" import type {SignedTransactionData, Version} from "../types/public" -import {HARDENED} from "../types/public" import {assert} from "../utils/assert" import {chunkBy} from "../utils/ioHelpers" import {validate} from "../utils/parse" @@ -10,15 +9,7 @@ import {buf_to_hex, date_to_buf, path_to_buf, uint8_to_buf, uint16_to_buf, uint3 import {INS} from "./common/ins" import type {Interaction, SendParams} from "./common/types" import {ensureLedgerAppVersionCompatible} from "./getVersion" - -const enum P1 { - STAGE_INIT = 0x01, - STAGE_HEADER = 0x02, - STAGE_ACTION_HEADER = 0x03, - STAGE_ACTION_AUTHORIZATION = 0x04, - STAGE_ACTION_DATA = 0x05, - STAGE_WITNESSES = 0x10, -} +import {templete_trnsfiopubky} from "./transactionTemplates/template_trnsfiopubky" const send = (params: { p1: number, @@ -31,101 +22,26 @@ const send = (params: { export function* signTransaction(version: Version, parsedPath: ValidBIP32Path, chainId: HexString, tx: ParsedTransaction): Interaction { ensureLedgerAppVersionCompatible(version) - //Initialize and send chainId - { - const P2_UNUSED = 0x00 - yield send({ - p1: P1.STAGE_INIT, - p2: P2_UNUSED, - data: Buffer.from(chainId, "hex"), - expectedResponseLength: 0, - }) - } - //Send expiration, ref block num, ref block prefix - { - const P2_UNUSED = 0x00 - yield send({ - p1: P1.STAGE_HEADER, - p2: P2_UNUSED, - data: Buffer.concat([date_to_buf(tx.expiration), uint16_to_buf(tx.ref_block_num), uint32_to_buf(tx.ref_block_prefix)]), - expectedResponseLength: 0, - }) - } - //Send action account, name, acount, permission level - { - const P2_UNUSED = 0x00 - yield send({ - p1: P1.STAGE_ACTION_HEADER, - p2: P2_UNUSED, - data: Buffer.from(tx.actions[0].contractAccountName, "hex"), - expectedResponseLength: 0, - }) - } - //Send action authorization - { - const P2_UNUSED = 0x00 - yield send({ - p1: P1.STAGE_ACTION_AUTHORIZATION, - p2: P2_UNUSED, - data: Buffer.concat([ - Buffer.from(tx.actions[0].authorization[0].actor, "hex"), - Buffer.from(tx.actions[0].authorization[0].permission, "hex"), - ]), - expectedResponseLength: 0, - }) - } - - //prepare to send action data - const actionData: ParsedTransferFIOTokensData = tx.actions[0].data - const SIMPLE_LENGTH_VARIABLE_LENGTH = 1 - const AMOUNT_TYPE_LENGTH = 8 - const NAME_VARIABLE_LENGTH = 8 - const actionDataLength: number = - SIMPLE_LENGTH_VARIABLE_LENGTH + actionData.payee_public_key.length //pubkey lenght, pubkey - + 2*AMOUNT_TYPE_LENGTH + NAME_VARIABLE_LENGTH //amount, max_fee, actor - + SIMPLE_LENGTH_VARIABLE_LENGTH + actionData.tpid.length //tpid length, tpid - - validate(actionDataLength < 128, InvalidDataReason.ACTION_DATA_TOO_LONG) - - //Send action data - { - const P2_UNUSED = 0x00 - yield send({ - p1: P1.STAGE_ACTION_DATA, - p2: P2_UNUSED, - data: Buffer.concat([ - uint8_to_buf(actionDataLength as Uint8_t), - uint8_to_buf(actionData.payee_public_key.length as Uint8_t), - Buffer.from(actionData.payee_public_key), - uint8_to_buf(0 as Uint8_t), //we add trailing zero to the string to help ledger displaying - uint64_to_buf(actionData.amount), - uint64_to_buf(actionData.max_fee), - Buffer.from(actionData.actor, "hex"), - uint8_to_buf(actionData.tpid.length as Uint8_t), - Buffer.from(actionData.tpid), - uint8_to_buf(0 as Uint8_t), //we add trailing zero to the string to help ledger displaying - ]), - expectedResponseLength: 0, - }) - } - - //Send witnesses - const P2_UNUSED = 0x00 - const response = yield send({ - p1: P1.STAGE_WITNESSES, - p2: P2_UNUSED, - data: path_to_buf(parsedPath), - expectedResponseLength: 65 + 32, - }) - - const [witnessSignature, hash, rest] = chunkBy(response, [65, 32]) - assert(rest.length === 0, "invalid response length") - - return { - txHashHex: buf_to_hex(hash), - witness: { - path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0], - witnessSignatureHex: buf_to_hex(witnessSignature), - }, + const commands = templete_trnsfiopubky(chainId, tx, parsedPath); + + let result: SignedTransactionData = {txHashHex: "", witness: {path: parsedPath, witnessSignatureHex: ""}}; + + for(const command of commands) { + validate(command.constData.length + command.varData.length +2 <= 255, InvalidDataReason.UNEXPECTED_ERROR); + result = command.dataAction( + yield send({ + p1: command.command, + p2: command.p2, + data: Buffer.concat([ + uint8_to_buf(Buffer.from(command.constData, "hex").length as Uint8_t), + uint8_to_buf(command.varData.length as Uint8_t), + Buffer.from(command.constData, "hex"), + command.varData, + ]), + expectedResponseLength: command.expectedResponseLength, + }), + result + ) } + return result; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts new file mode 100644 index 00000000..f06670a4 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -0,0 +1,99 @@ +import { HexString, Uint8_t } from "types/internal" +import type {SignedTransactionData} from "../../types/public" + +export const enum COMMAND { + NONE = 0x00, + INIT = 0x01, + APPEND_CONST_DATA = 0x02, + SHOW_MESSAGE = 0x03, + APPEND_DATA = 0x04, + START_COUNTED_SECTION = 0x05, + END_COUNTED_SECTION = 0x06, + STORE_VALUE = 0x07, + FINISH= 0x10, +}; + +export const enum VALUE_FORMAT { + VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01, + VALUE_FORMAT_ASCII_STRING = 0x02, + VALUE_FORMAT_NAME = 0x03, + + VALUE_FORMAT_FIO_AMOUNT = 0x10, + VALUE_FORMAT_UINT64 = 0x14, + VALUE_FORMAT_VARUINT32 = 0x17, +} + +export const enum VALUE_VALIDATION { + VALUE_VALIDATION_NONE = 1, + VALUE_VALIDATION_INBUFFER_LENGTH = 2, + VALUE_VALIDATION_NUMBER = 3, +} + +export const enum VALUE_POLICY { + VALUE_SHOW_ON_DEVICE = 5, + VALUE_DO_NOT_SHOW_ON_DEVICE = 2, +} + +export const enum VALUE_STORAGE_COMPARE { + DO_NOT_COMPARE = 0x00, + COMPARE_REGISTER1 = 0x10, + COMPARE_REGISTER2 = 0x20, + COMPARE_REGISTER3 = 0x30, +} + +export type Command = { + command: COMMAND, + p2: Uint8_t, + constData: HexString, + varData: Buffer, + expectedResponseLength: number, + dataAction: (b: Buffer, s: SignedTransactionData) => SignedTransactionData, +} + +export const defaultCommand: Command = { + command: COMMAND.NONE, + p2: 0 as Uint8_t, + constData: "" as HexString, + varData: Buffer.from(""), + expectedResponseLength: 0, + dataAction: (b, s) => s, +} + +export function constDataAppendData(format: VALUE_FORMAT, validation: VALUE_VALIDATION, arg1: bigint, arg2: bigint, + policy: VALUE_POLICY, storage: VALUE_STORAGE_COMPARE, key: string): HexString { + const buf = Buffer.allocUnsafe(20+ key.length); + buf.writeUInt8(format, 0); + buf.writeUInt8(validation, 1); + buf.writeBigUInt64LE(arg1, 2); + buf.writeBigUInt64LE(arg2, 10); + buf.writeUInt8(policy | storage, 18); + buf.writeUInt8(key.length, 19); + buf.write(key, 20); + return buf.toString("hex") as HexString; +} + +export function constDataShowMessage(key: string, value: string) { + const buf = Buffer.allocUnsafe(2+key.length+value.length); + buf.writeUInt8(key.length, 0); + buf.write(key, 1); + buf.writeUInt8(value.length, 1+key.length); + buf.write(value, 2+key.length); + return buf.toString("hex") as HexString; +} + +export function constDataStartCountedSection(format: VALUE_FORMAT, validation: VALUE_VALIDATION, arg1: bigint, arg2: bigint): HexString { + const buf = Buffer.allocUnsafe(18); + buf.writeUInt8(format, 0); + buf.writeUInt8(validation, 1); + buf.writeBigUInt64LE(arg1, 2); + buf.writeBigUInt64LE(arg2, 10); + return buf.toString("hex") as HexString; +} + +export function getCommandVarLength(commands: Array) { + let len: number = 0; + for(const c of commands) { + len += c.varData.length; + } + return len; +} \ No newline at end of file diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts new file mode 100644 index 00000000..e522d5fc --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -0,0 +1,235 @@ +import type {HexString, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { COMMAND, Command, constDataAppendData, constDataShowMessage, constDataStartCountedSection, getCommandVarLength, + VALUE_FORMAT, VALUE_VALIDATION, VALUE_POLICY, VALUE_STORAGE_COMPARE, defaultCommand } from "./commands" +import { buf_to_hex, date_to_buf, path_to_buf, uint16_to_buf, uint32_to_buf, uint64_to_buf, varuint32_to_buf } from "../../utils/serialize" +import { validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; +import { assert } from "../../utils/assert" +import { chunkBy } from "../../utils/ioHelpers" + + +export function templete_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.actions[0].contractAccountName === "0000980ad20ca85be0e1d195ba85e7cd", InvalidDataReason.ACTION_NOT_SUPPORTED); + + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + + const tpidCommands: Array = [ + { + //tpid + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(0), BigInt(21), //21 max tipd length + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "Tpid" + ), + varData: Buffer.from(tx.actions[0].data.tpid), + }, + ]; + + const payeePublicKeyCommands: Array = [ + { + //payee pubkey + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(0), BigInt(55), //55 max WIF pubkey length + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "Payee Pubkey" + ), + varData: Buffer.from(tx.actions[0].data.payee_public_key), + }, + ]; + + const actionDataCommands: Array = [ + { + // Payee pubkey length + ...defaultCommand, + command: COMMAND.START_COUNTED_SECTION, + constData: constDataStartCountedSection( + VALUE_FORMAT.VALUE_FORMAT_VARUINT32, + VALUE_VALIDATION.VALUE_VALIDATION_NUMBER, BigInt(0), BigInt(55), + ), + varData: varuint32_to_buf(getCommandVarLength(payeePublicKeyCommands)), + }, + ...payeePublicKeyCommands, + { + ...defaultCommand, + command: COMMAND.END_COUNTED_SECTION, + }, + { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_FIO_AMOUNT, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "Amount" + ), + varData: uint64_to_buf(tx.actions[0].data.amount).reverse(), + }, + { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_FIO_AMOUNT, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "Max fee" + ), + varData: uint64_to_buf(tx.actions[0].data.max_fee).reverse(), + }, + { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_NAME, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + "" + ), + varData: Buffer.from(tx.actions[0].data.actor, "hex") + }, + { + ...defaultCommand, + command: COMMAND.START_COUNTED_SECTION, + constData: constDataStartCountedSection( + VALUE_FORMAT.VALUE_FORMAT_VARUINT32, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + ), + varData: varuint32_to_buf(getCommandVarLength(tpidCommands)), + }, + ...tpidCommands, + { + ...defaultCommand, + command: COMMAND.END_COUNTED_SECTION, + }, + ]; + + + return [ + { + //chainId + ...defaultCommand, + command: COMMAND.INIT, + varData: Buffer.from(chainId, "hex"), + }, + { + //expiration, ref_block_num, ref_block_prefix + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_BUFFER_SHOW_AS_HEX, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(10), BigInt(10), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: Buffer.concat([ + date_to_buf(tx.expiration).reverse(), + uint16_to_buf(tx.ref_block_num).reverse(), + uint32_to_buf(tx.ref_block_prefix).reverse() + ]), + }, + { + // max_net_usage_words, max_cpu_usage_ms, delay_sec, number_context_free_actions, + // number_actions, contractAccountName (for trnsfiopubky actions = 0000980ad20ca85be0e1d195ba85e7cd) + // Number of actions, + ...defaultCommand, + command: COMMAND.APPEND_CONST_DATA, + constData: "00000000010000980ad20ca85be0e1d195ba85e7cd01" as HexString, + }, + { + // Show Action name screen, + ...defaultCommand, + command: COMMAND.SHOW_MESSAGE, + constData: constDataShowMessage( + "Action", + "Transfer FIO tokens" + ), + }, + { + // Store authorisation actor as it needs to match action data actor + ...defaultCommand, + command: COMMAND.STORE_VALUE, + p2: 1 as Uint8_t, + varData: Buffer.from(tx.actions[0].authorization[0].actor, "hex"), + }, + { + // Authorisation actor, validate that it is stored + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_NAME, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + "" + ), + varData: Buffer.from(tx.actions[0].authorization[0].actor, "hex") + }, + { + // Permission, + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_NAME, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: Buffer.from(tx.actions[0].authorization[0].permission, "hex"), + }, + { + // Action data.length + ...defaultCommand, + command: COMMAND.START_COUNTED_SECTION, + constData: constDataStartCountedSection( + VALUE_FORMAT.VALUE_FORMAT_VARUINT32, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + ), + varData: varuint32_to_buf(getCommandVarLength(actionDataCommands)), + }, + ...actionDataCommands, + { + ...defaultCommand, + command: COMMAND.END_COUNTED_SECTION, + }, + { + ...defaultCommand, + command: COMMAND.APPEND_CONST_DATA, + constData: "000000000000000000000000000000000000000000000000000000000000000000" as HexString, + }, + { + ...defaultCommand, + command: COMMAND.FINISH, + varData: path_to_buf(parsedPath), + expectedResponseLength: 65 + 32, + dataAction: (b, s) => { + const [witnessSignature, hash, rest] = chunkBy(b, [65, 32]) + assert(rest.length === 0, "invalid response length") + + return { + txHashHex: buf_to_hex(hash), + witness: { + path: parsedPath, + witnessSignatureHex: buf_to_hex(witnessSignature), + }, + } + + }, + }, + ]; +} diff --git a/ledgerjs-fio/src/utils/serialize.ts b/ledgerjs-fio/src/utils/serialize.ts index a1bbbf49..0b1e28c1 100644 --- a/ledgerjs-fio/src/utils/serialize.ts +++ b/ledgerjs-fio/src/utils/serialize.ts @@ -36,6 +36,22 @@ export function uint32_to_buf(value: Uint32_t | Uint16_t | Uint8_t): Buffer { return data } +// This is thhe only LE function here +export function varuint32_to_buf(value: number) { + assert(isUint32(value), 'invalid uint32'); + let buffer = Buffer.from(""); + while (true) { + if (value >>> 7) { + buffer = Buffer.concat([buffer, uint8_to_buf((0x80 | (value & 0x7f)) as Uint8_t)]); + value = value >>> 7; + } else { + buffer = Buffer.concat([buffer, uint8_to_buf(value as Uint8_t)]); + break; + } + } + return buffer; +} + export function buf_to_uint32(data: Buffer): Uint32_t { assert(data.length === 4, "invalid uint32 buffer") @@ -61,8 +77,6 @@ export function buf_to_hex(data: Buffer): string { return data.toString("hex") } -// no buf_to_uint8 - export function path_to_buf(path: Array): Buffer { assert(isValidPath(path), "invalid bip32 path") diff --git a/src/signTransaction.c b/src/signTransaction.c index 8ce0795a..316fee8d 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -204,13 +204,13 @@ __noinline_due_to_stack__ void signTx_handleShowMessageAPDU( signTx_ui_runStep_simple(); } -// ======================= SHOW DATA =========================== +// ======================= APPEND DATA =========================== -__noinline_due_to_stack__ void signTx_handleShowDataAPDU(uint8_t p2, - uint8_t* constDataBuffer, - size_t constSize, - uint8_t* varDataBuffer, - size_t varSize) { +__noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { // Sanity checks TRACE_STACK_USAGE(); { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } @@ -509,14 +509,17 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( uint8_t hashBuf[32]; explicit_bzero(hashBuf, SIZEOF(hashBuf)); { - VALIDATE(countedSectionFinalize(&ctx->countedSections), ERR_INVALID_DATA); sha_256_finalize(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); TRACE("SHA_256_finalize, resulting hash:"); TRACE_BUFFER(hashBuf, 32); } - // This is the last call - we need to check integrity of the command sequence - { VALIDATE(integrityCheckFinalize(&ctx->integrity), ERR_INVALID_STATE); } + // This is the last call - we need to check integrity of the command sequence + just for good + // measures we finalize counted section + { + VALIDATE(integrityCheckFinalize(&ctx->integrity), ERR_INVALID_STATE); + VALIDATE(countedSectionFinalize(&ctx->countedSections), ERR_INVALID_DATA); + } // Security policy security_policy_t policy = POLICY_DENY; @@ -638,7 +641,7 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { CASE(0x01, signTx_handleInitAPDU); CASE(0x02, signTx_handleAppendConstDataAPDU); CASE(0x03, signTx_handleShowMessageAPDU); - CASE(0x04, signTx_handleShowDataAPDU); + CASE(0x04, signTx_handleAppendDataAPDU); CASE(0x05, signTx_handleStartCountedSectionAPDU); CASE(0x06, signTx_handleEndCountedSectionAPDU); CASE(0x07, signTx_handleStoreValueAPDU); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index b96fa7f8..dfb8592a 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -4,19 +4,27 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { #ifdef DEVEL + // Testing transaction template for signTransactionCommandsBasic.js {0x8a, 0xe3, 0x7f, 0xe4, 0x95, 0x02, 0x7a, 0xc1, 0x09, 0xde, 0x2e, 0xe3, 0xf7, 0x95, 0x39, 0x14, 0x0f, 0xd5, 0x6a, 0xa5, 0x6a, 0x50, 0xd3, 0xe9, 0x96, 0x83, 0x0e, 0x03, 0x3e, 0xda, 0x36, 0x76}, + // Testing transaction template for signTransactionCommandsShowData.js {0xe6, 0x61, 0x26, 0xce, 0x75, 0x57, 0xf1, 0x30, 0xca, 0x99, 0xd7, 0xa3, 0x05, 0x1c, 0x81, 0x36, 0x80, 0xfa, 0x41, 0x02, 0xd7, 0x91, 0x5c, 0xbd, 0x68, 0xe6, 0xe3, 0x61, 0xef, 0x85, 0x71, 0x03}, + // Testing transaction template for signTransactionCommandsCountedSection.js {0x2c, 0x55, 0x0f, 0x1f, 0x21, 0x8d, 0x01, 0x3a, 0x02, 0x7d, 0x2b, 0x98, 0xbe, 0xfd, 0x5b, 0x82, 0x31, 0xc5, 0x7d, 0xcf, 0xe3, 0x63, 0x45, 0x6a, 0x6e, 0x9c, 0x9c, 0xcf, 0xb7, 0xa5, 0x3b, 0x30}, + // Testing transaction template for signTransactionCommandsStorage.js {0x3c, 0xc2, 0xa2, 0x0d, 0xfb, 0x3b, 0xde, 0xf4, 0xdd, 0x17, 0xf9, 0x97, 0x1c, 0xc8, 0x42, 0x1a, 0xc3, 0x9f, 0x6a, 0x63, 0x9d, 0x0d, 0x5d, 0x9f, 0xb4, 0x24, 0xcf, 0x6b, 0xe5, 0x7c, 0x38, 0x29}, #endif + // trnsfiopubky + {0xf7, 0x6d, 0x8f, 0xa6, 0xfe, 0xe7, 0xf1, 0x7d, 0xaf, 0x97, 0x0b, + 0xb0, 0x6a, 0xc4, 0x86, 0x87, 0x7c, 0xad, 0xd2, 0x5b, 0x27, 0x33, + 0x14, 0x45, 0xd7, 0x2d, 0x0b, 0x12, 0x13, 0x45, 0xa7, 0xc1}, }; enum { diff --git a/test-integration/getPublicKey.js b/test-integration/getPublicKey.js index 3d372973..27abc18c 100644 --- a/test-integration/getPublicKey.js +++ b/test-integration/getPublicKey.js @@ -34,6 +34,13 @@ const getPubkeyResponse2 = await getPubkeyPromise2; assert.equal(getPubkeyResponse2.publicKeyHex, pubKey) assert.equal(Ecc.PublicKey(getPubkeyResponse2.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey) +{ + testStep(" - - -", "await app.getPublicKey() show reject"); + const getPubkeyPromise2 = app.getPublicKey({path: str_to_path(path), show_or_not: true}); + await device.reviewReject([2,], "Review pubkey"); + await assert.rejects(getPubkeyPromise2, DeviceStatusError, "Action rejected by user"); +} + const path2 = "44'/235'/0'/0/2000" const pubKey2 = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca" diff --git a/test-integration/signTransactionBasic.js b/test-integration/signTransactionBasic.js index b1f393e3..f709bd94 100644 --- a/test-integration/signTransactionBasic.js +++ b/test-integration/signTransactionBasic.js @@ -193,6 +193,8 @@ testStep(" - - -", "Sign testnet transaction"); // Lets sign the transaction with fiojs const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId @@ -252,6 +254,22 @@ testStep(" - - -", "Invalid transaction: actor dont match"); await assertPromise; } +testStep(" - - -", "Sign transaction reject"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.reviewReject([1, 1, 2, 1, 1, 2], "Review sign"); + await assert.rejects(ledgerPromise, DeviceStatusError, "Action rejected by user"); +} await transport.close() testEnd(scriptName); diff --git a/test-integration/snapshots/getPublicKey/nanos.05.png b/test-integration/snapshots/getPublicKey/nanos.05.png index 591d4b3a4e7b7b8571e0b46ff75c3d31cbbfdc3a..1a084c53d3dae879d5fe917589440fbac329c7cd 100644 GIT binary patch delta 399 zcmV;A0dW4T1E~X$B!6&8L_t(|ob8y~4uc>JhH;ti|G-|ji!Dl8D77H1+5cr(9IHio zLYfi)001zReLFu*Nny}-dnDd&GcW7!V&Bedvy#X1@_vAfJX*Ro+BqWa0e|=L^@03v&$~beei=|i z-f0B`s;17Hdjio$H97WDD{9kfoQ8L;) zpK?W4m5?T*(E>bEgocTxsS-K$I-fRQwQP!#+PMcY5-)PF2*Rn-&8`JqF$|kW-(p%! z%4u5$q{>?zkADLGEzDIEHt4AhHZwq@NB&uxNXh_%tB;tn^;Jfdsj=m*zegl?KI#q_ zm0y<@z|-8uC_O_Emp{D~kr#K~DAo&K(ql%WR(LQ4*EeC_+9h+Rj_h%%LbVlD%PDHLkV1k+MvnBul delta 402 zcmV;D0d4-N1FQp(B!6>BL_t(|ob8$24uc>Jh1s&b{{wsBE=Z8sQi?4B z2Wkxg0000mv2W7lu(&_SbGCq=#VPkM7cWI}m5=w)NY9gHx)f}3Z>5N=Th<91OLi5{ z7M{S)gfJ2^?#O)g7$Tq^qgf9Kz9S# ztjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1A7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N z)*a)z%3K*a%!XJunf)+)q^fZDnf)ms2lGJ=X5xG&*tg?1jHX!j2U$n_tC z7L6;zsZzF!+Nrut$djKsc w(nh&pDVH#tP*yI5BB;g~000000O4%|G-(K3nWAtj7tps8oyNpc)$!! z9On$fFpOO}g!SE5r2Fg?_k#D;qhV|A>uUiz#PN}KQuGAW_H1xE^yUYp*phS|XF4p` zTr(PLt6AiDTNFW|=xE#+o|}!$!GvJ3i+Jd36yhzb4u~XD;eWV*?OeSJ02b&PFJXPK ziPT^HNfrS>^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy z(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0 zea(^kkvWVQS#K-+Dd%AUlCEgxhWeDuT@1a&xcuh?C$iIj!|7cBU)71D30WVVn*%08 z*FHn(aOomVKLN#BBb{l9pzuqr{Q4;5K@kG&Wdpz;)mP9zpf?HAK>i;#48xer2R3dN U6#e=XQvd(}07*qoM6N<$f-x7ebN~PV delta 411 zcmV;M0c8G>1GNK?B!7HKL_t(|ob8#>lEWYfMctk5|9@~E+6QNBM&N1`5|h1W`d}$4 zDq_Wy2qA=!5#HPPvlOa5McB0V#NoVV8~FM2FhlU(qFPR2HV-kq02O88_JzWJnkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{< z)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hzu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen| z&A#=|y_wi)N`HEO8Y^^KqGGH0UBpuN^-8^AO1am4r>C9hyOrI(M=nTagF%F8W_^zW zvetLFvIZyP<`d;=R#N83iV(amG%dk8O-qJ2@g}@KzLE&CQf@V}h+jKda$-8#dP3@d zT6)~v5EY*YXM002ovPDHLk FV1o3`$3g%A diff --git a/test-integration/snapshots/getPublicKey/nanos.07.png b/test-integration/snapshots/getPublicKey/nanos.07.png index 69c83c7832bca5e3589bb27e3a879323c23ef067..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}q1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYt55D{W delta 426 zcmV;b0agC01H=Q6B!7!ZL_t(|ob8#(62l+}hMP|N{tui(dN55>wjf!c)Bl?s95+-H zl-zCr006+HOylR`aDgDAgG!#Gl7A04kER2=bkAL22YDwz z#P+nt0xP%|eEZJV zYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3Ql=Lw`1@|6LYi8N4QFJyTuE`3eX;JDtA@cqwlfb9&;KjluAIx54RAK)~#3 zPQoc}b5GfxLu|`qa~$oAYT`(TJ?6eg0lASAaaMMejrXt5Y8Atd4E{t0qvYIyJx+40zu7%_O16s}!h$Gg9?HMy-s{jB1008~G05y~w U7s)j_^8f$<07*qoM6N<$f*tA0p8x;= diff --git a/test-integration/snapshots/getPublicKey/nanos.08.png b/test-integration/snapshots/getPublicKey/nanos.08.png index 5b95879991ce6c3157ba37b1bf04f460a31f3cb2..591d4b3a4e7b7b8571e0b46ff75c3d31cbbfdc3a 100644 GIT binary patch delta 402 zcmV;D0d4+~1FQp(B!6>BL_t(|ob8$24uc>Jh1s&b{{wsBE=Z8sQi?4B z2Wkxg0000mv2W7lu(&_SbGCq=#VPkM7cWI}m5=w)NY9gHx)f}3Z>5N=Th<91OLi5{ z7M{S)gfJ2^?#O)g7$Tq^qgf9Kz9S# ztjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1A7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N z)*a)z%3K*a%!XJunf)+)q^fZDnf)ms2lGJ=X5xG&*tg?1jHX!j2U$n_tC z7L6;zsZzF!+Nrut$djKsc w(nh&pDVH#tP*yI5BB;g~000000O4%|G-(K3nWAtj7tps8oyNpc)$!! z9On$fFpOO}g!SE5r2Fg?_k#D;qhV|A>uUiz#PN}KQuGAW_H1xE^yUYp*phS|XF4p` zTr(PLt6AiDTNFW|=xE#+o|}!$!GvJ3i+Jd36yhzb4u~XD;eWV*?OeSJ02b&PFJXPK ziPT^HNfrS>^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy z(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0 zea(^kkvWVQS#K-+Dd%AUlCEgxhWeDuT@1a&xcuh?C$iIj!|7cBU)71D30WVVn*%08 z*FHn(aOomVKLN#BBb{l9pzuqr{Q4;5K@kG&Wdpz;)mP9zpf?HAK>i;#48xer2R3dN U6#e=XQvd(}07*qoM6N<$f+O*=YXATM diff --git a/test-integration/snapshots/getPublicKey/nanos.09.png b/test-integration/snapshots/getPublicKey/nanos.09.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..a7471593e75229f0c7c52842aadaacded74b6f22 100644 GIT binary patch delta 411 zcmV;M0c8HF1GNK?B!7HKL_t(|ob8#>lEWYfMctk5|9@~E+6QNBM&N1`5|h1W`d}$4 zDq_Wy2qA=!5#HPPvlOa5McB0V#NoVV8~FM2FhlU(qFPR2HV-kq02O88_JzWJnkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{< z)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hzu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen| z&A#=|y_wi)N`HEO8Y^^KqGGH0UBpuN^-8^AO1am4r>C9hyOrI(M=nTagF%F8W_^zW zvetLFvIZyP<`d;=R#N83iV(amG%dk8O-qJ2@g}@KzLE&CQf@V}h+jKda$-8#dP3@d zT6)~v5EY*YXM002ovPDHLk FV1gX~$6EjZ delta 400 zcmV;B0dM}b1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYVpT6w? diff --git a/test-integration/snapshots/getPublicKey/nanos.10.png b/test-integration/snapshots/getPublicKey/nanos.10.png index 591d4b3a4e7b7b8571e0b46ff75c3d31cbbfdc3a..69c83c7832bca5e3589bb27e3a879323c23ef067 100644 GIT binary patch delta 426 zcmV;b0agC21H=Q6B!7!ZL_t(|ob8#(62l+}hMP|N{tui(dN55>wjf!c)Bl?s95+-H zl-zCr006+HOylR`aDgDAgG!#Gl7A04kER2=bkAL22YDwz z#P+nt0xP%|eEZJV zYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3Ql=Lw`1@|6LYi8N4QFJyTuE`3eX;JDtA@cqwlfb9&;KjluAIx54RAK)~#3 zPQoc}b5GfxLu|`qa~$oAYT`(TJ?6eg0lASAaaMMejrXt5Y8Atd4E{t0qvYIyJx+40zu7%_O16s}!h$Gg9?HMy-s{jB1008~G05y~w U7s)j_^8f$<07*qoM6N<$f+0Q2p#T5? delta 402 zcmV;D0d4-o1FQp(B!6>BL_t(|ob8$24uc>Jh1s&b{{wsBE=Z8sQi?4B z2Wkxg0000mv2W7lu(&_SbGCq=#VPkM7cWI}m5=w)NY9gHx)f}3Z>5N=Th<91OLi5{ z7M{S)gfJ2^?#O)g7$Tq^qgf9Kz9S# ztjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1A7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N z)*a)z%3K*a%!XJunf)+)q^fZDnf)ms2lGJ=X5xG&*tg?1jHX!j2U$n_tC z7L6;zsZzF!+Nrut$djKsc w(nh&pDVH#tP*yI5BB;g~000000O4%|G-(K3nWAtj7tps8oyNpc)$!! z9On$fFpOO}g!SE5r2Fg?_k#D;qhV|A>uUiz#PN}KQuGAW_H1xE^yUYp*phS|XF4p` zTr(PLt6AiDTNFW|=xE#+o|}!$!GvJ3i+Jd36yhzb4u~XD;eWV*?OeSJ02b&PFJXPK ziPT^HNfrS>^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy z(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0 zea(^kkvWVQS#K-+Dd%AUlCEgxhWeDuT@1a&xcuh?C$iIj!|7cBU)71D30WVVn*%08 z*FHn(aOomVKLN#BBb{l9pzuqr{Q4;5K@kG&Wdpz;)mP9zpf?HAK>i;#48xer2R3dN U6#e=XQvd(}07*qoM6N<$f-x7ebN~PV delta 411 zcmV;M0c8G>1GNK?B!7HKL_t(|ob8#>lEWYfMctk5|9@~E+6QNBM&N1`5|h1W`d}$4 zDq_Wy2qA=!5#HPPvlOa5McB0V#NoVV8~FM2FhlU(qFPR2HV-kq02O88_JzWJnkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{< z)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hzu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen| z&A#=|y_wi)N`HEO8Y^^KqGGH0UBpuN^-8^AO1am4r>C9hyOrI(M=nTagF%F8W_^zW zvetLFvIZyP<`d;=R#N83iV(amG%dk8O-qJ2@g}@KzLE&CQf@V}h+jKda$-8#dP3@d zT6)~v5EY*YXM002ovPDHLk FV1o3`$3g%A diff --git a/test-integration/snapshots/getPublicKey/nanos.12.png b/test-integration/snapshots/getPublicKey/nanos.12.png index 69c83c7832bca5e3589bb27e3a879323c23ef067..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}q1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYt55D{W delta 426 zcmV;b0agC01H=Q6B!7!ZL_t(|ob8#(62l+}hMP|N{tui(dN55>wjf!c)Bl?s95+-H zl-zCr006+HOylR`aDgDAgG!#Gl7A04kER2=bkAL22YDwz z#P+nt0xP%|eEZJV zYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3Ql=Lw`1@|6LYi8N4QFJyTuE`3eX;JDtA@cqwlfb9&;KjluAIx54RAK)~#3 zPQoc}b5GfxLu|`qa~$oAYT`(TJ?6eg0lASAaaMMejrXt5Y8Atd4E{t0qvYIyJx+40zu7%_O16s}!h$Gg9?HMy-s{jB1008~G05y~w U7s)j_^8f$<07*qoM6N<$f*tA0p8x;= diff --git a/test-integration/snapshots/getPublicKey/nanos.13.png b/test-integration/snapshots/getPublicKey/nanos.13.png index 5b95879991ce6c3157ba37b1bf04f460a31f3cb2..591d4b3a4e7b7b8571e0b46ff75c3d31cbbfdc3a 100644 GIT binary patch delta 402 zcmV;D0d4+~1FQp(B!6>BL_t(|ob8$24uc>Jh1s&b{{wsBE=Z8sQi?4B z2Wkxg0000mv2W7lu(&_SbGCq=#VPkM7cWI}m5=w)NY9gHx)f}3Z>5N=Th<91OLi5{ z7M{S)gfJ2^?#O)g7$Tq^qgf9Kz9S# ztjVoK5)JK|gT-#bX?tB3Z-q`P;3TX1A7NMbsV_Uurorc`qTAB+(MH<0q|kd)DhT>N z)*a)z%3K*a%!XJunf)+)q^fZDnf)ms2lGJ=X5xG&*tg?1jHX!j2U$n_tC z7L6;zsZzF!+Nrut$djKsc w(nh&pDVH#tP*yI5BB;g~000000O4%|G-(K3nWAtj7tps8oyNpc)$!! z9On$fFpOO}g!SE5r2Fg?_k#D;qhV|A>uUiz#PN}KQuGAW_H1xE^yUYp*phS|XF4p` zTr(PLt6AiDTNFW|=xE#+o|}!$!GvJ3i+Jd36yhzb4u~XD;eWV*?OeSJ02b&PFJXPK ziPT^HNfrS>^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy z(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0 zea(^kkvWVQS#K-+Dd%AUlCEgxhWeDuT@1a&xcuh?C$iIj!|7cBU)71D30WVVn*%08 z*FHn(aOomVKLN#BBb{l9pzuqr{Q4;5K@kG&Wdpz;)mP9zpf?HAK>i;#48xer2R3dN U6#e=XQvd(}07*qoM6N<$f+O*=YXATM diff --git a/test-integration/snapshots/getPublicKey/nanos.14.png b/test-integration/snapshots/getPublicKey/nanos.14.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..a7471593e75229f0c7c52842aadaacded74b6f22 100644 GIT binary patch delta 411 zcmV;M0c8HF1GNK?B!7HKL_t(|ob8#>lEWYfMctk5|9@~E+6QNBM&N1`5|h1W`d}$4 zDq_Wy2qA=!5#HPPvlOa5McB0V#NoVV8~FM2FhlU(qFPR2HV-kq02O88_JzWJnkkVwTQ+Y*s}zl&Q7wfdLHbG2^J_ayV{< z)pnJKJ>DURs9fnfkK6$Rm;ZH)|G#hzu7_)IC6~><>=@?&tg_6!0!cG1f%}p=*pen| z&A#=|y_wi)N`HEO8Y^^KqGGH0UBpuN^-8^AO1am4r>C9hyOrI(M=nTagF%F8W_^zW zvetLFvIZyP<`d;=R#N83iV(amG%dk8O-qJ2@g}@KzLE&CQf@V}h+jKda$-8#dP3@d zT6)~v5EY*YXM002ovPDHLk FV1gX~$6EjZ delta 400 zcmV;B0dM}b1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYVpT6w? diff --git a/test-integration/snapshots/getPublicKey/nanos.15.png b/test-integration/snapshots/getPublicKey/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..69c83c7832bca5e3589bb27e3a879323c23ef067 GIT binary patch literal 452 zcmV;#0XzPQP)lGe_Ovzk$p)GvQx4nkb(K<1_`;;S6!&nqJv7FqmmCekER2=bkAL22YDwz#P+nt0xP%|eEZJVYHD@(#nIn0>Bo2#w<2*aVl`22Z@w3< zJtKtD8(k6OV)ifsXIYF38H10B+YB0hbNNGzoST-mV>Ql=LpG`ZT^3^*ye4QpQ(emW z3J5$qoxcirDQ_5adg7Rk!SH;y!Rb*z!0c*H!YOWZPuZSBY|CSF9PNy1;z)-*=DtS( zxselbR(6z)_plRD9QVl{9lxm>irBHIREFpL5kZGQbmQI`NB96Pj9VVEnl|LRBKo?n uh2#GNTFw%P)`smFGh(X%00000{k#A*lp7bxH97MD0000hmjc2e{N)b?y}I`rlTrPz{m9cMZ$*IY9iYpYr0cv}=fq3CGb7@nJr&B26V zv5R=^aS|nB}t4_(=0I2KNjGVS}+N8hcRW83Zy(O(5O`nCpA{C2Bvl>?^1-P2HSL3CB4 z=~$oV{vCS6tp9H}H_J*L;t#ElLHbLWCTy{0ea(^kkvWVQSu6Z0=V1You4v|l`jpIF z486s;{O1HGveSRV>0JO{)rq4CSs$I7113Y)K11nn=^{-(0mWJ)ooR`n@Jp@y`Y7Z< v5d!UH1Hd2ESI|G8Hwn`~{vS3B!a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanos.17.png b/test-integration/snapshots/getPublicKey/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX|Kfc!h delta 388 zcmV-~0ek+c1D^wsB!6Z}L_t(|ob8#>lEWYfMajF-kvbwsJl<1icCP53zd8mR}xKe4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hl zAYbf!S$g!<&3(Al$TvgG^Ow`B1?&O3)Z;%mO>Uso?d6PGN5#}`@+Si=BZ^TukRA|k zxAtUm<;iFscUxD7c=I!0zL=^9t~i;I2FMf|%Qju`B4fXnBl!yeU=PrR%4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX|Kfc!h delta 388 zcmV-~0ek+c1D^wsB!6Z}L_t(|ob8#>lEWYfMajF-kvbwsJl<1icCP53zd8mR}xKe4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hl zAYbf!S$g!<&3(Al$TvgG^Ow`B1?&O3)Z;%mO>Uso?d6PGN5#}`@+Si=BZ^TukRA|k zxAtUm<;iFscUxD7c=I!0zL=^9t~i;I2FMf|%Qju`B4fXnBl!yeU=PrR%4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX|Kfc!h delta 388 zcmV-~0ek+c1D^wsB!6Z}L_t(|ob8#>lEWYfMajF-kvbwsJl<1icCP53zd8mR}xKe4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hl zAYbf!S$g!<&3(Al$TvgG^Ow`B1?&O3)Z;%mO>Uso?d6PGN5#}`@+Si=BZ^TukRA|k zxAtUm<;iFscUxD7c=I!0zL=^9t~i;I2FMf|%Qju`B4fXnBl!yeU=PrR%4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX|Kfc!h delta 388 zcmV-~0ek+c1D^wsB!6Z}L_t(|ob8#>lEWYfMajF-kvbwsJl<1icCP53zd8mR}xKe4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hl zAYbf!S$g!<&3(Al$TvgG^Ow`B1?&O3)Z;%mO>Uso?d6PGN5#}`@+Si=BZ^TukRA|k zxAtUm<;iFscUxD7c=I!0zL=^9t~i;I2FMf|%Qju`B4fXnBl!yeU=PrR% z%WC!*&VWj+DqG2G_5kj{hjnKd!wy(Hv@5YX1^MvxA*2WRhJUWw@R1e*>fcU-q)>kl zRl-93p}+_8fe&U<64r~CKEJeK<6CxZRc4B$J+$UuN4`Fv;_@AZ446nBDQr1L4_Uoa zDt{_X0EY#OUgLCf$x~@)=_O~i6hSFgo|}T#lH!aN9Kf_@e_c9yu!P}is1BRWm&JSr uP@(gea3or!Fd@%-_}K&i000004CVvQ%!@q$0r?UD0000urBYyzBNklpRo-tga~&?DOje+l8Q)t@KHzF0e-4*&oF0002s@!s|M VSLZ4aE4Kgu002ovPDHLkV1hrIX?y?x diff --git a/test-integration/snapshots/signTransactionBasic/nanos.25.png b/test-integration/snapshots/signTransactionBasic/nanos.25.png new file mode 100644 index 0000000000000000000000000000000000000000..4207e747fd5cca09ea6a025dbca99608cb3f87c0 GIT binary patch literal 366 zcmV-!0g?WRP)u?dPuR>IbWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y^6Re!(aIzE{L7j$o8J0Q zbFf>C80me$E7X7MApLiMCS3U_o7XsL*4Tc^A*>t`;wu0E006)!KS1-z9?s-0&;S4c M07*qoM6N<$f+n`3SO5S3 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.26.png b/test-integration/snapshots/signTransactionBasic/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..8471f1af609767e69a87cf7c33327179f377b07f GIT binary patch literal 498 zcmV2mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.27.png b/test-integration/snapshots/signTransactionBasic/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0a1a84b97dad02502fc39eb97f7b5ddc2756f0 GIT binary patch literal 323 zcmV-J0lfZ+P)09sLGm$9nMpq$xM+1c-?3R=(3?;N}Plru%`L0_c-H z1`Z0qJ14zQp`X1m+m@-Pey*Evux;oJs6U(zNumBEnuLY=Q$Y>vK@BX)37d+cz5cA? z>h#jGnTl1_sS1IFA=ay1oRGBd>0(e>S~+M*L&sG9RSB+84)$>uba~2q9|bVR!BxZp z+RtD8@nA9m3eeU4mR}8B{Ro=tJqA#)p(oJ(PZ&5`8>%O>HdIUww4ne10001hu>%Dd V$oIezF|7aq002ovPDHLkV1gP4h{^x} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.28.png b/test-integration/snapshots/signTransactionBasic/nanos.28.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.29.png b/test-integration/snapshots/signTransactionBasic/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Fri, 24 Jun 2022 10:20:59 +0200 Subject: [PATCH 19/83] Der. path is sent in INIT call instead of FINAL This way derivation path is available for DH encoding --- doc/ins_sign_tx_commands.md | 11 ++- .../template_trnsfiopubky.ts | 3 +- src/securityPolicy.c | 6 +- src/securityPolicy.h | 4 +- src/signTransaction.c | 93 +++++++++++------- src/signTransaction.h | 1 + test-integration/signTransactionBasic.js | 3 +- .../signTransactionCommandsBasic.js | 54 +++------- .../signTransactionCommandsCountedSection.js | 68 +++++++------ .../signTransactionCommandsShowData.js | 26 ++--- .../signTransactionCommandsStorage.js | 16 +-- .../signTransactionBasic/nanos.18.png | Bin 314 -> 322 bytes .../signTransactionBasic/nanos.23.png | Bin 426 -> 424 bytes .../signTransactionBasic/nanos.24.png | Bin 322 -> 356 bytes .../signTransactionBasic/nanos.25.png | Bin 366 -> 426 bytes .../signTransactionBasic/nanos.26.png | Bin 498 -> 0 bytes .../signTransactionBasic/nanos.27.png | Bin 323 -> 0 bytes .../signTransactionBasic/nanos.28.png | Bin 393 -> 0 bytes .../signTransactionBasic/nanos.29.png | Bin 424 -> 0 bytes .../signTransactionBasic/nanos.30.png | Bin 356 -> 0 bytes .../signTransactionBasic/nanos.31.png | Bin 426 -> 0 bytes .../signTransactionCommandsBasic/nanos.19.png | Bin 314 -> 0 bytes .../signTransactionCommandsBasic/nanos.20.png | Bin 376 -> 0 bytes .../signTransactionCommandsBasic/nanos.21.png | Bin 426 -> 0 bytes test-integration/speculos-common.js | 3 + 25 files changed, 150 insertions(+), 138 deletions(-) delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.26.png delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.27.png delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.28.png delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.29.png delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.30.png delete mode 100644 test-integration/snapshots/signTransactionBasic/nanos.31.png delete mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.19.png delete mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.20.png delete mode 100644 test-integration/snapshots/signTransactionCommandsBasic/nanos.21.png diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md index 1852b5c6..ccab325a 100644 --- a/doc/ins_sign_tx_commands.md +++ b/doc/ins_sign_tx_commands.md @@ -8,6 +8,7 @@ INIT ---------- ---------- chainId +Derivation path =================== APPEND_CONST_DATA ---------- @@ -53,9 +54,17 @@ P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b ---------- Value ==================== +Start DH encryprion +---------- +---------- +Encryption pubkey +==================== +End DH encryprion +---------- +---------- +==================== FINISH ---------- ---------- -Derivation path ==================== diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index e522d5fc..7cfffbc1 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -123,7 +123,7 @@ export function templete_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, //chainId ...defaultCommand, command: COMMAND.INIT, - varData: Buffer.from(chainId, "hex"), + varData: Buffer.concat([Buffer.from(chainId, "hex"), path_to_buf(parsedPath)]), }, { //expiration, ref_block_num, ref_block_prefix @@ -215,7 +215,6 @@ export function templete_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, { ...defaultCommand, command: COMMAND.FINISH, - varData: path_to_buf(parsedPath), expectedResponseLength: 65 + 32, dataAction: (b, s) => { const [witnessSignature, hash, rest] = chunkBy(b, [65, 32]) diff --git a/src/securityPolicy.c b/src/securityPolicy.c index 809444be..3169a2c8 100644 --- a/src/securityPolicy.c +++ b/src/securityPolicy.c @@ -39,11 +39,15 @@ security_policy_t policyForGetPublicKey(const bip44_path_t* pathSpec, get_key_p1 ALLOW(); } -security_policy_t policyForSignTxWitness(const bip44_path_t* pathSpec) { +security_policy_t policyForSignTxInit(const bip44_path_t* pathSpec) { DENY_UNLESS(bip44_hasValidFIOPrefix(pathSpec)); DENY_UNLESS(bip44_containsAddress(pathSpec)); DENY_IF(bip44_containsMoreThanAddress(pathSpec)); + SHOW(); +} + +security_policy_t policyForSignTxFinish() { PROMPT(); } diff --git a/src/securityPolicy.h b/src/securityPolicy.h index a3750fbe..d3889754 100644 --- a/src/securityPolicy.h +++ b/src/securityPolicy.h @@ -15,10 +15,12 @@ typedef enum { security_policy_t policyForGetPublicKey(const bip44_path_t* pathSpec, get_key_p1_t show_or_not); -security_policy_t policyForSignTxWitness(const bip44_path_t* pathSpec); +security_policy_t policyForSignTxInit(const bip44_path_t* pathSpec); security_policy_t policyDerivePrivateKey(const bip44_path_t* pathSpec); +security_policy_t policyForSignTxFinish(); + static inline void ENSURE_NOT_DENIED(security_policy_t policy) { if (policy == POLICY_DENY) { THROW(ERR_REJECTED_BY_POLICY); diff --git a/src/signTransaction.c b/src/signTransaction.c index 316fee8d..b3e8568d 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -82,18 +82,30 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, TRACE_BUFFER(varDataBuffer, varSize); struct { uint8_t chainId[CHAIN_ID_LENGTH]; + uint8_t derivationPath[1 + sizeof(uint32_t) * + BIP44_MAX_PATH_ELEMENTS]; // 1 stands for number of + // derivation math elements }* varData = (void*) varDataBuffer; { VALIDATE(constSize == 0, ERR_INVALID_DATA); - VALIDATE(varSize == SIZEOF(*varData), ERR_INVALID_DATA); + VALIDATE(varSize >= SIZEOF(varData->chainId), ERR_INVALID_DATA); } // Parse data - prepare to display { - network_type_t network = getNetworkByChainId(varData->chainId, SIZEOF(varData->chainId)); + const network_type_t network = + getNetworkByChainId(varData->chainId, SIZEOF(varData->chainId)); TRACE("Chain: %d", (int) network); VALIDATE(network == NETWORK_MAINNET || network == NETWORK_TESTNET, ERR_INVALID_DATA); + const size_t derivationPathLength = varSize - SIZEOF(varData->chainId); + const size_t parsedSize = + bip44_parseFromWire(&ctx->wittnessPath, varData->derivationPath, derivationPathLength); + VALIDATE(parsedSize == derivationPathLength, ERR_INVALID_DATA); + PRINTF("Derivation path:"); + BIP44_PRINTF(&ctx->wittnessPath); + PRINTF("\n"); + snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Chain"); switch (network) { #define CASE(NETWORK, CHAIN_STRING) \ @@ -116,8 +128,29 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, sha_256_append(&ctx->hashContext, varData->chainId, SIZEOF(varData->chainId)); } + // Security policy + security_policy_t policy = POLICY_DENY; + { + policy = policyForSignTxInit(&ctx->wittnessPath); + TRACE("Policy: %d", (int) policy); + ENSURE_NOT_DENIED(policy); + { + // select UI steps + switch (policy) { +#define CASE(POLICY, UI_STEP) \ + case POLICY: { \ + ctx->ui_step = UI_STEP; \ + break; \ + } + CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_SIMPLE_STEP_DISPLAY_DETAILS); + default: + THROW(ERR_NOT_IMPLEMENTED); +#undef CASE + } + } + } + // Run ui step - ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; signTx_ui_runStep_simple(); } @@ -426,44 +459,44 @@ __noinline_due_to_stack__ void signTx_handleStoreValueAPDU(uint8_t p2, signTx_ui_runStep_simple(); } -// ============================== WITNESS ============================== +// ============================== FINISH ============================== enum { - HANDLE_WITNESS_STEP_DISPLAY_DETAILS = 1000, - HANDLE_WITNESS_STEP_CONFIRM, - HANDLE_WITNESS_STEP_RESPOND, - HANDLE_WITNESS_STEP_INVALID, + HANDLE_FINISH_STEP_DISPLAY_DETAILS = 1000, + HANDLE_FINISH_STEP_CONFIRM, + HANDLE_FINISH_STEP_RESPOND, + HANDLE_FINISH_STEP_INVALID, }; -static void signTx_handleWitness_ui_runStep() { +static void signTx_handleFinish_ui_runStep() { TRACE("UI step %d", ctx->ui_step); TRACE_STACK_USAGE(); - ui_callback_fn_t* this_fn = signTx_handleWitness_ui_runStep; + ui_callback_fn_t* this_fn = signTx_handleFinish_ui_runStep; UI_STEP_BEGIN(ctx->ui_step, this_fn); - UI_STEP(HANDLE_WITNESS_STEP_DISPLAY_DETAILS) { + UI_STEP(HANDLE_FINISH_STEP_DISPLAY_DETAILS) { ui_displayPaginatedText(ctx->key, ctx->value, this_fn); } - UI_STEP(HANDLE_WITNESS_STEP_CONFIRM) { + UI_STEP(HANDLE_FINISH_STEP_CONFIRM) { ui_displayPrompt("Sign", "transaction?", this_fn, respond_with_user_reject); } - UI_STEP(HANDLE_WITNESS_STEP_RESPOND) { + UI_STEP(HANDLE_FINISH_STEP_RESPOND) { io_send_buf(SUCCESS, G_io_apdu_buffer, 65 + 32); ui_displayBusy(); // needs to happen after I/O ui_idle(); // we are done with this tx } - UI_STEP_END(HANDLE_WITNESS_STEP_INVALID); + UI_STEP_END(HANDLE_FINISH_STEP_INVALID); } -__noinline_due_to_stack__ void signTx_handleWitnessAPDU( +__noinline_due_to_stack__ void signTx_handleFinishAPDU( uint8_t p2, MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, size_t constSize, - uint8_t* varDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { // sanity checks TRACE_STACK_USAGE(); @@ -472,28 +505,16 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( // Validate data TRACE_BUFFER(constDataBuffer, constSize); TRACE_BUFFER(varDataBuffer, varSize); - struct { - uint8_t pathLen; - uint8_t path[BIP44_MAX_PATH_ELEMENTS * - sizeof(uint32_t)]; // SIZEOF does not work for 4-byte data - }* varData = (void*) varDataBuffer; { VALIDATE(constSize == 0, ERR_INVALID_DATA); - VALIDATE(varSize >= 1, ERR_INVALID_DATA); - VALIDATE(varData->pathLen <= BIP44_MAX_PATH_ELEMENTS, ERR_INVALID_DATA); - VALIDATE(varSize == (size_t) 1 + varData->pathLen * sizeof(uint32_t), ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); } - // Parse data and prepare to display them - bip44_path_t wittnessPath; - explicit_bzero(&wittnessPath, SIZEOF(wittnessPath)); + // Prepare to display them { - size_t parsedSize = bip44_parseFromWire(&wittnessPath, varDataBuffer, varSize); - VALIDATE(parsedSize == varSize, ERR_INVALID_DATA); - public_key_t wittnessPathPubkey; explicit_bzero(&wittnessPathPubkey, SIZEOF(wittnessPathPubkey)); - derivePublicKey(&wittnessPath, &wittnessPathPubkey); + derivePublicKey(&ctx->wittnessPath, &wittnessPathPubkey); TRACE_BUFFER(wittnessPathPubkey.W, SIZEOF(wittnessPathPubkey.W)); snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Sign with"); @@ -524,7 +545,7 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( // Security policy security_policy_t policy = POLICY_DENY; { - policy = policyForSignTxWitness(&wittnessPath); + policy = policyForSignTxFinish(); TRACE("Policy: %d", (int) policy); ENSURE_NOT_DENIED(policy); { @@ -535,7 +556,7 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( ctx->ui_step = UI_STEP; \ break; \ } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_WITNESS_STEP_DISPLAY_DETAILS); + CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_FINISH_STEP_DISPLAY_DETAILS); default: THROW(ERR_NOT_IMPLEMENTED); #undef CASE @@ -550,7 +571,7 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( TRY { // We derive the private key { - derivePrivateKey(&wittnessPath, &privateKey); + derivePrivateKey(&ctx->wittnessPath, &privateKey); TRACE("privateKey.d:"); TRACE_BUFFER(privateKey.d, privateKey.d_len); } @@ -619,7 +640,7 @@ __noinline_due_to_stack__ void signTx_handleWitnessAPDU( TRACE_BUFFER(G_io_apdu_buffer, 65); memcpy(G_io_apdu_buffer + 65, hashBuf, 32); - signTx_handleWitness_ui_runStep(); + signTx_handleFinish_ui_runStep(); } // ============================== MAIN HANDLER ============================== @@ -645,7 +666,7 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { CASE(0x05, signTx_handleStartCountedSectionAPDU); CASE(0x06, signTx_handleEndCountedSectionAPDU); CASE(0x07, signTx_handleStoreValueAPDU); - CASE(0x10, signTx_handleWitnessAPDU); + CASE(0x10, signTx_handleFinishAPDU); DEFAULT(NULL) #undef CASE #undef DEFAULT diff --git a/src/signTransaction.h b/src/signTransaction.h index 7e971404..a3f298e0 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -30,6 +30,7 @@ typedef struct { } tx_value_storage_t; typedef struct { + bip44_path_t wittnessPath; sha_256_context_t hashContext; tx_integrity_t integrity; tx_counted_section_t countedSections; diff --git a/test-integration/signTransactionBasic.js b/test-integration/signTransactionBasic.js index f709bd94..f26301ad 100644 --- a/test-integration/signTransactionBasic.js +++ b/test-integration/signTransactionBasic.js @@ -241,7 +241,7 @@ testStep(" - - -", "Invalid transaction: actor dont match"); await assert.rejects(promise); } -testStep(" - - -", "Invalid transaction: actor dont match"); +testStep(" - - -", "Invalid derivation path"); { const network = "MAINNET" const tx = basicTx @@ -250,7 +250,6 @@ testStep(" - - -", "Invalid transaction: actor dont match"); const chainId = networkInfo[network].chainId const promise = app.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) const assertPromise = assert.rejects(promise, DeviceStatusError, "Action rejected by Ledger's security policy"); - await device.reviewPartial([1, 1, 2, 1, 1], "Review sign"); await assertPromise; } diff --git a/test-integration/signTransactionCommandsBasic.js b/test-integration/signTransactionCommandsBasic.js index f966f53d..112a6d18 100644 --- a/test-integration/signTransactionCommandsBasic.js +++ b/test-integration/signTransactionCommandsBasic.js @@ -37,8 +37,8 @@ console.log("This test requires app in DEVEL mode.") //------------------------------------------------------------------------------------- testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - testnet"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -60,8 +60,8 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ const response13 = await promise13; assert.equal(response13.toString("hex"), "9000"); - //Finish path=44'/235'/0'/0/0 - const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + //Finish + const buffer14 = getAPDUDataBuffer("", ""); const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); await device.curlScreenShot(); await device.curlButtonAndScreenshot("both", "Confirm sign with"); @@ -79,8 +79,8 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ //------------------------------------------------------------------------------------- testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - mainnet"); { - //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c - const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -101,8 +101,8 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ const response13 = await promise13; assert.equal(response13.toString("hex"), "9000"); - //Finish path=44'/235'/0'/0/0 - const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + //Finish + const buffer14 = getAPDUDataBuffer("", ""); const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); await device.curlScreenShot(); await device.curlButtonAndScreenshot("both", "Confirm sign with"); @@ -121,7 +121,7 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ testStep(" - - -", "One byte constant data difference should cause integrity validation error (Test Value->Uest Value)"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -143,7 +143,7 @@ testStep(" - - -", "One byte constant data difference should cause integrity val assert.equal(response13.toString("hex"), "9000"); //Finish path=44'/235'/0'/0/0 - const buffer14 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + const buffer14 = getAPDUDataBuffer("", ""); const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); await assert.rejects(promise14, err(0x6e06)); @@ -153,7 +153,7 @@ testStep(" - - -", "One byte constant data difference should cause integrity val testStep(" - - -", "Incorrect chain should result in immediate failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f incorrect chain - last bit - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await assert.rejects(promise11, err(0x6e07)); } @@ -161,7 +161,7 @@ testStep(" - - -", "Incorrect chain should result in immediate failure"); testStep(" - - -", "Incorrect lengths should lead to failure"); { //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c - const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -179,7 +179,7 @@ testStep(" - - -", "Incorrect lengths should lead to failure"); testStep(" - - -", "Non ASCII character in message"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -197,33 +197,9 @@ testStep(" - - -", "Non ASCII character in message"); testStep(" - - -", "incorrect path should result in failure"); { //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c - const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c"); + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c058000002c800000ec800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); - await device.curlScreenShot(); - device.curlButton("both", "Confirm chain"); //!!!!!! - const response11 = await promise11; - assert.equal(response11.toString("hex"), "9000"); - - //Append "0102030405" to transaction - const buffer12 = getAPDUDataBuffer("0102030405", ""); - const promise12 = transport.send(215, 0x20, 0x02, 0, buffer12); - const response12 = await promise12; - assert.equal(response12.toString("hex"), "9000"); - - //Show "Test Key" "Test Value" to transaction hex: 0854657374204b6579, 0a546573742056616c7565 (total length 0x14) - const buffer13 = getAPDUDataBuffer("0854657374204b65790a546573742056616c7565", ""); - const promise13 = transport.send(215, 0x20, 0x03, 0, buffer13); - await device.curlScreenShot(); - device.curlButton("both", "Confirm message"); //!!!!!! - const response13 = await promise13; - assert.equal(response13.toString("hex"), "9000"); - - //Finish path=44'/236'/0'/0/0 - const buffer14 = getAPDUDataBuffer("", "058000002c800000ec800000000000000000000000"); - const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); - await assert.rejects(promise14, err(0x6e10)); - - await device.makeStartingScreenshot(); + await assert.rejects(promise11, err(0x6e10)); } //------------------------------------------------------------------------------------- diff --git a/test-integration/signTransactionCommandsCountedSection.js b/test-integration/signTransactionCommandsCountedSection.js index 01f79e27..253a6926 100644 --- a/test-integration/signTransactionCommandsCountedSection.js +++ b/test-integration/signTransactionCommandsCountedSection.js @@ -37,8 +37,8 @@ console.log("This test requires app in DEVEL mode.") //------------------------------------------------------------------------------------- testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTION instructions"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -46,25 +46,25 @@ testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTIO assert.equal(response11.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); //Append to transaction (32 bytes) - const buffer13 = getAPDUDataBuffer("00000000000000000000000000000000000000000000000000000000000000000", ""); + const buffer13 = getAPDUDataBuffer("0000000000000000000000000000000000000000000000000000000000000000", ""); const promise13 = transport.send(215, 0x20, 0x02, 0, buffer13); const response13 = await promise13; assert.equal(response13.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer14 = getAPDUDataBuffer("1701000000000000000000000000000000000", "40"); // value - 64 + const buffer14 = getAPDUDataBuffer("170100000000000000000000000000000000", "40"); // value - 64 const promise14 = transport.send(215, 0x20, 0x05, 0, buffer14); const response14 = await promise14; assert.equal(response14.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer15 = getAPDUDataBuffer("1701000000000000000000000000000000000", "20"); // value - 32 + const buffer15 = getAPDUDataBuffer("170100000000000000000000000000000000", "20"); // value - 32 const promise15 = transport.send(215, 0x20, 0x05, 0, buffer15); const response15 = await promise15; assert.equal(response15.toString("hex"), "9000"); @@ -105,8 +105,8 @@ testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTIO const response21 = await promise21; assert.equal(response21.toString("hex"), "9000"); - //Finish path=44'/235'/0'/0/0 - const buffer99 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + //Finish + const buffer99 = getAPDUDataBuffer("", ""); const promise99 = transport.send(215, 0x20, 0x10, 0, buffer99); await device.curlScreenShot(); await device.curlButtonAndScreenshot("both", "Confirm sign with"); @@ -133,7 +133,7 @@ testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTIO testStep(" - - -", "Validation failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -141,7 +141,7 @@ testStep(" - - -", "Validation failure"); assert.equal(response11.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 03-number validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("170300000000000000007f000000000000000", "8001"); // value - 128, 127 is max + const buffer12 = getAPDUDataBuffer("170300000000000000007f00000000000000", "8001"); // value - 128, 127 is max const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -151,7 +151,7 @@ testStep(" - - -", "Validation failure"); testStep(" - - -", "VarInt32 incorrect format"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -159,7 +159,7 @@ testStep(" - - -", "VarInt32 incorrect format"); assert.equal(response11.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080"); + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8080"); const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -169,7 +169,7 @@ testStep(" - - -", "VarInt32 incorrect format"); testStep(" - - -", "VarInt32 too many bytes"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -177,7 +177,7 @@ testStep(" - - -", "VarInt32 too many bytes"); assert.equal(response11.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080808080808080801"); //more than 9 bytes + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "808080808080808001"); //more than 9 bytes const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -187,7 +187,7 @@ testStep(" - - -", "VarInt32 too many bytes"); testStep(" - - -", "Too big for UInt32"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -195,7 +195,7 @@ testStep(" - - -", "Too big for UInt32"); assert.equal(response11.toString("hex"), "9000"); //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0000000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8080808080808001"); //more than 9 bytes + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8080808080808001"); const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); @@ -205,7 +205,7 @@ testStep(" - - -", "Too big for UInt32"); testStep(" - - -", "too much nesting"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -214,7 +214,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -222,7 +222,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -230,7 +230,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -238,7 +238,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -246,7 +246,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -254,7 +254,7 @@ testStep(" - - -", "too much nesting"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); await assert.rejects(promise12, err(0x6e07)); await device.makeStartingScreenshot(); @@ -264,7 +264,7 @@ testStep(" - - -", "too much nesting"); testStep(" - - -", "Unexpected end counted section"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -283,25 +283,23 @@ testStep(" - - -", "Unexpected end counted section"); testStep(" - - -", "Length mismatch"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! const response11 = await promise11; assert.equal(response11.toString("hex"), "9000"); - { - //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("1701000000000000000000000000000000000", "8001"); // value - 128 - const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); - const response12 = await promise12; - assert.equal(response12.toString("hex"), "9000"); - } + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "8001"); // value - 128 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); //END_COUNTED_SECTION - const buffer12 = getAPDUDataBuffer("", ""); - const promise12 = transport.send(215, 0x20, 0x06, 0, buffer12); - await assert.rejects(promise12, err(0x6e07)); + const buffer13 = getAPDUDataBuffer("", ""); + const promise13 = transport.send(215, 0x20, 0x06, 0, buffer13); + await assert.rejects(promise13, err(0x6e07)); await device.makeStartingScreenshot(); } diff --git a/test-integration/signTransactionCommandsShowData.js b/test-integration/signTransactionCommandsShowData.js index 570342ba..ff11cbc3 100644 --- a/test-integration/signTransactionCommandsShowData.js +++ b/test-integration/signTransactionCommandsShowData.js @@ -37,8 +37,8 @@ console.log("This test requires app in DEVEL mode.") //------------------------------------------------------------------------------------- testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA instructions - testnet"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -92,8 +92,8 @@ testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA ins const response17 = await promise17; assert.equal(response17.toString("hex"), "9000"); - //Finish path=44'/235'/0'/0/0 - const buffer19 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + //Finish + const buffer19 = getAPDUDataBuffer("", ""); const promise19 = transport.send(215, 0x20, 0x10, 0, buffer19); await device.curlScreenShot(); await device.curlButtonAndScreenshot("both", "Confirm sign with"); @@ -119,7 +119,7 @@ testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA ins testStep(" - - -", "Unknown data type leads to failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -137,7 +137,7 @@ testStep(" - - -", "Unknown data type leads to failure"); testStep(" - - -", "Buffer does not pass length validation"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -155,7 +155,7 @@ testStep(" - - -", "Buffer does not pass length validation"); testStep(" - - -", "Key length does not match"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -173,7 +173,7 @@ testStep(" - - -", "Key length does not match"); testStep(" - - -", "Key contains invalid symbols"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -191,7 +191,7 @@ testStep(" - - -", "Key contains invalid symbols"); testStep(" - - -", "Key too long"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -209,7 +209,7 @@ testStep(" - - -", "Key too long"); testStep(" - - -", "String value contains non readable characters"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -227,7 +227,7 @@ testStep(" - - -", "String value contains non readable characters"); testStep(" - - -", "Name string has incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -245,7 +245,7 @@ testStep(" - - -", "Name string has incorrect length"); testStep(" - - -", "Amount incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -263,7 +263,7 @@ testStep(" - - -", "Amount incorrect length"); testStep(" - - -", "UInt64 incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! diff --git a/test-integration/signTransactionCommandsStorage.js b/test-integration/signTransactionCommandsStorage.js index 06c17e98..0c41964b 100644 --- a/test-integration/signTransactionCommandsStorage.js +++ b/test-integration/signTransactionCommandsStorage.js @@ -37,8 +37,8 @@ console.log("This test requires app in DEVEL mode.") //------------------------------------------------------------------------------------- testStep(" - - -", "Sign transaction using storage"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -74,8 +74,8 @@ testStep(" - - -", "Sign transaction using storage"); const response15 = await promise15; assert.equal(response15.toString("hex"), "9000"); - //Finish path=44'/235'/0'/0/0 - const buffer19 = getAPDUDataBuffer("", "058000002c800000eb800000000000000000000000"); + //Finish + const buffer19 = getAPDUDataBuffer("", ""); const promise19 = transport.send(215, 0x20, 0x10, 0, buffer19); await device.curlScreenShot(); await device.curlButtonAndScreenshot("both", "Confirm sign with"); @@ -95,8 +95,8 @@ testStep(" - - -", "Sign transaction using storage"); //------------------------------------------------------------------------------------- testStep(" - - -", "Storing too long data"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -114,8 +114,8 @@ testStep(" - - -", "Storing too long data"); //------------------------------------------------------------------------------------- testStep(" - - -", "Data do not match"); { - //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"); + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); diff --git a/test-integration/snapshots/signTransactionBasic/nanos.18.png b/test-integration/snapshots/signTransactionBasic/nanos.18.png index 06140342c291c111e9c068e5607f9a041bc53592..076a821e03587e469d3c6332c0b098513e95630d 100644 GIT binary patch delta 295 zcmV+?0oeY!0>T22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1kSTf?fas delta 287 zcmV+)0pR|^0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gN>f`I@4 diff --git a/test-integration/snapshots/signTransactionBasic/nanos.23.png b/test-integration/snapshots/signTransactionBasic/nanos.23.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) diff --git a/test-integration/snapshots/signTransactionBasic/nanos.24.png b/test-integration/snapshots/signTransactionBasic/nanos.24.png index 076a821e03587e469d3c6332c0b098513e95630d..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0a0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m9 delta 295 zcmV+?0oeZJ0>T22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1m49f`|YB diff --git a/test-integration/snapshots/signTransactionBasic/nanos.25.png b/test-integration/snapshots/signTransactionBasic/nanos.25.png index 4207e747fd5cca09ea6a025dbca99608cb3f87c0..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~90;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZYAipI5 delta 339 zcmV-Z0j&P21MUKlB!4wYL_t(|ob8#>4#OY_MeVZw{|EP>doVFZ7*d5u%{@;WLuIH~ zZ&LyQ006>qU-q6rOU|i~*Uc9cSx9EwvGJpgVxge)Cyx48v!2 z032mS=heM6QA^P7c`rnr0JehfNW2NCPt;VMv2{7h4&@MToPTQ{06+kCFQjh(bFd!F z!Fn(UE8((#SoUc6u?dPuR>Ib zWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y@=WWm1<}eQ`25S7GMnD|Pjj$aj2P*Cz$?^$>mdDifF@k|D4W+fY1Y_& l$|0;A5#lQV0002MC_g~+$sW$+F32mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= diff --git a/test-integration/snapshots/signTransactionBasic/nanos.27.png b/test-integration/snapshots/signTransactionBasic/nanos.27.png deleted file mode 100644 index 5a0a1a84b97dad02502fc39eb97f7b5ddc2756f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)09sLGm$9nMpq$xM+1c-?3R=(3?;N}Plru%`L0_c-H z1`Z0qJ14zQp`X1m+m@-Pey*Evux;oJs6U(zNumBEnuLY=Q$Y>vK@BX)37d+cz5cA? z>h#jGnTl1_sS1IFA=ay1oRGBd>0(e>S~+M*L&sG9RSB+84)$>uba~2q9|bVR!BxZp z+RtD8@nA9m3eeU4mR}8B{Ro=tJqA#)p(oJ(PZ&5`8>%O>HdIUww4ne10001hu>%Dd V$oIezF|7aq002ovPDHLkV1gP4h{^x} diff --git a/test-integration/snapshots/signTransactionBasic/nanos.28.png b/test-integration/snapshots/signTransactionBasic/nanos.28.png deleted file mode 100644 index b42d7b08612d408956ed509afd4d555a52e6af02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionBasic/nanos.29.png b/test-integration/snapshots/signTransactionBasic/nanos.29.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIJwVP|-&+bjHGElx`KC6A%>X0?+_KGNgKzVpi zz(#AcMPCvhbx|+?r=Tn|NFv(J7&^}YCmG-fC{lFr-fr%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Fri, 24 Jun 2022 22:33:22 +0200 Subject: [PATCH 20/83] DH commands --- MakefileTest.mk | 2 + src/diffieHellman.c | 61 +- src/diffieHellman.h | 50 +- src/diffieHellmann_test.c | 139 ++-- src/fio.h | 1 + src/keyDerivation.c | 6 +- src/keyDerivation.h | 10 +- src/keyDerivation_test.c | 2 +- src/runTests.c | 25 +- src/securityPolicy.c | 4 + src/securityPolicy.h | 1 + src/signTransaction.c | 731 +++++++++++++----- src/signTransaction.h | 19 +- src/signTransactionCountedSection.c | 12 +- src/signTransactionCountedSection.h | 15 +- src/signTransactionCountedSection_test.c | 2 +- src/signTransactionIntegrity.c | 28 +- src/signTransactionIntegrity.h | 22 +- src/signTransactionIntegrity_test.c | 2 +- src/uiScreens.c | 2 +- test-integration/signTransactionCommandsDH.js | 209 +++++ ...TransactionCommandsDHAndCountedSections.js | 217 ++++++ .../signTransactionCommandsDH/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionCommandsDH/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.03.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.04.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.05.png | Bin 0 -> 372 bytes .../signTransactionCommandsDH/nanos.06.png | Bin 0 -> 447 bytes .../signTransactionCommandsDH/nanos.07.png | Bin 0 -> 377 bytes .../signTransactionCommandsDH/nanos.08.png | Bin 0 -> 424 bytes .../signTransactionCommandsDH/nanos.09.png | Bin 0 -> 356 bytes .../signTransactionCommandsDH/nanos.10.png | Bin 0 -> 426 bytes .../signTransactionCommandsDH/nanos.11.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.12.png | Bin 0 -> 426 bytes .../signTransactionCommandsDH/nanos.13.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.14.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.15.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.16.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.17.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.18.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.19.png | Bin 0 -> 447 bytes .../signTransactionCommandsDH/nanos.20.png | Bin 0 -> 377 bytes .../signTransactionCommandsDH/nanos.21.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.22.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.23.png | Bin 0 -> 426 bytes .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 414 bytes .../nanos.04.png | Bin 0 -> 475 bytes .../nanos.05.png | Bin 0 -> 447 bytes .../nanos.06.png | Bin 0 -> 377 bytes .../nanos.07.png | Bin 0 -> 424 bytes .../nanos.08.png | Bin 0 -> 356 bytes .../nanos.09.png | Bin 0 -> 426 bytes .../nanos.10.png | Bin 0 -> 322 bytes .../nanos.11.png | Bin 0 -> 414 bytes .../nanos.12.png | Bin 0 -> 475 bytes .../nanos.13.png | Bin 0 -> 426 bytes .../nanos.14.png | Bin 0 -> 322 bytes .../nanos.15.png | Bin 0 -> 414 bytes .../nanos.16.png | Bin 0 -> 475 bytes .../nanos.17.png | Bin 0 -> 426 bytes test-integration/speculos-common.js | 2 +- 63 files changed, 1224 insertions(+), 338 deletions(-) create mode 100644 test-integration/signTransactionCommandsDH.js create mode 100644 test-integration/signTransactionCommandsDHAndCountedSections.js create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 27c7879d..b11592dc 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -45,6 +45,8 @@ speculos_port_5001_unit_test_internal: $(call run_nodejs_test,5001,40001,signTransactionCommandsShowData.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsCountedSection.js) $(call run_nodejs_test,5001,40001,signTransactionCommandsStorage.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsDH.js) + $(call run_nodejs_test,5001,40001,signTransactionCommandsDHAndCountedSections.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test diff --git a/src/diffieHellman.c b/src/diffieHellman.c index 98788c12..f27e1f78 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -4,6 +4,7 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, const bip44_path_t* pathSpec, const public_key_t* publicKey) { + TRACE_STACK_USAGE(); private_key_t privateKey; unsigned char basicSecret[32]; unsigned char secret[SHA_512_SIZE]; @@ -12,6 +13,7 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, TRACE("dh_init_aesKey"); BEGIN_TRY { TRY { + TRACE_STACK_USAGE(); derivePrivateKey(pathSpec, &privateKey); // this is how it is done... @@ -43,12 +45,13 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, END_TRY; } -size_t dh_encode_init(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - const uint8_t* iv, - size_t ivSize, - uint8_t* outBuffer, - size_t outSize) { +__noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* iv, + size_t ivSize, + uint8_t* outBuffer, + size_t outSize) { + TRACE_STACK_USAGE(); TRACE("dh_encode_init"); ASSERT(ivSize == SIZEOF(ctx->IV)); @@ -72,13 +75,14 @@ size_t dh_encode_init(dh_context_t* ctx, return SIZEOF(ctx->IV); } -size_t dh_encode_append(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - const uint8_t* inBuffer, - size_t inSize, - uint8_t* outBuffer, - size_t outSize) { +__noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize) { TRACE("dh_encode_append"); + TRACE_STACK_USAGE(); ASSERT(inSize < BUFFER_SIZE_PARANOIA); ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); @@ -91,13 +95,17 @@ size_t dh_encode_append(dh_context_t* ctx, while (processedInput < outSize) { // fill ctx->buffer size_t to_read = MIN(CX_AES_BLOCK_SIZE - ctx->cacheLength, inSize - processedInput); + TRACE("To read %d, processed %d:", (int) to_read, processedInput); + TRACE("Cache %d:", (int) ctx->cacheLength); memcpy(ctx->cache + ctx->cacheLength, inBuffer + processedInput, to_read); ctx->cacheLength += to_read; processedInput += to_read; + TRACE("Cache %d, processed %d:", (int) ctx->cacheLength, processedInput); // if block is only partially filled, we finish encoding, the data was read to cache // this means that there was not enough input to fill the block if (ctx->cacheLength < CX_AES_BLOCK_SIZE) { + TRACE("Block not full"); break; } // cache is full now @@ -105,6 +113,7 @@ size_t dh_encode_append(dh_context_t* ctx, STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); ASSERT(outSize - written >= CX_AES_BLOCK_SIZE); + TRACE_BUFFER(ctx->cache, CX_AES_BLOCK_SIZE); // We work in CBC mode // 1. IV xor plaintext @@ -124,18 +133,21 @@ size_t dh_encode_append(dh_context_t* ctx, explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); } + TRACE("Leaving dh_encode_append, written: %d", (int) written); return written; } -size_t dh_encode_finalize(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - uint8_t* outBuffer, - size_t outSize) { +__noinline_due_to_stack__ size_t dh_encode_finalize(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + uint8_t* outBuffer, + size_t outSize) { TRACE("dh_encode_finalize"); ASSERT(ctx->initialized_magic == HASH_CONTEXT_INITIALIZED_MAGIC); ASSERT(aes_key->initialized_magic == DH_AES_KEY_INITIALIZED_MAGIC); ASSERT(ctx->cacheLength < CX_AES_BLOCK_SIZE); + TRACE("Cache length %d", (int) ctx->cacheLength); + TRACE_BUFFER(ctx->cache, ctx->cacheLength); // fill the last cache block with integers equal to number of elements missing // if the next block is empty we create a block full of 0x10 (CX_AES_BLOCK_SIZE) @@ -171,14 +183,14 @@ size_t dh_encode_finalize(dh_context_t* ctx, return CX_AES_BLOCK_SIZE + DH_HMAC_SIZE; } -size_t dh_encode(bip44_path_t* pathSpec, - public_key_t* publicKey, - const uint8_t* iv, - size_t ivSize, - const uint8_t* inBuffer, - size_t inSize, - uint8_t* outBuffer, - size_t outSize) { +__noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, + public_key_t* publicKey, + const uint8_t* iv, + size_t ivSize, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize) { dh_aes_key_t key; TRACE("dh_encode"); @@ -188,6 +200,7 @@ size_t dh_encode(bip44_path_t* pathSpec, BEGIN_TRY { TRY { + TRACE_STACK_USAGE(); dh_init_aes_key(&key, pathSpec, publicKey); dh_context_t ctx; diff --git a/src/diffieHellman.h b/src/diffieHellman.h index cf677fca..f4d5fb26 100644 --- a/src/diffieHellman.h +++ b/src/diffieHellman.h @@ -49,37 +49,37 @@ __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, const bip44_path_t* pathSpec, const public_key_t* publicKey); -size_t dh_encode_init(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - const uint8_t* iv, - size_t ivSize, - uint8_t* outBuffer, - size_t outSize); +__noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* iv, + size_t ivSize, + uint8_t* outBuffer, + size_t outSize); -size_t dh_encode_append(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - const uint8_t* inBuffer, - size_t inSize, - uint8_t* outBuffer, - size_t outSize); +__noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize); -size_t dh_encode_finalize(dh_context_t* ctx, - const dh_aes_key_t* aes_key, - uint8_t* outBuffer, - size_t outSize); +__noinline_due_to_stack__ size_t dh_encode_finalize(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + uint8_t* outBuffer, + size_t outSize); /* Convenience function to make all in one step */ -size_t dh_encode(bip44_path_t* pathSpec, - public_key_t* publicKey, - const uint8_t* iv, - size_t ivSize, - const uint8_t* inBuffer, - size_t inSize, - uint8_t* outBuffer, - size_t outSize); +__noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, + public_key_t* publicKey, + const uint8_t* iv, + size_t ivSize, + const uint8_t* inBuffer, + size_t inSize, + uint8_t* outBuffer, + size_t outSize); #ifdef DEVEL -void run_diffieHellman_test(); +__noinline_due_to_stack__ void run_diffieHellman_test(); #endif // DEVEL #endif \ No newline at end of file diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index 98460582..3e054a1d 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -5,6 +5,7 @@ #include "testUtils.h" #include "utils.h" #include "bip44.h" +#include "state.h" #define HD HARDENED_BIP32 @@ -16,13 +17,16 @@ // It was not very convenient to use higher level funtions for this purpose as they depend on fio // serialization -static void pathSpec_init(bip44_path_t* pathSpec, const uint32_t* pathArray, uint32_t pathLength) { +__noinline_due_to_stack__ static void pathSpec_init(bip44_path_t* pathSpec, + const uint32_t* pathArray, + uint32_t pathLength) { pathSpec->length = pathLength; memmove(pathSpec->path, pathArray, pathLength * 4); } -static void run_dh_encode_tests() { +__noinline_due_to_stack__ static void run_dh_encode_tests() { BEGIN_ASSERT_NOEXCEPT { + TRACE_STACK_USAGE(); // initializing derivation paths uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 0}; bip44_path_t pathSpec; @@ -47,9 +51,9 @@ static void run_dh_encode_tests() { #define TESTCASE(msgHex_, expectedEncryptedMsgHex_) \ { \ const char* msgHex = msgHex_; \ - uint8_t msg[200]; \ + uint8_t msg[100]; \ size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ - uint8_t encMsg[300]; \ + uint8_t encMsg[200]; \ size_t encMsgLength = dh_encode(&pathSpec, \ &publicKey, \ IV, \ @@ -59,7 +63,7 @@ static void run_dh_encode_tests() { encMsg, \ SIZEOF(encMsg)); \ const char* expectedEncMsgHex = expectedEncryptedMsgHex_; \ - uint8_t expectedEncMsg[300]; \ + uint8_t expectedEncMsg[200]; \ decode_hex(expectedEncMsgHex, expectedEncMsg, SIZEOF(expectedEncMsg)); \ ASSERT(encMsgLength == strlen(expectedEncMsgHex) / 2); \ EXPECT_EQ_BYTES(expectedEncMsg, encMsg, strlen(expectedEncMsgHex) / 2); \ @@ -99,8 +103,10 @@ static void run_dh_encode_tests() { END_ASSERT_NOEXCEPT; } -void run_dh_encode_init_append_finalize_tests() { +__noinline_due_to_stack__ static void run_dh_encode_init_append_finalize_tests() { BEGIN_ASSERT_NOEXCEPT { + TRACE_STACK_USAGE(); + // initializing derivation paths uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; bip44_path_t pathSpec; @@ -109,39 +115,41 @@ void run_dh_encode_init_append_finalize_tests() { PRINTF("\n"); public_key_t publicKey; - const char* publicKeyHex = - "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1b" - "d84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; - uint8_t publicKeyBuffer[65]; - size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); - ASSERT(publicKeyLen == 65); - cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, - publicKeyBuffer, - publicKeyLen, - &publicKey); + { + const char* publicKeyHex = + "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf1" + "5e1b" + "d84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = + decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + publicKeyBuffer, + publicKeyLen, + &publicKey); + } const uint8_t IV[DH_AES_IV_SIZE] = {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; dh_aes_key_t key; dh_init_aes_key(&key, &pathSpec, &publicKey); - dh_context_t ctx; + uint8_t inBuffer[60]; + uint8_t outBuffer[120]; + uint8_t expected[120]; const char* inBufferHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" "bbccddeeff"; - uint8_t inBuffer[100]; size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); const char* expectedHex = "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6" "ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f" "449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; - uint8_t expected[150]; decode_hex(expectedHex, expected, SIZEOF(expected)); - uint8_t outBuffer[150]; size_t outBufferLength = 0; - outBufferLength = dh_encode(&pathSpec, &publicKey, IV, @@ -156,53 +164,62 @@ void run_dh_encode_init_append_finalize_tests() { size_t read = 0; size_t written = 0; - - outBufferLength = dh_encode_init(&ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected + written, outBuffer, 16); - written += 16; - - outBufferLength = - dh_encode_append(&ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 1; - - outBufferLength = - dh_encode_append(&ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 14; - - outBufferLength = - dh_encode_append(&ctx, &key, inBuffer + read, 18, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 32); - EXPECT_EQ_BYTES(expected + written, outBuffer, 32); - read += 18, written += 32; - - outBufferLength = - dh_encode_append(&ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 0); - read += 1; - - outBufferLength = - dh_encode_append(&ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected + written, outBuffer, 16); - read += 14, written += 16; - - outBufferLength = dh_encode_finalize(&ctx, &key, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 48); - EXPECT_EQ_BYTES(expected + written, outBuffer, 48); - written += 48; - - ASSERT(read == inBufferLength); + { + TRACE_STACK_USAGE(); + // due to memory limitations we reuse static tx data + dh_context_t* ctx = &instructionState.signTransactionContext.dhContext; + outBufferLength = + dh_encode_init(ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected + written, outBuffer, 16); + written += 16; + + { + outBufferLength = + dh_encode_append(ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + } + { + outBufferLength = + dh_encode_append(ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 14; + } + + outBufferLength = + dh_encode_append(ctx, &key, inBuffer + read, 18, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 32); + EXPECT_EQ_BYTES(expected + written, outBuffer, 32); + read += 18, written += 32; + + outBufferLength = + dh_encode_append(ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 0); + read += 1; + + outBufferLength = + dh_encode_append(ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 16); + EXPECT_EQ_BYTES(expected + written, outBuffer, 16); + read += 14, written += 16; + + outBufferLength = dh_encode_finalize(ctx, &key, outBuffer, SIZEOF(outBuffer)); + ASSERT(outBufferLength == 48); + EXPECT_EQ_BYTES(expected + written, outBuffer, 48); + written += 48; + + ASSERT(read == inBufferLength); + } } END_ASSERT_NOEXCEPT; } -void run_diffieHellman_test() { +__noinline_due_to_stack__ void run_diffieHellman_test() { PRINTF("Running DH tests\n"); PRINTF("If they fail, make sure you seeded your device with\n"); PRINTF("12-word mnemonic: 11*abandon about\n"); + TRACE_STACK_USAGE(); run_dh_encode_tests(); run_dh_encode_init_append_finalize_tests(); } diff --git a/src/fio.h b/src/fio.h index 09d09302..d2802a72 100644 --- a/src/fio.h +++ b/src/fio.h @@ -30,6 +30,7 @@ void name_to_string(name_t value, char *out, size_t size); void uint8array_name_to_string(const uint8_t *value, size_t valueSize, char *out, size_t outSize); #define MAX_WIF_PUBKEY_LENGTH 55 +#define PUBKEY_LENGTH 65 #define MAX_TPID_LENGTH 21 #define MAX_SINGLE_BYTE_LENGTH 127 diff --git a/src/keyDerivation.c b/src/keyDerivation.c index 0215f99e..21b8be01 100644 --- a/src/keyDerivation.c +++ b/src/keyDerivation.c @@ -12,7 +12,8 @@ #define PRIVATE_KEY_SEED_LEN 32 -void derivePrivateKey(const bip44_path_t* pathSpec, private_key_t* privateKey) { +__noinline_due_to_stack__ void derivePrivateKey(const bip44_path_t* pathSpec, + private_key_t* privateKey) { ENSURE_NOT_DENIED(policyDerivePrivateKey(pathSpec)); // Sanity check @@ -42,7 +43,8 @@ void derivePrivateKey(const bip44_path_t* pathSpec, private_key_t* privateKey) { END_TRY; } -void derivePublicKey(const bip44_path_t* pathSpec, public_key_t* publicKey) { +__noinline_due_to_stack__ void derivePublicKey(const bip44_path_t* pathSpec, + public_key_t* publicKey) { private_key_t privateKey; BEGIN_TRY { TRY { diff --git a/src/keyDerivation.h b/src/keyDerivation.h index 7aa1f121..70106464 100644 --- a/src/keyDerivation.h +++ b/src/keyDerivation.h @@ -4,8 +4,8 @@ #include "common.h" #include "handlers.h" #include "bip44.h" +#include "utils.h" -#define PUBLIC_KEY_SIZE (32) #define CHAIN_CODE_SIZE (32) typedef cx_ecfp_private_key_t private_key_t; @@ -15,14 +15,14 @@ typedef struct { uint8_t code[CHAIN_CODE_SIZE]; } chain_code_t; -void derivePrivateKey(const bip44_path_t* pathSpec, - private_key_t* privateKey // output +__noinline_due_to_stack__ void derivePrivateKey(const bip44_path_t* pathSpec, + private_key_t* privateKey // output ); -void derivePublicKey(const bip44_path_t* pathSpec, public_key_t* out); +__noinline_due_to_stack__ void derivePublicKey(const bip44_path_t* pathSpec, public_key_t* out); #ifdef DEVEL -void run_key_derivation_test(); +__noinline_due_to_stack__ void run_key_derivation_test(); #endif // DEVEL #endif // H_FIO_APP_KEY_DERIVATION diff --git a/src/keyDerivation_test.c b/src/keyDerivation_test.c index 353f332b..9ea3357d 100644 --- a/src/keyDerivation_test.c +++ b/src/keyDerivation_test.c @@ -103,7 +103,7 @@ void testPublicKeyDerivation() { #undef TESTCASE } -void run_key_derivation_test() { +__noinline_due_to_stack__ void run_key_derivation_test() { PRINTF("Running key derivation tests\n"); PRINTF("If they fail, make sure you seeded your device with\n"); PRINTF("12-word mnemonic: 11*abandon about\n"); diff --git a/src/runTests.c b/src/runTests.c index 60e6a22c..99b00242 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -13,6 +13,7 @@ #include "diffieHellman.h" #include "signTransactionIntegrity.h" #include "signTransactionCountedSection.h" +#include "utils.h" void handleRunTests(uint8_t p1 MARK_UNUSED, uint8_t p2 MARK_UNUSED, @@ -22,15 +23,23 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, // Note: Make sure to have RESET_ON_CRASH flag disabled // as it interferes with tests verifying assertions BEGIN_ASSERT_NOEXCEPT { + TRACE_STACK_USAGE(); PRINTF("Running tests\n"); - run_hex_test(); - run_endian_test(); - run_textUtils_test(); - run_bip44_test(); - run_key_derivation_test(); - run_diffieHellman_test(); - run_integrityCheck_test(); - run_countedSection_test(); + { + run_hex_test(); + run_endian_test(); + run_textUtils_test(); + run_bip44_test(); + run_key_derivation_test(); + } + { + TRACE_STACK_USAGE(); + run_diffieHellman_test(); + } + { + run_integrityCheck_test(); + run_countedSection_test(); + } PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; diff --git a/src/securityPolicy.c b/src/securityPolicy.c index 3169a2c8..df8f8b57 100644 --- a/src/securityPolicy.c +++ b/src/securityPolicy.c @@ -47,6 +47,10 @@ security_policy_t policyForSignTxInit(const bip44_path_t* pathSpec) { SHOW(); } +security_policy_t policyForSignTxDHEnd() { + PROMPT(); +} + security_policy_t policyForSignTxFinish() { PROMPT(); } diff --git a/src/securityPolicy.h b/src/securityPolicy.h index d3889754..40b14180 100644 --- a/src/securityPolicy.h +++ b/src/securityPolicy.h @@ -19,6 +19,7 @@ security_policy_t policyForSignTxInit(const bip44_path_t* pathSpec); security_policy_t policyDerivePrivateKey(const bip44_path_t* pathSpec); +security_policy_t policyForSignTxDHEnd(); security_policy_t policyForSignTxFinish(); static inline void ENSURE_NOT_DENIED(security_policy_t policy) { diff --git a/src/signTransaction.c b/src/signTransaction.c index b3e8568d..2fa0662e 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -1,11 +1,12 @@ #include "common.h" #include "handlers.h" +#include "endian.h" +#include "eos_utils.h" #include "getSerial.h" #include "state.h" #include "hash.h" -#include "endian.h" -#include "eos_utils.h" +#include "lcx_rng.h" #include "securityPolicy.h" #include "signTransactionCountedSection.h" #include "signTransactionIntegrity.h" @@ -29,16 +30,58 @@ enum { // ============================== MISC ============================== -static void respondSuccessEmptyMsg() { - TRACE(); - io_send_buf(SUCCESS, NULL, 0); - ui_displayBusy(); // needs to happen after I/O +// Taken from EOS app. Needed to produce signatures. +static uint8_t const SECP256K1_N[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41}; + +// Uses ctx->dataToAppendToTx, ctx->dataToAppendToTxLen to extend hash +// If ctx->dhIsActive then, we extend hash with encrypted data and prepare resulting encrypted +// blocks to G_io_apdu_buffer, ctx->responseLength Variables (&ctx->wittnessPath, &ctx->otherPubkey, +// &ctx->dhContext) are needed for encryption +static void processShaAndPosibleDHAndPrepareResponse() { + if (ctx->dhIsActive) { + dh_aes_key_t aesKey; + BEGIN_TRY { + TRY { + // Compute AES key + dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); + + // Encode message chung + ctx->responseLength = dh_encode_append(&ctx->dhContext, + &aesKey, + ctx->dataToAppendToTx, + ctx->dataToAppendToTxLen, + G_io_apdu_buffer, + SIZEOF(G_io_apdu_buffer)); + sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + } + FINALLY { + explicit_bzero(&aesKey, SIZEOF(aesKey)); + } + } + END_TRY; + } else { + sha_256_append(&ctx->hashContext, ctx->dataToAppendToTx, ctx->dataToAppendToTxLen); + ctx->responseLength = 0; + } } -// Taken from EOS app. Needed to produce signatures. -uint8_t const SECP256K1_N[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, - 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41}; +// Takes &ctx->wittnessPath and modifies ctx->value to be null terminated scting to display the +// pubkey +static void prepareOurPubkeyForDisplay() { + public_key_t wittnessPathPubkey; + explicit_bzero(&wittnessPathPubkey, SIZEOF(wittnessPathPubkey)); + derivePublicKey(&ctx->wittnessPath, &wittnessPathPubkey); + TRACE_BUFFER(wittnessPathPubkey.W, SIZEOF(wittnessPathPubkey.W)); + + uint32_t outlen = public_key_to_wif(wittnessPathPubkey.W, + SIZEOF(wittnessPathPubkey.W), + ctx->value, + SIZEOF(ctx->value)); + ASSERT(outlen < SIZEOF(ctx->value)); + ctx->value[outlen] = 0; +} // =====SIMPLE UI STEP SHOWING JUST ONE OR NO SCREEN ================= @@ -60,7 +103,9 @@ static void signTx_ui_runStep_simple() { } UI_STEP(HANDLE_SIMPLE_STEP_RESPOND) { - respondSuccessEmptyMsg(); + TRACE(); + io_send_buf(SUCCESS, G_io_apdu_buffer, ctx->responseLength); + ui_displayBusy(); // needs to happen after I/O } UI_STEP_END(HANDLE_SIMPLE_STEP_INVALID); @@ -73,39 +118,45 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format + VALIDATE(constSize == 0, ERR_INVALID_DATA); struct { uint8_t chainId[CHAIN_ID_LENGTH]; uint8_t derivationPath[1 + sizeof(uint32_t) * BIP44_MAX_PATH_ELEMENTS]; // 1 stands for number of // derivation math elements }* varData = (void*) varDataBuffer; - { - VALIDATE(constSize == 0, ERR_INVALID_DATA); - VALIDATE(varSize >= SIZEOF(varData->chainId), ERR_INVALID_DATA); - } + VALIDATE(varSize >= SIZEOF(varData->chainId), ERR_INVALID_DATA); - // Parse data - prepare to display + // Parsing: network, ctx->wittnessPath, ctx->dataToAppendToTx, + network_type_t network = NETWORK_UNKNOWN; { - const network_type_t network = - getNetworkByChainId(varData->chainId, SIZEOF(varData->chainId)); + network = getNetworkByChainId(varData->chainId, SIZEOF(varData->chainId)); TRACE("Chain: %d", (int) network); VALIDATE(network == NETWORK_MAINNET || network == NETWORK_TESTNET, ERR_INVALID_DATA); - const size_t derivationPathLength = varSize - SIZEOF(varData->chainId); - const size_t parsedSize = - bip44_parseFromWire(&ctx->wittnessPath, varData->derivationPath, derivationPathLength); - VALIDATE(parsedSize == derivationPathLength, ERR_INVALID_DATA); - PRINTF("Derivation path:"); - BIP44_PRINTF(&ctx->wittnessPath); - PRINTF("\n"); + const size_t parsedSize = bip44_parseFromWire(&ctx->wittnessPath, + varData->derivationPath, + varSize - SIZEOF(varData->chainId)); + VALIDATE(parsedSize == varSize - SIZEOF(varData->chainId), ERR_INVALID_DATA); + + STATIC_ASSERT(SIZEOF(ctx->dataToAppendToTx) >= SIZEOF(varData->chainId), + "Buffer too small"); + memcpy(ctx->dataToAppendToTx, varData->chainId, SIZEOF(varData->chainId)); + ctx->dataToAppendToTxLen = SIZEOF(varData->chainId); + } + // Prepare display variables ctx->key, ctx->value + { + TRACE_STACK_USAGE(); snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Chain"); switch (network) { #define CASE(NETWORK, CHAIN_STRING) \ @@ -120,12 +171,17 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, #undef CASE } } + // Reading data finished, from now on we use G_io_apdu_buffer for output - // Apend data to hash + // Append data to hash and prepare response (none) { - VALIDATE(countedSectionProcess(&ctx->countedSections, SIZEOF(varData->chainId)), + TRACE_STACK_USAGE(); + VALIDATE(!ctx->dhIsActive, ERR_INVALID_STATE); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->dataToAppendToTxLen), ERR_INVALID_DATA); - sha_256_append(&ctx->hashContext, varData->chainId, SIZEOF(varData->chainId)); + sha_256_append(&ctx->hashContext, ctx->dataToAppendToTx, ctx->dataToAppendToTxLen); + + ctx->responseLength = 0; } // Security policy @@ -162,25 +218,36 @@ __noinline_due_to_stack__ void signTx_handleAppendConstDataAPDU( size_t constSize, MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format struct { - uint8_t data[MAX_APPEND_CONST_DATA_LEN]; + uint8_t data[MAX_TX_APPEND_IN_SINGLE_APDU]; }* constData = (void*) constDataBuffer; + VALIDATE(constSize < MAX_TX_APPEND_IN_SINGLE_APDU, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); + + // Parsing: ctx->dataToAppendToTx, ctx->dataToAppendToTxLen + // Preparing display variables ctx->key, ctx->value { - VALIDATE(constSize < MAX_APPEND_CONST_DATA_LEN, ERR_INVALID_DATA); - VALIDATE(varSize == 0, ERR_INVALID_DATA); + memcpy(ctx->dataToAppendToTx, constData, constSize); + ctx->dataToAppendToTxLen = constSize; + ctx->key[0] = 0; + ctx->value[0] = 0; } + // Reading data finished, from now on we use G_io_apdu_buffer for output - // Apend data to hash + // Append data to hash (with possible DH encryption) and prepare response { - VALIDATE(countedSectionProcess(&ctx->countedSections, constSize), ERR_INVALID_DATA); - sha_256_append(&ctx->hashContext, constData->data, constSize); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->dataToAppendToTxLen), + ERR_INVALID_DATA); + processShaAndPosibleDHAndPrepareResponse(); } // Run ui step @@ -196,41 +263,50 @@ __noinline_due_to_stack__ void signTx_handleShowMessageAPDU( size_t constSize, MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format struct { - uint8_t keyLen; - uint8_t key[MAX_DISPLAY_KEY_LENGTH]; + uint8_t displayKeyLen; + uint8_t displayKey[MAX_DISPLAY_KEY_LENGTH]; }* constData = (void*) constDataBuffer; - { - VALIDATE(constSize >= 1, ERR_INVALID_DATA); - VALIDATE(constData->keyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); - VALIDATE(constSize >= 2 + constData->keyLen, ERR_INVALID_DATA); - VALIDATE(varSize == 0, ERR_INVALID_DATA); - str_validateTextBuffer(constData->key, constData->keyLen); - } + VALIDATE(constSize >= 1, ERR_INVALID_DATA); + VALIDATE(constData->displayKeyLen < MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize >= 2 + constData->displayKeyLen, ERR_INVALID_DATA); struct { - uint8_t valueLen; - uint8_t value[MAX_DISPLAY_VALUE_LENGTH]; - }* constData2 = (void*) constDataBuffer + 1 + constData->keyLen; + uint8_t displayValueLen; + uint8_t displayValue[MAX_DISPLAY_VALUE_LENGTH]; + }* constData2 = (void*) constDataBuffer + 1 + constData->displayKeyLen; + VALIDATE(constData2->displayValueLen < MAX_DISPLAY_VALUE_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize == 2 + constData->displayKeyLen + constData2->displayValueLen, + ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); + + // Parsing + // Prepare display variables ctx->key, ctx->value { - VALIDATE(constData2->valueLen <= MAX_DISPLAY_VALUE_LENGTH - 1, ERR_INVALID_DATA); - VALIDATE(constSize == 2 + constData->keyLen + constData2->valueLen, ERR_INVALID_DATA); - str_validateTextBuffer(constData2->value, constData2->valueLen); + STATIC_ASSERT(SIZEOF(ctx->key) >= SIZEOF(constData->displayKey), + "Display buffer too small"); + STATIC_ASSERT(SIZEOF(ctx->value) >= SIZEOF(constData2->displayValue), + "Display buffer too small"); + str_validateTextBuffer(constData->displayKey, constData->displayKeyLen); + str_validateTextBuffer(constData2->displayValue, constData2->displayValueLen); + memmove(ctx->key, constData->displayKey, constData->displayKeyLen); + ctx->key[constData->displayKeyLen] = 0; + memmove(ctx->value, constData2->displayValue, constData2->displayValueLen); + ctx->key[constData2->displayValueLen] = 0; } - // Parse data - prepare to display - { - memmove(ctx->key, constData->key, constData->keyLen); - ctx->key[constData->keyLen] = 0; - memmove(ctx->value, constData2->value, constData2->valueLen); - ctx->key[constData2->valueLen] = 0; - } + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Append data to hash (none) and prepare response (none) + { ctx->responseLength = 0; } // Run ui step ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; @@ -244,50 +320,33 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate const data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format struct { uint8_t valueFormat; uint8_t valueValidation; uint8_t valueValidationArg1[8]; uint8_t valueValidationArg2[8]; uint8_t valuePolicyAndStorage; - uint8_t keyLen; - uint8_t key[MAX_DISPLAY_KEY_LENGTH]; + uint8_t displayKeyLen; + uint8_t displayKey[MAX_DISPLAY_KEY_LENGTH]; }* constData = (void*) constDataBuffer; - { - VALIDATE(constSize >= 20, ERR_INVALID_DATA); - VALIDATE(constData->keyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); - VALIDATE(constSize == 20 + constData->keyLen, ERR_INVALID_DATA); - str_validateTextBuffer(constData->key, constData->keyLen); - } - - // Parse data - prepare to display - { - memcpy(ctx->key, constData->key, constData->keyLen); - ctx->key[constData->keyLen] = 0; - - parseValueToDisplay(constData->valueFormat, - constData->valueValidation, - constData->valueValidationArg1, - constData->valueValidationArg2, - varDataBuffer, - varSize, - ctx->value); - } - - // Apend data to hash - { - VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); - sha_256_append(&ctx->hashContext, varDataBuffer, varSize); - } + VALIDATE(constSize >= 20, ERR_INVALID_DATA); + VALIDATE(constData->displayKeyLen <= MAX_DISPLAY_KEY_LENGTH - 1, ERR_INVALID_DATA); + VALIDATE(constSize == 20 + constData->displayKeyLen, ERR_INVALID_DATA); + struct { + uint8_t value[MAX_TX_APPEND_IN_SINGLE_APDU]; + }* varData = (void*) varDataBuffer; + VALIDATE(varSize <= MAX_TX_APPEND_IN_SINGLE_APDU, ERR_INVALID_DATA); - // Stograge + // Storage validation { tx_storage_check_t storage = constData->valuePolicyAndStorage & 0xF0; TRACE("Storage request :%d, Stored length %d,%d,%d", @@ -297,13 +356,13 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, (int) ctx->storage.storedValueLen3); TRACE("Initialized: %d", ctx->storage.initialized_magic); switch (storage) { -#define CASE_STORAGE_EQUALS(n) \ - case VALUE_STORAGE_CHECK_R##n: { \ - ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ - ASSERT(ctx->storage.storedValueLen##n <= SIZEOF(ctx->storage.storedValue##n)); \ - VALIDATE(ctx->storage.storedValueLen##n == varSize, ERR_INVALID_DATA); \ - VALIDATE(!memcmp(ctx->storage.storedValue##n, varDataBuffer, varSize), ERR_INVALID_DATA); \ - break; \ +#define CASE_STORAGE_EQUALS(n) \ + case VALUE_STORAGE_CHECK_R##n: { \ + ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ + ASSERT(ctx->storage.storedValueLen##n <= SIZEOF(ctx->storage.storedValue##n)); \ + VALIDATE(ctx->storage.storedValueLen##n == varSize, ERR_INVALID_DATA); \ + VALIDATE(!memcmp(ctx->storage.storedValue##n, varData->value, varSize), ERR_INVALID_DATA); \ + break; \ } CASE_STORAGE_EQUALS(1); CASE_STORAGE_EQUALS(2); @@ -316,9 +375,39 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, } } + // Parsing ctx->dataToAppendToTx, ctx->dataToAppendToTxLen + // Prepare display variables ctx->key, ctx->value, policy + security_policy_t policy = POLICY_DENY; + { + str_validateTextBuffer(constData->displayKey, constData->displayKeyLen); + memcpy(ctx->key, constData->displayKey, constData->displayKeyLen); + ctx->key[constData->displayKeyLen] = 0; + + parseValueToDisplay(constData->valueFormat, + constData->valueValidation, + constData->valueValidationArg1, + constData->valueValidationArg2, + varData->value, + varSize, + ctx->value); + + memcpy(ctx->dataToAppendToTx, varData->value, varSize); + ctx->dataToAppendToTxLen = varSize; + + policy = constData->valuePolicyAndStorage & 0x0F; + } + + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Append data to hash (with possible DH encryption) and prepare response + { + VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); + processShaAndPosibleDHAndPrepareResponse(); + } + // Policy { - security_policy_t policy = constData->valuePolicyAndStorage & 0x0F; + TRACE("Policy %d", (int) policy); switch (policy) { #define CASE(POLICY, UI_STEP) \ case POLICY: { \ @@ -344,22 +433,28 @@ __noinline_due_to_stack__ void signTx_handleStartCountedSectionAPDU(uint8_t p2, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate const data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format struct { uint8_t valueFormat; uint8_t valueValidation; uint8_t valueValidationArg1[8]; uint8_t valueValidationArg2[8]; }* constData = (void*) constDataBuffer; - { VALIDATE(constSize == SIZEOF(*constData), ERR_INVALID_DATA); } + VALIDATE(constSize == SIZEOF(*constData), ERR_INVALID_DATA); + struct { + uint8_t value[MAX_TX_APPEND_IN_SINGLE_APDU]; + }* varData = (void*) varDataBuffer; + VALIDATE(varSize <= MAX_TX_APPEND_IN_SINGLE_APDU, ERR_INVALID_DATA); - // Parse data - prepare to display + // Parse data numberOfExpectedBytes, ctx->dataToAppendToTx, ctx->dataToAppendToTxLen uint32_t numberOfExpectedBytes = 0; { uint64_t value = 0; @@ -367,19 +462,31 @@ __noinline_due_to_stack__ void signTx_handleStartCountedSectionAPDU(uint8_t p2, constData->valueValidation, constData->valueValidationArg1, constData->valueValidationArg2, - varDataBuffer, + varData->value, varSize, &value); - VALIDATE(value <= UINT32_MAX, ERR_INVALID_DATA); + VALIDATE(value <= UINT32_MAX, ERR_INVALID_DATA); // to fit into uint32_t numberOfExpectedBytes = value; + + memcpy(ctx->dataToAppendToTx, varData->value, varSize); + ctx->dataToAppendToTxLen = varSize; + } + + // Preparing display variables ctx->key, ctx->value + { + ctx->key[0] = 0; + ctx->value[0] = 0; } - // Apend data to hash + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Append data to hash (with possible DH encryption) and prepare response, begin counted section { + // this data does not count towards new counted section but counts towards old ones VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); VALIDATE(countedSectionBegin(&ctx->countedSections, numberOfExpectedBytes), ERR_INVALID_DATA); - sha_256_append(&ctx->hashContext, varDataBuffer, varSize); + processShaAndPosibleDHAndPrepareResponse(); } // Run ui step @@ -395,20 +502,36 @@ __noinline_due_to_stack__ void signTx_handleEndCountedSectionAPDU( size_t constSize, MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { - // Sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } + + // Data format + VALIDATE(constSize == 0, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); - // Validate const data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Preparing display variables ctx->key, ctx->value { - VALIDATE(constSize == 0, ERR_INVALID_DATA); - VALIDATE(varSize == 0, ERR_INVALID_DATA); + ctx->key[0] = 0; + ctx->value[0] = 0; } - // Apend data to hash (no data) - { VALIDATE(countedSectionEnd(&ctx->countedSections), ERR_INVALID_DATA); } + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Apend data to hash (no data) and response (none) + { + // Counted section that started before DH encoding cannot end within DH encoding + if (ctx->dhIsActive) { + VALIDATE(ctx->dhCountedSectionEntryLevel < ctx->countedSections.currentLevel, + ERR_INVALID_STATE); + } + VALIDATE(countedSectionEnd(&ctx->countedSections), ERR_INVALID_DATA); + ctx->responseLength = 0; + } // Run ui step ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; @@ -417,32 +540,37 @@ __noinline_due_to_stack__ void signTx_handleEndCountedSectionAPDU( // ======================= STORE_VALUE =========================== -__noinline_due_to_stack__ void signTx_handleStoreValueAPDU(uint8_t p2, - uint8_t* constDataBuffer, - size_t constSize, - uint8_t* varDataBuffer, - size_t varSize) { - // Sanity checks +__noinline_due_to_stack__ void signTx_handleStoreValueAPDU( + uint8_t p2, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks and trace buffers TRACE_STACK_USAGE(); { - VALIDATE(p2 >= 1 && p2 <= 3, ERR_INVALID_REQUEST_PARAMETERS); - } // as of now we have three slots + VALIDATE(1 <= p2 && p2 <= 3, ERR_INVALID_REQUEST_PARAMETERS); // we have 3 registers + TRACE("Storing to %d", (int) p2); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - TRACE("Storing to %d", (int) p2); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format + VALIDATE(constSize == 0, ERR_INVALID_DATA); + struct { + uint8_t value[MAX_TX_APPEND_IN_SINGLE_APDU]; + }* varData = (void*) varDataBuffer; + // varSize validated in Storage section - // Validate const data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Storage { - VALIDATE(constSize == 0, ERR_INVALID_DATA); switch (p2) { #define CASE(n) \ case n: { \ ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ VALIDATE(varSize <= SIZEOF(ctx->storage.storedValue##n), ERR_INVALID_DATA); \ ctx->storage.storedValueLen##n = varSize; \ - memcpy(ctx->storage.storedValue##n, varDataBuffer, varSize); \ + memcpy(ctx->storage.storedValue##n, varData->value, varSize); \ break; \ } CASE(1); @@ -454,11 +582,266 @@ __noinline_due_to_stack__ void signTx_handleStoreValueAPDU(uint8_t p2, } } + // Preparing display variables ctx->key, ctx->value + { + ctx->key[0] = 0; + ctx->value[0] = 0; + } + + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Apend data to hash (no data) and response (no data) + { ctx->responseLength = 0; } + // Run ui step ctx->ui_step = HANDLE_SIMPLE_STEP_RESPOND; signTx_ui_runStep_simple(); } +// ======================= START DH ENCODING =========================== +enum { + HANDLE_DH_START_STEP_DISPLAY_MESSAGE = 800, + HANDLE_DH_START_STEP_DISPLAY_DETAILS_THEIR_PUBKEY, + HANDLE_DH_START_STEP_RESPOND, + HANDLE_DH_START_STEP_INVALID, +}; + +static void signTx_handleDHStart_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + TRACE_STACK_USAGE(); + ui_callback_fn_t* this_fn = signTx_handleDHStart_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(HANDLE_DH_START_STEP_DISPLAY_MESSAGE) { + ui_displayPaginatedText("Initialize shared", "secred encryption", this_fn); + } + + UI_STEP(HANDLE_DH_START_STEP_DISPLAY_DETAILS_THEIR_PUBKEY) { + ui_displayPaginatedText(ctx->key, ctx->value, this_fn); + } + + UI_STEP(HANDLE_DH_START_STEP_RESPOND) { + io_send_buf(SUCCESS, G_io_apdu_buffer, ctx->responseLength); + ui_displayBusy(); // needs to happen after I/O + } + + UI_STEP_END(HANDLE_DH_START_STEP_INVALID); +} + +__noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU(uint8_t p2, + uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks and trace buffers + TRACE_STACK_USAGE(); + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } + + // Data format + VALIDATE(constSize == 0, ERR_INVALID_DATA); + struct { + uint8_t pubkey[PUBKEY_LENGTH]; + }* varData = (void*) varDataBuffer; + VALIDATE(varSize == PUBKEY_LENGTH, ERR_INVALID_DATA); + + // Parse data ctx->otherPubkey + { + cx_err_t err = cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + varData->pubkey, + SIZEOF(varData->pubkey), + &ctx->otherPubkey); + VALIDATE(err == CX_OK, ERR_INVALID_DATA); + } + + // Preparing display variables ctx->key, ctx->value + { + TRACE_STACK_USAGE(); + snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Their Public Key"); + uint32_t outlen = public_key_to_wif(ctx->otherPubkey.W, + SIZEOF(ctx->otherPubkey.W), + ctx->value, + SIZEOF(ctx->value)); + ASSERT(outlen < SIZEOF(ctx->value)); + ctx->value[outlen] = 0; + } + + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Init DH Encoding + // Append encrypted data to hash and response + { + TRACE_STACK_USAGE(); + VALIDATE(!ctx->dhIsActive, ERR_INVALID_STATE); + + dh_aes_key_t aesKey; + BEGIN_TRY { + TRY { + TRACE_STACK_USAGE(); + // Compute AES key + dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); + + // Generate IV + uint8_t IV[DH_AES_IV_SIZE]; + cx_rng_no_throw(IV, SIZEOF(IV)); + + // INIT dh context + STATIC_ASSERT(DH_AES_IV_SIZE == CX_AES_BLOCK_SIZE, "Unexpected IV length"); + ctx->dhCountedSectionEntryLevel = ctx->countedSections.currentLevel; + ctx->responseLength = dh_encode_init(&ctx->dhContext, + &aesKey, + IV, + SIZEOF(IV), + G_io_apdu_buffer, + SIZEOF(G_io_apdu_buffer)); + ASSERT(ctx->responseLength == DH_AES_IV_SIZE); + } + FINALLY { + explicit_bzero(&aesKey, SIZEOF(aesKey)); + } + } + END_TRY; + + sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->responseLength), + ERR_INVALID_DATA); + ctx->dhIsActive = true; + } + + // Run ui step + ctx->ui_step = HANDLE_DH_START_STEP_DISPLAY_MESSAGE; + signTx_handleDHStart_ui_runStep(); +} + +// ======================= END DH ENCODING =========================== + +enum { + HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY = 900, + HANDLE_DH_END_STEP_CONFIRM, + HANDLE_DH_END_STEP_RESPOND, + HANDLE_DH_END_STEP_INVALID, +}; + +static void signTx_handleDHEnd_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + TRACE_STACK_USAGE(); + ui_callback_fn_t* this_fn = signTx_handleDHEnd_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY) { + ui_displayPaginatedText(ctx->key, ctx->value, this_fn); + } + + UI_STEP(HANDLE_DH_END_STEP_CONFIRM) { + ui_displayPrompt("Encrypt", "shared secret?", this_fn, respond_with_user_reject); + } + + UI_STEP(HANDLE_DH_END_STEP_RESPOND) { + io_send_buf(SUCCESS, G_io_apdu_buffer, ctx->responseLength); + ui_displayBusy(); // needs to happen after I/O + } + + UI_STEP_END(HANDLE_DH_END_STEP_INVALID); +} + +__noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( + uint8_t p2, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, + size_t constSize, + MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, + size_t varSize) { + // Sanity checks and trace buffers + TRACE_STACK_USAGE(); + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } + + // Data format + { + VALIDATE(constSize == 0, ERR_INVALID_DATA); + VALIDATE(varSize == 0, ERR_INVALID_DATA); + } + + // Preparing display variables ctx->key, ctx->value + { + snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Our Public Key"); + prepareOurPubkeyForDisplay(); + } + + // Reading data finished, from now on we use G_io_apdu_buffer for output + + // Apend data to hash (final blocks of DH encryption) and prepare response + { + VALIDATE(ctx->dhIsActive, ERR_INVALID_STATE); + // Counted section that started within DH encoding cannot end after DH encoding + VALIDATE(ctx->dhCountedSectionEntryLevel == ctx->countedSections.currentLevel, + ERR_INVALID_STATE); + + // For purpose of counted sections, we were adding data before encoding (except for DH begin + // call). This was neccesary to handle counted sections within DH encoding. To correctly + // handle counted section outside DH encoding we must add the number of new bytes This is: + // bytes to finish last block: CX_AES_BLOCK_SIZE - ctx->dhContext.cacheLength and HMAC + VALIDATE( + countedSectionProcess(&ctx->countedSections, + CX_AES_BLOCK_SIZE - ctx->dhContext.cacheLength + SHA_256_SIZE), + ERR_INVALID_DATA); + + dh_aes_key_t aesKey; + BEGIN_TRY { + TRY { + // Compute AES key + dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); + + ctx->responseLength = dh_encode_finalize(&ctx->dhContext, + &aesKey, + G_io_apdu_buffer, + SIZEOF(G_io_apdu_buffer)); + ASSERT(ctx->responseLength == + CX_AES_BLOCK_SIZE + + SHA_256_SIZE); // padding always produces one block + HMAC + } + FINALLY { + explicit_bzero(&aesKey, SIZEOF(aesKey)); + } + } + END_TRY; + + sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + ctx->dhIsActive = false; + } + + // Security policy + { + security_policy_t policy = POLICY_DENY; + policy = policyForSignTxDHEnd(); + TRACE("Policy: %d", (int) policy); + ENSURE_NOT_DENIED(policy); + { + // select UI steps + switch (policy) { +#define CASE(POLICY, UI_STEP) \ + case POLICY: { \ + ctx->ui_step = UI_STEP; \ + break; \ + } + CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY); + default: + THROW(ERR_NOT_IMPLEMENTED); +#undef CASE + } + } + } + + signTx_handleDHEnd_ui_runStep(); +} + // ============================== FINISH ============================== enum { @@ -484,7 +867,7 @@ static void signTx_handleFinish_ui_runStep() { } UI_STEP(HANDLE_FINISH_STEP_RESPOND) { - io_send_buf(SUCCESS, G_io_apdu_buffer, 65 + 32); + io_send_buf(SUCCESS, G_io_apdu_buffer, PUBKEY_LENGTH + SHA_256_SIZE); ui_displayBusy(); // needs to happen after I/O ui_idle(); // we are done with this tx } @@ -498,46 +881,41 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( size_t constSize, MARK_UNUSED_NO_DEVEL uint8_t* varDataBuffer, size_t varSize) { - // sanity checks + // Sanity checks and trace buffers TRACE_STACK_USAGE(); - { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); } + { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + TRACE_BUFFER(constDataBuffer, constSize); + TRACE_BUFFER(varDataBuffer, varSize); + } - // Validate data - TRACE_BUFFER(constDataBuffer, constSize); - TRACE_BUFFER(varDataBuffer, varSize); + // Data format { VALIDATE(constSize == 0, ERR_INVALID_DATA); VALIDATE(varSize == 0, ERR_INVALID_DATA); } - // Prepare to display them + // Preparing display variables ctx->key, ctx->value { - public_key_t wittnessPathPubkey; - explicit_bzero(&wittnessPathPubkey, SIZEOF(wittnessPathPubkey)); - derivePublicKey(&ctx->wittnessPath, &wittnessPathPubkey); - TRACE_BUFFER(wittnessPathPubkey.W, SIZEOF(wittnessPathPubkey.W)); - snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Sign with"); - uint32_t outlen = public_key_to_wif(wittnessPathPubkey.W, - SIZEOF(wittnessPathPubkey.W), - ctx->value, - SIZEOF(ctx->value)); - ASSERT(outlen < SIZEOF(ctx->value)); - ctx->value[outlen] = 0; + prepareOurPubkeyForDisplay(); } + // Reading data finished, from now on we use G_io_apdu_buffer for output + // Hash - this is the last call, we finalize it + counted sections - uint8_t hashBuf[32]; + uint8_t hashBuf[SHA_256_SIZE]; explicit_bzero(hashBuf, SIZEOF(hashBuf)); { sha_256_finalize(&ctx->hashContext, hashBuf, SIZEOF(hashBuf)); TRACE("SHA_256_finalize, resulting hash:"); - TRACE_BUFFER(hashBuf, 32); + TRACE_BUFFER(hashBuf, SHA_256_SIZE); } // This is the last call - we need to check integrity of the command sequence + just for good // measures we finalize counted section { + VALIDATE(!ctx->dhIsActive, ERR_INVALID_STATE); VALIDATE(integrityCheckFinalize(&ctx->integrity), ERR_INVALID_STATE); VALIDATE(countedSectionFinalize(&ctx->countedSections), ERR_INVALID_DATA); } @@ -616,7 +994,7 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( } G_io_apdu_buffer[0] = 27 + 4 + (G_io_apdu_buffer[100] & 0x01); ecdsa_der_to_sig(G_io_apdu_buffer + 100, G_io_apdu_buffer + 1); - TRACE_BUFFER(G_io_apdu_buffer, 65); + TRACE_BUFFER(G_io_apdu_buffer, PUBKEY_LENGTH); if (check_canonical(G_io_apdu_buffer + 1)) { break; @@ -637,8 +1015,8 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( // We add hash to the response TRACE("ecdsa_der_to_sig_result:"); - TRACE_BUFFER(G_io_apdu_buffer, 65); - memcpy(G_io_apdu_buffer + 65, hashBuf, 32); + TRACE_BUFFER(G_io_apdu_buffer, PUBKEY_LENGTH); + memcpy(G_io_apdu_buffer + PUBKEY_LENGTH, hashBuf, SHA_256_SIZE); signTx_handleFinish_ui_runStep(); } @@ -666,6 +1044,8 @@ static subhandler_fn_t* lookup_subhandler(uint8_t p1) { CASE(0x05, signTx_handleStartCountedSectionAPDU); CASE(0x06, signTx_handleEndCountedSectionAPDU); CASE(0x07, signTx_handleStoreValueAPDU); + CASE(0x08, signTx_handleStartDHEncodingAPDU); + CASE(0x09, signTx_handleEndDHEncodingAPDU); CASE(0x10, signTx_handleFinishAPDU); DEFAULT(NULL) #undef CASE @@ -679,6 +1059,7 @@ void signTransaction_handleAPDU(uint8_t p1, size_t wireDataSize, bool isNewCall) { TRACE("P1 = 0x%x, P2 = 0x%x, isNewCall = %d", p1, p2, isNewCall); + TRACE_STACK_USAGE(); if (isNewCall) { explicit_bzero(ctx, SIZEOF(*ctx)); @@ -691,6 +1072,8 @@ void signTransaction_handleAPDU(uint8_t p1, TRACE("Storage init"); explicit_bzero(&ctx->storage, SIZEOF(ctx->storage)); ctx->storage.initialized_magic = TX_STORAGE_INITIALIZED_MAGIC; + TRACE("DH inactive"); + ctx->dhIsActive = false; } // Parse APDU into const and non-const part @@ -702,8 +1085,10 @@ void signTransaction_handleAPDU(uint8_t p1, uint8_t* constantData = wireDataBuffer + 2; uint8_t* variableData = constantData + constantDataLen; - // Update integrity and transaction hash - integrityCheckProcessInstruction(&ctx->integrity, p1, p2, constantData, constantDataLen); + { + // Update integrity and transaction hash + integrityCheckProcessInstruction(&ctx->integrity, p1, p2, constantData, constantDataLen); + } subhandler_fn_t* subhandler = lookup_subhandler(p1); VALIDATE(subhandler != NULL, ERR_INVALID_REQUEST_PARAMETERS); diff --git a/src/signTransaction.h b/src/signTransaction.h index a3f298e0..b7e2a298 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -1,6 +1,7 @@ #ifndef H_FIO_APP_SIGN_TRANSACTION #define H_FIO_APP_SIGN_TRANSACTION +#include "diffieHellman.h" #include "handlers.h" #include "hash.h" #include "fio.h" @@ -12,9 +13,9 @@ handler_fn_t signTransaction_handleAPDU; #define MAX_DISPLAY_KEY_LENGTH 20 -#define MAX_DISPLAY_VALUE_LENGTH 200 +#define MAX_DISPLAY_VALUE_LENGTH 2 * PUBKEY_LENGTH + 1 -#define MAX_APPEND_CONST_DATA_LEN 200 +#define MAX_TX_APPEND_IN_SINGLE_APDU PUBKEY_LENGTH typedef struct { uint32_t initialized_magic; @@ -35,11 +36,23 @@ typedef struct { tx_integrity_t integrity; tx_counted_section_t countedSections; tx_value_storage_t storage; + + // This is data before posible DH encoding + uint8_t dataToAppendToTxLen; + uint8_t dataToAppendToTx[MAX_TX_APPEND_IN_SINGLE_APDU]; + + // DH encryption variables + uint8_t dhIsActive; + uint8_t dhCountedSectionEntryLevel; + public_key_t otherPubkey; + dh_context_t dhContext; + int ui_step; + uint8_t responseLength; // Response is in G_io_apdu_buffer + // Null terminated strings to display char key[MAX_DISPLAY_KEY_LENGTH]; char value[MAX_DISPLAY_VALUE_LENGTH]; - } ins_sign_transaction_context_t; #endif // H_FIO_APP_SIGN_TRANSACTION diff --git a/src/signTransactionCountedSection.c b/src/signTransactionCountedSection.c index 846b389b..434486ae 100644 --- a/src/signTransactionCountedSection.c +++ b/src/signTransactionCountedSection.c @@ -5,12 +5,13 @@ enum { TX_COUNTED_SECTION_INITIALIZED_MAGIC = 12345, }; -void countedSectionInit(tx_counted_section_t *cs) { +__noinline_due_to_stack__ void countedSectionInit(tx_counted_section_t *cs) { explicit_bzero(cs, SIZEOF(*cs)); cs->initialized_magic = TX_COUNTED_SECTION_INITIALIZED_MAGIC; } -bool countedSectionBegin(tx_counted_section_t *cs, uint32_t expectedLength) { +__noinline_due_to_stack__ bool countedSectionBegin(tx_counted_section_t *cs, + uint32_t expectedLength) { STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); @@ -25,7 +26,8 @@ bool countedSectionBegin(tx_counted_section_t *cs, uint32_t expectedLength) { return true; } -bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength) { +__noinline_due_to_stack__ bool countedSectionProcess(tx_counted_section_t *cs, + uint32_t expectedLength) { STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); @@ -45,7 +47,7 @@ bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength) { return true; } -bool countedSectionEnd(tx_counted_section_t *cs) { +__noinline_due_to_stack__ bool countedSectionEnd(tx_counted_section_t *cs) { STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); @@ -65,7 +67,7 @@ bool countedSectionEnd(tx_counted_section_t *cs) { return true; } -bool countedSectionFinalize(tx_counted_section_t *cs) { +__noinline_due_to_stack__ bool countedSectionFinalize(tx_counted_section_t *cs) { STATIC_ASSERT(ARRAY_LEN(cs->count) == MAX_NESTED_COUNTED_SECTIONS, "Incorrect tx_counted_section_t count length"); ASSERT(cs->initialized_magic == TX_COUNTED_SECTION_INITIALIZED_MAGIC); diff --git a/src/signTransactionCountedSection.h b/src/signTransactionCountedSection.h index 362e8075..6b880abc 100644 --- a/src/signTransactionCountedSection.h +++ b/src/signTransactionCountedSection.h @@ -3,6 +3,7 @@ #include #include +#include "utils.h" #define MAX_NESTED_COUNTED_SECTIONS 5 @@ -13,18 +14,20 @@ typedef struct { uint8_t currentLevel; } tx_counted_section_t; -void countedSectionInit(tx_counted_section_t *cs); +__noinline_due_to_stack__ void countedSectionInit(tx_counted_section_t *cs); -bool countedSectionBegin(tx_counted_section_t *cs, uint32_t expectedLength); +__noinline_due_to_stack__ bool countedSectionBegin(tx_counted_section_t *cs, + uint32_t expectedLength); -bool countedSectionProcess(tx_counted_section_t *cs, uint32_t expectedLength); +__noinline_due_to_stack__ bool countedSectionProcess(tx_counted_section_t *cs, + uint32_t expectedLength); -bool countedSectionEnd(tx_counted_section_t *cs); +__noinline_due_to_stack__ bool countedSectionEnd(tx_counted_section_t *cs); -bool countedSectionFinalize(tx_counted_section_t *cs); +__noinline_due_to_stack__ bool countedSectionFinalize(tx_counted_section_t *cs); #ifdef DEVEL -void run_countedSection_test(); +__noinline_due_to_stack__ void run_countedSection_test(); #endif // DEVEL #endif // H_FIO_APP_SIGN_COIUNTED_SECTION diff --git a/src/signTransactionCountedSection_test.c b/src/signTransactionCountedSection_test.c index 1d70592a..c3fb80b9 100644 --- a/src/signTransactionCountedSection_test.c +++ b/src/signTransactionCountedSection_test.c @@ -84,7 +84,7 @@ static void correct_test() { ASSERT(countedSectionEnd(&cs)); } -void run_countedSection_test() { +__noinline_due_to_stack__ void run_countedSection_test() { tooMuchNesting_test(); finalizeOnNonZeroLevel_test(); endSectionOnZeroLevel_test(); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index dfb8592a..db9d878f 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -20,6 +20,14 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x3c, 0xc2, 0xa2, 0x0d, 0xfb, 0x3b, 0xde, 0xf4, 0xdd, 0x17, 0xf9, 0x97, 0x1c, 0xc8, 0x42, 0x1a, 0xc3, 0x9f, 0x6a, 0x63, 0x9d, 0x0d, 0x5d, 0x9f, 0xb4, 0x24, 0xcf, 0x6b, 0xe5, 0x7c, 0x38, 0x29}, + // Testing transaction template for signTransactionCommandsDH.js + {0xa3, 0x70, 0x53, 0x1e, 0xf3, 0x3e, 0xbe, 0x29, 0x3c, 0xb7, 0xcd, + 0xd3, 0xe4, 0x2b, 0xe0, 0x19, 0xa0, 0xdf, 0xb1, 0x2c, 0x92, 0xa1, + 0x08, 0x6c, 0xd8, 0x0b, 0xd4, 0xc5, 0x37, 0xce, 0xd2, 0xea}, + // Testing transaction template for signTransactionCommandsDHCountedSections.js + {0x32, 0x94, 0xcb, 0xbb, 0x52, 0x16, 0xfb, 0xe3, 0xff, 0xba, 0x8a, + 0x8f, 0xdd, 0x9d, 0xa6, 0x4b, 0x7d, 0x27, 0x8d, 0x88, 0x53, 0xd0, + 0xfe, 0x52, 0x96, 0x02, 0xed, 0x5d, 0x96, 0x86, 0x20, 0xf0}, #endif // trnsfiopubky {0xf7, 0x6d, 0x8f, 0xa6, 0xfe, 0xe7, 0xf1, 0x7d, 0xaf, 0x97, 0x0b, @@ -31,18 +39,18 @@ enum { TX_INTEGRITY_HASH_INITIALIZED_MAGIC = 12345, }; -void integrityCheckInit(tx_integrity_t *integrity) { +__noinline_due_to_stack__ void integrityCheckInit(tx_integrity_t *integrity) { explicit_bzero(integrity, SIZEOF(*integrity)); integrity->initialized_magic = TX_INTEGRITY_HASH_INITIALIZED_MAGIC; TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -void integrityCheckProcessInstruction(tx_integrity_t *integrity, - uint8_t p1, - uint8_t p2, - const uint8_t *constData, - uint8_t constDataLength) { +__noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t *integrity, + uint8_t p1, + uint8_t p2, + const uint8_t *constData, + uint8_t constDataLength) { ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); sha_256_context_t ctx; sha_256_init(&ctx); @@ -56,9 +64,9 @@ void integrityCheckProcessInstruction(tx_integrity_t *integrity, TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -bool _integrityCheckFinalize(tx_integrity_t *integrity, - const uint8_t (*allowedHashes)[SHA_256_SIZE], - uint16_t allowedHashesLength) { +__noinline_due_to_stack__ bool _integrityCheckFinalize(tx_integrity_t *integrity, + const uint8_t (*allowedHashes)[SHA_256_SIZE], + uint16_t allowedHashesLength) { ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); for (uint16_t i = 0; i < allowedHashesLength; i++) { STATIC_ASSERT(SIZEOF(allowedHashes[i]) == SIZEOF(integrity->integrityHash), @@ -73,6 +81,6 @@ bool _integrityCheckFinalize(tx_integrity_t *integrity, return false; } -bool integrityCheckFinalize(tx_integrity_t *integrity) { +__noinline_due_to_stack__ bool integrityCheckFinalize(tx_integrity_t *integrity) { return _integrityCheckFinalize(integrity, allowedHashes, ARRAY_LEN(allowedHashes)); } diff --git a/src/signTransactionIntegrity.h b/src/signTransactionIntegrity.h index 1a8d7902..92fabcb8 100644 --- a/src/signTransactionIntegrity.h +++ b/src/signTransactionIntegrity.h @@ -10,23 +10,23 @@ typedef struct { uint8_t integrityHash[SHA_256_SIZE]; } tx_integrity_t; -void integrityCheckInit(tx_integrity_t *integrity); +__noinline_due_to_stack__ void integrityCheckInit(tx_integrity_t *integrity); -void integrityCheckProcessInstruction(tx_integrity_t *integrity, - uint8_t p1, - uint8_t p2, - const uint8_t *constData, - uint8_t constDataLength); +__noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t *integrity, + uint8_t p1, + uint8_t p2, + const uint8_t *constData, + uint8_t constDataLength); -bool integrityCheckFinalize(tx_integrity_t *integrity); +__noinline_due_to_stack__ bool integrityCheckFinalize(tx_integrity_t *integrity); #ifdef DEVEL #include "hash.h" -bool _integrityCheckFinalize(tx_integrity_t *integrity, - const uint8_t (*allowedHashes)[SHA_256_SIZE], - uint16_t allowedHashesLength); +__noinline_due_to_stack__ bool _integrityCheckFinalize(tx_integrity_t *integrity, + const uint8_t (*allowedHashes)[SHA_256_SIZE], + uint16_t allowedHashesLength); -void run_integrityCheck_test(); +__noinline_due_to_stack__ void run_integrityCheck_test(); #endif // DEVEL #endif // H_FIO_APP_SIGN_TRANSACTION_INTEGRITY diff --git a/src/signTransactionIntegrity_test.c b/src/signTransactionIntegrity_test.c index 65bf1e77..3260cfd6 100644 --- a/src/signTransactionIntegrity_test.c +++ b/src/signTransactionIntegrity_test.c @@ -73,7 +73,7 @@ static void run6() { run1(); } -void run_integrityCheck_test() { +__noinline_due_to_stack__ void run_integrityCheck_test() { // decode hex for (size_t i = 0; i < ARRAY_LEN(allowedHashes); i++) { decode_hex(allowedHashesHex[i], allowedHashes[i], SIZEOF(allowedHashes[i])); diff --git a/src/uiScreens.c b/src/uiScreens.c index b324372e..8fa12793 100644 --- a/src/uiScreens.c +++ b/src/uiScreens.c @@ -40,7 +40,7 @@ __noinline_due_to_stack__ void ui_displayHexBufferScreen(const char* screenHeade ASSERT(strlen(screenHeader) > 0); ASSERT(strlen(screenHeader) < BUFFER_SIZE_PARANOIA); ASSERT(bufferSize > 0); - ASSERT(bufferSize <= 65); // this is used for hashes, and pubkeys, they are all smaller + ASSERT(bufferSize <= PUBKEY_LENGTH); // This is the longest thing we plan to display char bufferHex[2 * 65 + 1]; explicit_bzero(bufferHex, SIZEOF(bufferHex)); diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js new file mode 100644 index 00000000..0ddf41e0 --- /dev/null +++ b/test-integration/signTransactionCommandsDH.js @@ -0,0 +1,209 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer, sleep } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PrivateKey from '@fioprotocol/fiojs/dist/ecc/key_private.js'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import { checkEncrypt } from "@fioprotocol/fiojs/dist/encryption-check.js" +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal devel DH tranaction"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + let dhEncodedMsg = response12.slice(0, -2).toString("hex"); + + //Append "0102030405" to transaction + const buffer13 = getAPDUDataBuffer("0102030405", ""); + const promise13 = transport.send(215, 0x20, 0x02, 0, buffer13); + const response13 = await promise13; + assert.equal(response13.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response13.slice(0, -2).toString("hex"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "String" (06537472696e67) + const buffer14 = getAPDUDataBuffer("0201000000000000000000000000000000000506537472696e67", "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response14 = await promise14; + assert.equal(response14.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response14.slice(0, -2).toString("hex"); + + //END DH ENCRYPTION + const buffer15 = getAPDUDataBuffer("", ""); + const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); + device.curlButton("right", "Confirm create shared secret"); //!!!!!! + const response15 = await promise15; + assert.equal(response15.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response15.slice(0, -2).toString("hex"); + + // Validate DH encoded secret + const privateKey = PrivateKey(Buffer.from("4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a", "hex")) + const sharedSecret = privateKey.getSharedSecret(PublicKey(Buffer.from(otherPublicKey, "hex"))); + const IV = Buffer.from(dhEncodedMsg, "hex").slice(0, 16); + const msg = Buffer.from("0102030405" + "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67", "hex"); + const encrypt = checkEncrypt(sharedSecret, Buffer.from(msg, "hex"), IV); + assert.equal(encrypt.toString("hex"), dhEncodedMsg.toString("hex")); + + // Finish + const buffer16 = getAPDUDataBuffer("", ""); + const promise16 = transport.send(215, 0x20, 0x10, 0, buffer16); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Our Path"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response16 = await promise16; + + //The signed message should contain chainId + dhEncodedMsg + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"+dhEncodedMsg, "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response16.slice(0, 65)); + assert.equal(response16.slice(65,65+32).toString("hex"), hash1); + assert.equal(response16.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Ending DH encoding without beggining it does not work"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //END DH ENCRYPTION + const buffer15 = getAPDUDataBuffer("", ""); + const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); + await assert.rejects(promise15, err(0x6e06)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "Nested DH encryption disallowed"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer13 = getAPDUDataBuffer("", otherPublicKey); + const promise13 = transport.send(215, 0x20, 0x08, 0, buffer13); + await assert.rejects(promise13, err(0x6e06)); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "You can restart DH encryption. You cannot finish the transaction without finishind DH encoding"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + + //END DH ENCRYPTION + const buffer13 = getAPDUDataBuffer("", ""); + const promise13 = transport.send(215, 0x20, 0x09, 0, buffer13); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); + device.curlButton("right", "Confirm create shared secret"); //!!!!!! + const response13 = await promise13; + assert.equal(response13.slice(-2).toString("hex"), "9000"); + + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer14 = getAPDUDataBuffer("", otherPublicKey); + const promise14 = transport.send(215, 0x20, 0x08, 0, buffer14); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response14 = await promise14; + assert.equal(response14.slice(-2).toString("hex"), "9000"); + + // Finish + const buffer16 = getAPDUDataBuffer("", ""); + const promise16 = transport.send(215, 0x20, 0x10, 0, buffer16); + await assert.rejects(promise16, err(0x6e06)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); \ No newline at end of file diff --git a/test-integration/signTransactionCommandsDHAndCountedSections.js b/test-integration/signTransactionCommandsDHAndCountedSections.js new file mode 100644 index 00000000..e6215efb --- /dev/null +++ b/test-integration/signTransactionCommandsDHAndCountedSections.js @@ -0,0 +1,217 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf, getAPDUDataBuffer, sleep } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import PrivateKey from '@fioprotocol/fiojs/dist/ecc/key_private.js'; +import PublicKey from '@fioprotocol/fiojs/dist/ecc/key_public.js'; +import { checkEncrypt } from "@fioprotocol/fiojs/dist/encryption-check.js" +import crypto from "crypto" +import Signature from '@fioprotocol/fiojs/dist/ecc/signature.js'; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +//We will use 44'/235'/0'/0/0 in this test +const publicKeyHex = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; +const publicKey = PublicKey(Buffer.from(publicKeyHex,"hex")) + +//this validates errors: +function err(errno) { + return (err) => { + assert.strictEqual(err.name, 'TransportStatusError'); + assert.strictEqual(err.statusCode, errno); + return true; + } +} + +await device.makeStartingScreenshot(); + +console.log("This test requires app in DEVEL mode.") + +//This test is not completely standardized +//!!!!!! - indicates places where test may reasonably break as Speculos sometimes does not react to every buttonpress. + +//------------------------------------------------------------------------------------- +testStep(" - - -", "Sign minimal devel DH tranaction"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "40"); // value - 64 (16b IV, 1DH block, 32b HMAC) + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + let dhEncodedMsg = response12.slice(0, -2).toString("hex"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "05"); // value - 5 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response12.slice(0, -2).toString("hex"); + } + + //Append "0102030405" to transaction + const buffer13 = getAPDUDataBuffer("0102030405", ""); + const promise13 = transport.send(215, 0x20, 0x02, 0, buffer13); + const response13 = await promise13; + assert.equal(response13.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response13.slice(0, -2).toString("hex"); + + { + //END_COUNTED_SECTION + const buffer17 = getAPDUDataBuffer("", ""); + const promise17 = transport.send(215, 0x20, 0x06, 0, buffer17); + const response17 = await promise17; + assert.equal(response17.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response17.slice(0, -2).toString("hex"); + } + + //END DH ENCRYPTION + const buffer15 = getAPDUDataBuffer("", ""); + const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); + device.curlButton("right", "Confirm create shared secret"); //!!!!!! + const response15 = await promise15; + assert.equal(response15.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response15.slice(0, -2).toString("hex"); + + // Validate DH encoded secret + const privateKey = PrivateKey(Buffer.from("4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a", "hex")) + const sharedSecret = privateKey.getSharedSecret(PublicKey(Buffer.from(otherPublicKey, "hex"))); + const IV = Buffer.from(dhEncodedMsg, "hex").slice(0, 16); + const msg = Buffer.from("05"+"0102030405", "hex"); + const encrypt = checkEncrypt(sharedSecret, Buffer.from(msg, "hex"), IV); + assert.equal(encrypt.toString("hex"), dhEncodedMsg.toString("hex")); + + { + //END_COUNTED_SECTION + const buffer17 = getAPDUDataBuffer("", ""); + const promise17 = transport.send(215, 0x20, 0x06, 0, buffer17); + const response17 = await promise17; + assert.equal(response17.toString("hex"), "9000"); + } + + // Finish + const buffer16 = getAPDUDataBuffer("", ""); + const promise16 = transport.send(215, 0x20, 0x10, 0, buffer16); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Our Path"); + await device.curlButtonAndScreenshot("right", "Confirm sign with"); + const response16 = await promise16; + + //The signed message should contain chainId + "40"+dhEncodedMsg + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"+"40"+dhEncodedMsg, "hex"); + const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') + const ledgerSignature1 = Signature.fromHex(response16.slice(0, 65)); + assert.equal(response16.slice(65,65+32).toString("hex"), hash1); + assert.equal(response16.slice(65+32,65+32+4).toString("hex"), "9000"); + assert.equal(ledgerSignature1.verify(msg1, publicKey), true); +} +//------------------------------------------------------------------------------------- +testStep(" - - -", "You cannt just end counted section within DH encription without starting it"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "40"); // value - 64 (16b IV, 1DH block, 32b HMAC) + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + } + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + + //END_COUNTED_SECTION + const buffer17 = getAPDUDataBuffer("", ""); + const promise17 = transport.send(215, 0x20, 0x06, 0, buffer17); + await assert.rejects(promise17, err(0x6e06)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------- +testStep(" - - -", "Counted section from within DH encoding mus be finished"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + + { + //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "05"); // value - 5 + const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + } + + //END DH ENCRYPTION + const buffer15 = getAPDUDataBuffer("", ""); + const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); + await assert.rejects(promise15, err(0x6e06)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- + + +await transport.close(); +testEnd(scriptName); +process.stdin.pause(); \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.01.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.03.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.05.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..109df4905cfd28cdbdc0bc27ee13772656b0e551 GIT binary patch literal 372 zcmV-)0gL{LP)lR*7$BtytN(Xs%rRyBMUj>T006+OtlkC)9Q#>bw?a$30eAux zK&lynueSj<((I?_x}9RAa`FJyX)@X1D^`v@pF8@>mi5Z04iwb`=%OBa*?znYP-!yt z$(f?67}WzB5_RemQ3YVP>}NX?J+VPolw&*$vCn{EkhPC`6K;k5M*TK{1A%D>xd%=L zH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@F`AEL$II?P(zWOsu1EolabaEus!5j` zdy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`zgkE9( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.06.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.12.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.14.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.16.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.17.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.19.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.19.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.23.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.03.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.05.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.11.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.11.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.13.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sat, 25 Jun 2022 15:14:53 +0200 Subject: [PATCH 21/83] DH encryption now encodes the result with base64 --- src/diffieHellman.c | 185 ++++++++--- src/diffieHellman.h | 5 + src/diffieHellmann_test.c | 107 +++---- src/runTests.c | 23 +- src/signTransaction.c | 34 +- src/signTransaction.h | 3 + test-integration/signTransactionBasicDH.js | 293 ++++++++++++++++++ test-integration/signTransactionCommandsDH.js | 4 +- ...TransactionCommandsDHAndCountedSections.js | 9 +- .../speculos-buttons-and-snapshots.js | 2 +- 10 files changed, 515 insertions(+), 150 deletions(-) create mode 100644 test-integration/signTransactionBasicDH.js diff --git a/src/diffieHellman.c b/src/diffieHellman.c index f27e1f78..e241530d 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -1,6 +1,83 @@ #include "diffieHellman.h" #include "os_math.h" +//---------------------------- UTILS --------------------------------------- + +static const uint8_t BASE64[64] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; + +static void base64EncBlock(uint8_t in[3], uint8_t out[4]) { + out[0] = BASE64[(in[0] / 0x04) & 0x3F]; + out[1] = BASE64[(in[0] * 0x10 + in[1] / 0x10) & 0x3F]; + out[2] = BASE64[(in[1] * 0x04 + in[2] / 0x40) & 0x3F]; + out[3] = BASE64[in[2] & 0x3F]; +} + +// Returns number of bytes written +// Move unencoded part of inBuffer to the beginning and sets inSize accordingly +static size_t base64EncWholeBlocks(uint8_t* inBuffer, + uint8_t* inSize, + uint8_t* outBuffer, + size_t outSize) { + uint8_t processedBlocks = 0; + while (1) { + // We cannot process whole block + if (*inSize < BASE64_IN_BLOCK_SIZE * (processedBlocks + 1)) { + // move unread inBuffer data to beginning and set new inSize + *inSize -= BASE64_IN_BLOCK_SIZE * processedBlocks; + memmove(inBuffer, inBuffer + BASE64_IN_BLOCK_SIZE * processedBlocks, *inSize); + break; + } + + // process one block, inBuffer + BASE64_IN_BLOCK_SIZE*processedBlocks and next two values + // exist + ASSERT(outSize >= BASE64_OUT_BLOCK_SIZE * (processedBlocks + 1)); + base64EncBlock(inBuffer + BASE64_IN_BLOCK_SIZE * processedBlocks, + outBuffer + BASE64_OUT_BLOCK_SIZE * processedBlocks); + processedBlocks++; + } + return BASE64_OUT_BLOCK_SIZE * processedBlocks; +} + +static size_t processDHOneBlockFromCache(dh_context_t* ctx, + const dh_aes_key_t* aes_key, + uint8_t* outBuffer, + size_t outSize) { + ASSERT(ctx->cacheLength == CX_AES_BLOCK_SIZE); + + // We work in CBC mode + // 1. IV xor plaintext + for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { + ctx->cache[i] ^= ctx->IV[i]; + } + + // 2. encrypt the result to obtain cyphertext 3. use cyphertext as new IV + cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, ctx->IV); + ASSERT(err == CX_OK); + + // append cyphertext (not base64 encrypted) to hmac and clear cache + err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, ctx->IV, CX_AES_BLOCK_SIZE); + ASSERT(err == CX_OK); + explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); + ctx->cacheLength = 0; + + // base64 encode + ASSERT(ctx->base64EncodingCacheLen < BASE64_IN_BLOCK_SIZE); + STATIC_ASSERT(SIZEOF(ctx->base64EncodingCache) >= BASE64_IN_BLOCK_SIZE + CX_AES_BLOCK_SIZE, + "Cache too small"); + memmove(ctx->base64EncodingCache + ctx->base64EncodingCacheLen, ctx->IV, CX_AES_BLOCK_SIZE); + ctx->base64EncodingCacheLen += CX_AES_BLOCK_SIZE; + return base64EncWholeBlocks(ctx->base64EncodingCache, + &ctx->base64EncodingCacheLen, + outBuffer, + outSize); +} + +//---------------------------- DH ENCODING --------------------------------------- + __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, const bip44_path_t* pathSpec, const public_key_t* publicKey) { @@ -59,6 +136,8 @@ __noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, ctx->cacheLength = 0; explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); + ctx->base64EncodingCacheLen = 0; + explicit_bzero(ctx->base64EncodingCache, SIZEOF(ctx->base64EncodingCache)); memcpy(ctx->IV, iv, SIZEOF(ctx->IV)); explicit_bzero(&ctx->hmacCtx, SIZEOF(ctx->hmacCtx)); @@ -69,10 +148,14 @@ __noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, ctx->initialized_magic = HASH_CONTEXT_INITIALIZED_MAGIC; - ASSERT(outSize >= SIZEOF(ctx->IV)); - memcpy(outBuffer, ctx->IV, SIZEOF(ctx->IV)); - - return SIZEOF(ctx->IV); + // Base64 We encode IV + STATIC_ASSERT(SIZEOF(ctx->base64EncodingCache) >= SIZEOF(ctx->IV), "Cache too small"); + memcpy(ctx->base64EncodingCache, ctx->IV, SIZEOF(ctx->IV)); + ctx->base64EncodingCacheLen = SIZEOF(ctx->IV); + return base64EncWholeBlocks(ctx->base64EncodingCache, + &ctx->base64EncodingCacheLen, + outBuffer, + outSize); } __noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, @@ -92,15 +175,12 @@ __noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, size_t processedInput = 0; size_t written = 0; - while (processedInput < outSize) { + while (1) { // fill ctx->buffer size_t to_read = MIN(CX_AES_BLOCK_SIZE - ctx->cacheLength, inSize - processedInput); - TRACE("To read %d, processed %d:", (int) to_read, processedInput); - TRACE("Cache %d:", (int) ctx->cacheLength); memcpy(ctx->cache + ctx->cacheLength, inBuffer + processedInput, to_read); ctx->cacheLength += to_read; processedInput += to_read; - TRACE("Cache %d, processed %d:", (int) ctx->cacheLength, processedInput); // if block is only partially filled, we finish encoding, the data was read to cache // this means that there was not enough input to fill the block @@ -108,29 +188,8 @@ __noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, TRACE("Block not full"); break; } - // cache is full now - // we can encrypt a block, - STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); - STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); - ASSERT(outSize - written >= CX_AES_BLOCK_SIZE); - TRACE_BUFFER(ctx->cache, CX_AES_BLOCK_SIZE); - - // We work in CBC mode - // 1. IV xor plaintext - for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { - ctx->cache[i] ^= ctx->IV[i]; - } - // 2. encrypt the result to obtain cyphertext 3. use cyphertext as new IV - cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, ctx->IV); - ASSERT(err == CX_OK); - memmove(outBuffer + written, ctx->IV, CX_AES_BLOCK_SIZE); - written += CX_AES_BLOCK_SIZE; - - // append cyphertext to hmac and clear cache - err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, ctx->IV, CX_AES_BLOCK_SIZE); - ASSERT(err == CX_OK); - ctx->cacheLength = 0; - explicit_bzero(ctx->cache, SIZEOF(ctx->cache)); + + written += processDHOneBlockFromCache(ctx, aes_key, outBuffer + written, outSize - written); } TRACE("Leaving dh_encode_append, written: %d", (int) written); @@ -156,31 +215,49 @@ __noinline_due_to_stack__ size_t dh_encode_finalize(dh_context_t* ctx, for (size_t i = ctx->cacheLength; i < CX_AES_BLOCK_SIZE; i++) { ctx->cache[i] = fillValue; } + ctx->cacheLength = CX_AES_BLOCK_SIZE; - // encrypt last block - STATIC_ASSERT(SIZEOF(ctx->IV) >= CX_AES_BLOCK_SIZE, "dh_context_t->IV too small"); - STATIC_ASSERT(SIZEOF(ctx->cache) >= CX_AES_BLOCK_SIZE, "dh_context_t->cache too small"); - // 1. IV xor plaintext - for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { - ctx->cache[i] ^= ctx->IV[i]; - } - // 2. eencrypt the result to obtain cyphertext - ASSERT(outSize >= CX_AES_BLOCK_SIZE); - cx_err_t err = cx_aes_enc_block(&aes_key->aesKey, ctx->cache, outBuffer); - ASSERT(err == CX_OK); - - // append cyphertext to hmac - err = cx_hmac_update((cx_hmac_t*) &ctx->hmacCtx, outBuffer, CX_AES_BLOCK_SIZE); - ASSERT(err == CX_OK); + uint8_t written = 0; + written += processDHOneBlockFromCache(ctx, aes_key, outBuffer + written, outSize - written); - // finalize hmac and append it to cyphertext - ASSERT(outSize >= CX_AES_BLOCK_SIZE + DH_HMAC_SIZE); - size_t hmacOutSize = outSize - CX_AES_BLOCK_SIZE; - err = cx_hmac_final((cx_hmac_t*) &ctx->hmacCtx, outBuffer + CX_AES_BLOCK_SIZE, &hmacOutSize); + // finalize hmac and append base64 encode it and append to cyphertext + size_t hmacOutSize = SIZEOF(ctx->base64EncodingCache) - ctx->base64EncodingCacheLen; + cx_err_t err = cx_hmac_final((cx_hmac_t*) &ctx->hmacCtx, + ctx->base64EncodingCache + ctx->base64EncodingCacheLen, + &hmacOutSize); ASSERT(err == CX_OK); ASSERT(hmacOutSize == DH_HMAC_SIZE); + ctx->base64EncodingCacheLen += DH_HMAC_SIZE; + written += base64EncWholeBlocks(ctx->base64EncodingCache, + &ctx->base64EncodingCacheLen, + outBuffer + written, + outSize - written); - return CX_AES_BLOCK_SIZE + DH_HMAC_SIZE; + // the last base64 encoding block + uint8_t lastBlock[3] = {0, 0, 0}; + switch (ctx->base64EncodingCacheLen) { + case 0: + break; + case 1: + ASSERT(outSize >= written + BASE64_OUT_BLOCK_SIZE); + lastBlock[0] = ctx->base64EncodingCache[0]; + base64EncBlock(lastBlock, outBuffer + written); + *(outBuffer + written + 2) = '='; + *(outBuffer + written + 3) = '='; + written += BASE64_OUT_BLOCK_SIZE; + break; + case 2: + ASSERT(outSize >= written + BASE64_OUT_BLOCK_SIZE); + lastBlock[0] = ctx->base64EncodingCache[0]; + lastBlock[1] = ctx->base64EncodingCache[1]; + base64EncBlock(lastBlock, outBuffer + written); + *(outBuffer + written + 3) = '='; + written += BASE64_OUT_BLOCK_SIZE; + break; + default: + ASSERT(false); + } + return written; } __noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, @@ -206,13 +283,19 @@ __noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, dh_context_t ctx; written += dh_encode_init(&ctx, &key, iv, ivSize, outBuffer + written, outSize - written); + TRACE("Init: written %d", written); + TRACE_BUFFER(outBuffer, written); written += dh_encode_append(&ctx, &key, inBuffer, inSize, outBuffer + written, outSize - written); + TRACE("Append: written %d", written); + TRACE_BUFFER(outBuffer, written); written += dh_encode_finalize(&ctx, &key, outBuffer + written, outSize - written); + TRACE("Finalize: written %d", written); + TRACE_BUFFER(outBuffer, written); } FINALLY { explicit_bzero(&key, sizeof(key)); diff --git a/src/diffieHellman.h b/src/diffieHellman.h index f4d5fb26..d4ee5530 100644 --- a/src/diffieHellman.h +++ b/src/diffieHellman.h @@ -22,6 +22,9 @@ enum { #define DH_AES_SECRET_SIZE 32 #define DH_HMAC_SIZE 32 +#define BASE64_IN_BLOCK_SIZE 3 +#define BASE64_OUT_BLOCK_SIZE 4 + // Context does not contain secrets. hmacCtx contains half of SHA-512 hash, but this is of no use // without aesKey. typedef struct { @@ -29,6 +32,8 @@ typedef struct { uint8_t IV[DH_AES_IV_SIZE]; uint8_t cacheLength; uint8_t cache[CX_AES_BLOCK_SIZE]; + uint8_t base64EncodingCacheLen; + uint8_t base64EncodingCache[BASE64_IN_BLOCK_SIZE + DH_HMAC_SIZE]; cx_hmac_sha256_t hmacCtx; } dh_context_t; diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index 3e054a1d..706ab600 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -48,55 +48,46 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { const uint8_t IV[DH_AES_IV_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -#define TESTCASE(msgHex_, expectedEncryptedMsgHex_) \ - { \ - const char* msgHex = msgHex_; \ - uint8_t msg[100]; \ - size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ - uint8_t encMsg[200]; \ - size_t encMsgLength = dh_encode(&pathSpec, \ - &publicKey, \ - IV, \ - DH_AES_IV_SIZE, \ - msg, \ - msgLen, \ - encMsg, \ - SIZEOF(encMsg)); \ - const char* expectedEncMsgHex = expectedEncryptedMsgHex_; \ - uint8_t expectedEncMsg[200]; \ - decode_hex(expectedEncMsgHex, expectedEncMsg, SIZEOF(expectedEncMsg)); \ - ASSERT(encMsgLength == strlen(expectedEncMsgHex) / 2); \ - EXPECT_EQ_BYTES(expectedEncMsg, encMsg, strlen(expectedEncMsgHex) / 2); \ +#define TESTCASE(msgHex_, expectedEncMsg) \ + { \ + const char* msgHex = msgHex_; \ + uint8_t msg[100]; \ + size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ + uint8_t encMsg[200]; \ + size_t encMsgLength = dh_encode(&pathSpec, \ + &publicKey, \ + IV, \ + DH_AES_IV_SIZE, \ + msg, \ + msgLen, \ + encMsg, \ + SIZEOF(encMsg)); \ + ASSERT(encMsgLength == strlen(expectedEncMsg)); \ + EXPECT_EQ_BYTES(encMsg, expectedEncMsg, strlen(expectedEncMsg)); \ } - TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" - "958f0a3a005576d60b64b8e8c732d893f6cd374cabc0b30882b6eebaba7af72826e54b11d48a87059" - "74adf7d957aba1f428f58aca25ac5a") + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdtYLZLjoxzLYk/" + "bNN0yrwLMIgrbuurp69ygm5UsR1IqHBZdK332VerofQo9YrKJaxa"); TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" - "958f0a3a005576df93b5a2ebef58532ec2d2dd21c11fdb590d05a598740af8fd9263343eb1d85a7e6" - "943c21d254682d0bdc4c74619ea22c") + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdt+" + "TtaLr71hTLsLS3SHBH9tZDQWlmHQK+P2SYzQ+sdhafmlDwh0lRoLQvcTHRhnqIs"); TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0011", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737" - "958f0a3a005576d2b88c5f509bb7276a32f94595e196cf382b0625992dd194210a0e545410741a801" - "3a122d2edd9233caa3fd4b75f9946c") + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdtK4jF9Qm7cnajL5RZX" + "hls84KwYlmS3RlCEKDlRUEHQagBOhItLt2SM8qj/Ut1+ZRs"); TESTCASE( "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" "bbccddee", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" - "a3a005576df99997fa2a742665b01c35c7d6caebc2fbd1bd4479cb819eb452123a0ec6356f40222f7fc8ce" - "bc3a5b81f644f2f75629") + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdt+ZmX+" + "ip0JmWwHDXH1srrwvvRvUR5y4GetFISOg7GNW9AIi9/yM68OluB9kTy91Yp"); TESTCASE( "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" "bbccddeeff", - "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" - "a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1f" - "c4349c69be21718ab07bc639172663927cb075fa777797e0c1c4") + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdtYKY7MOUtuZP9tT9nugPNCr" + "7YlPVJKaxq3f1wdpcFl6Q6NsUlrR/ENJxpviFxirB7xjkXJmOSfLB1+nd3l+DBxA=="); #undef TESTCASE } @@ -136,18 +127,16 @@ __noinline_due_to_stack__ static void run_dh_encode_init_append_finalize_tests() dh_aes_key_t key; dh_init_aes_key(&key, &pathSpec, &publicKey); - uint8_t inBuffer[60]; - uint8_t outBuffer[120]; - uint8_t expected[120]; + uint8_t inBuffer[50]; + uint8_t outBuffer[160]; const char* inBufferHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" "bbccddeeff"; size_t inBufferLength = decode_hex(inBufferHex, inBuffer, SIZEOF(inBuffer)); - const char* expectedHex = - "6464646464646464646464646464646440a725eec9623619fd422c0ce7bf965506c15165fa5277429c66e6" - "ed1f2c6f64c6e10668dd7c5e704c12eea22579a11118da4211e13782ff8193ecf400fd04dbcf317a5df47f" - "449d1dbb75e9f48428d0a840a0e90139759ad39d28990cb37f62"; - decode_hex(expectedHex, expected, SIZEOF(expected)); + const char* expected = + "ZGRkZGRkZGRkZGRkZGRkZECnJe7JYjYZ/UIsDOe/" + "llUGwVFl+lJ3Qpxm5u0fLG9kxuEGaN18XnBMEu6iJXmhERjaQhHhN4L/" + "gZPs9AD9BNvPMXpd9H9EnR27den0hCjQqECg6QE5dZrTnSiZDLN/Yg=="; size_t outBufferLength = 0; outBufferLength = dh_encode(&pathSpec, @@ -159,7 +148,7 @@ __noinline_due_to_stack__ static void run_dh_encode_init_append_finalize_tests() outBuffer, SIZEOF(outBuffer)); TRACE_BUFFER(outBuffer, outBufferLength); - ASSERT(outBufferLength == 7 * 16); + ASSERT(outBufferLength == strlen(expected)); EXPECT_EQ_BYTES(expected, outBuffer, outBufferLength); size_t read = 0; @@ -170,44 +159,44 @@ __noinline_due_to_stack__ static void run_dh_encode_init_append_finalize_tests() dh_context_t* ctx = &instructionState.signTransactionContext.dhContext; outBufferLength = dh_encode_init(ctx, &key, IV, SIZEOF(IV), outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected + written, outBuffer, 16); - written += 16; + ASSERT(outBufferLength == 20); + EXPECT_EQ_BYTES(expected + written, outBuffer, 20); + written += 20; // Cache 0b, 1b { outBufferLength = dh_encode_append(ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); ASSERT(outBufferLength == 0); - read += 1; + read += 1; // Cache 1b, 1b } { outBufferLength = dh_encode_append(ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); ASSERT(outBufferLength == 0); - read += 14; + read += 14; // Cache 15b, 1b } outBufferLength = dh_encode_append(ctx, &key, inBuffer + read, 18, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 32); - EXPECT_EQ_BYTES(expected + written, outBuffer, 32); - read += 18, written += 32; + ASSERT(outBufferLength == 44); + EXPECT_EQ_BYTES(expected + written, outBuffer, 44); + read += 18, written += 44; // Cache 1b, 0b outBufferLength = dh_encode_append(ctx, &key, inBuffer + read, 1, outBuffer, SIZEOF(outBuffer)); ASSERT(outBufferLength == 0); - read += 1; + read += 1; // Cache 2b, 0b outBufferLength = dh_encode_append(ctx, &key, inBuffer + read, 14, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 16); - EXPECT_EQ_BYTES(expected + written, outBuffer, 16); - read += 14, written += 16; + ASSERT(outBufferLength == 20); + EXPECT_EQ_BYTES(expected + written, outBuffer, 20); + read += 14, written += 20; // Cache 0b, 1b outBufferLength = dh_encode_finalize(ctx, &key, outBuffer, SIZEOF(outBuffer)); - ASSERT(outBufferLength == 48); - EXPECT_EQ_BYTES(expected + written, outBuffer, 48); - written += 48; + ASSERT(outBufferLength == 68); + EXPECT_EQ_BYTES(expected + written, outBuffer, 68); + written += 68; ASSERT(read == inBufferLength); } diff --git a/src/runTests.c b/src/runTests.c index 99b00242..5cd42ce2 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -25,21 +25,14 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, BEGIN_ASSERT_NOEXCEPT { TRACE_STACK_USAGE(); PRINTF("Running tests\n"); - { - run_hex_test(); - run_endian_test(); - run_textUtils_test(); - run_bip44_test(); - run_key_derivation_test(); - } - { - TRACE_STACK_USAGE(); - run_diffieHellman_test(); - } - { - run_integrityCheck_test(); - run_countedSection_test(); - } + run_hex_test(); + run_endian_test(); + run_textUtils_test(); + run_bip44_test(); + run_key_derivation_test(); + run_diffieHellman_test(); + run_integrityCheck_test(); + run_countedSection_test(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; diff --git a/src/signTransaction.c b/src/signTransaction.c index 2fa0662e..fb2ab607 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -47,7 +47,7 @@ static void processShaAndPosibleDHAndPrepareResponse() { // Compute AES key dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); - // Encode message chung + // Encode message chunk ctx->responseLength = dh_encode_append(&ctx->dhContext, &aesKey, ctx->dataToAppendToTx, @@ -55,6 +55,12 @@ static void processShaAndPosibleDHAndPrepareResponse() { G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + ctx->countedSectionDifference = + ctx->countedSectionDifference + ctx->responseLength - ctx->dataToAppendToTxLen; + TRACE("CS diff %d from:%d, %d", + (int) ctx->countedSectionDifference, + (int) ctx->responseLength, + (int) ctx->dataToAppendToTxLen); } FINALLY { explicit_bzero(&aesKey, SIZEOF(aesKey)); @@ -483,7 +489,8 @@ __noinline_due_to_stack__ void signTx_handleStartCountedSectionAPDU(uint8_t p2, // Append data to hash (with possible DH encryption) and prepare response, begin counted section { // this data does not count towards new counted section but counts towards old ones - VALIDATE(countedSectionProcess(&ctx->countedSections, varSize), ERR_INVALID_DATA); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->dataToAppendToTxLen), + ERR_INVALID_DATA); VALIDATE(countedSectionBegin(&ctx->countedSections, numberOfExpectedBytes), ERR_INVALID_DATA); processShaAndPosibleDHAndPrepareResponse(); @@ -698,7 +705,9 @@ __noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU(uint8_t p2, SIZEOF(IV), G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); - ASSERT(ctx->responseLength == DH_AES_IV_SIZE); + ASSERT(ctx->responseLength == 20); // first 5 blocks + ctx->countedSectionDifference = ctx->responseLength; + TRACE("CS diff %d", (int) ctx->responseLength); } FINALLY { explicit_bzero(&aesKey, SIZEOF(aesKey)); @@ -707,8 +716,6 @@ __noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU(uint8_t p2, END_TRY; sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); - VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->responseLength), - ERR_INVALID_DATA); ctx->dhIsActive = true; } @@ -784,15 +791,6 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( VALIDATE(ctx->dhCountedSectionEntryLevel == ctx->countedSections.currentLevel, ERR_INVALID_STATE); - // For purpose of counted sections, we were adding data before encoding (except for DH begin - // call). This was neccesary to handle counted sections within DH encoding. To correctly - // handle counted section outside DH encoding we must add the number of new bytes This is: - // bytes to finish last block: CX_AES_BLOCK_SIZE - ctx->dhContext.cacheLength and HMAC - VALIDATE( - countedSectionProcess(&ctx->countedSections, - CX_AES_BLOCK_SIZE - ctx->dhContext.cacheLength + SHA_256_SIZE), - ERR_INVALID_DATA); - dh_aes_key_t aesKey; BEGIN_TRY { TRY { @@ -803,9 +801,6 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( &aesKey, G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); - ASSERT(ctx->responseLength == - CX_AES_BLOCK_SIZE + - SHA_256_SIZE); // padding always produces one block + HMAC } FINALLY { explicit_bzero(&aesKey, SIZEOF(aesKey)); @@ -813,6 +808,11 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( } END_TRY; + ctx->countedSectionDifference += ctx->responseLength; + TRACE("CS diff %d from:%d", (int) ctx->countedSectionDifference, (int) ctx->responseLength); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->countedSectionDifference), + ERR_INVALID_STATE); + sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); ctx->dhIsActive = false; } diff --git a/src/signTransaction.h b/src/signTransaction.h index b7e2a298..c482af8d 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -46,6 +46,9 @@ typedef struct { uint8_t dhCountedSectionEntryLevel; public_key_t otherPubkey; dh_context_t dhContext; + // DH encoding increases data length, we need to store the difference and add the value to + // counted section after we finish DH encoding + uint16_t countedSectionDifference; int ui_step; uint8_t responseLength; // Response is in G_io_apdu_buffer diff --git a/test-integration/signTransactionBasicDH.js b/test-integration/signTransactionBasicDH.js new file mode 100644 index 00000000..51c2c4f3 --- /dev/null +++ b/test-integration/signTransactionBasicDH.js @@ -0,0 +1,293 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiReqobtMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) + +//console.log(typesFioAddressMainnet) +console.log(typesFioAddressMainnet) +console.log(typesTransactionMainnet) +console.log(typesTransaction2Mainnet) +console.log(typesTransactionMainnet.get('transaction')) +console.log(typesTransactionMainnet.get('transaction_header')) +console.log(typesTransactionMainnet.get('action')) +console.log(typesFioAddressMainnet.get('trnsfiopubky')) +console.log(typesTransaction2Mainnet.get('newfundsreq')) + +/* +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the addaddress action type + const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddaddress.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.token", + name: "trnsfiopubky", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + amount: "20", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction"); +{ + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + + +testStep(" - - -", "Invalid transaction: actor dont match"); +{ + const network = "MAINNET" + const action = {...basicTx.actions[0], name: "name.error"} + const tx = {...basicTx, actions: [action]} + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = app.signTransaction({path, chainId, tx}) + await assert.rejects(promise); +} + +testStep(" - - -", "Invalid derivation path"); +{ + const network = "MAINNET" + const tx = basicTx + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const promise = app.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) + const assertPromise = assert.rejects(promise, DeviceStatusError, "Action rejected by Ledger's security policy"); + await assertPromise; +} + +testStep(" - - -", "Sign transaction reject"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.reviewReject([1, 1, 2, 1, 1, 2], "Review sign"); + await assert.rejects(ledgerPromise, DeviceStatusError, "Action rejected by user"); +} + + +await transport.close() +testEnd(scriptName); +process.stdin.pause();*/ \ No newline at end of file diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js index 0ddf41e0..cc446b98 100644 --- a/test-integration/signTransactionCommandsDH.js +++ b/test-integration/signTransactionCommandsDH.js @@ -88,10 +88,10 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); // Validate DH encoded secret const privateKey = PrivateKey(Buffer.from("4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a", "hex")) const sharedSecret = privateKey.getSharedSecret(PublicKey(Buffer.from(otherPublicKey, "hex"))); - const IV = Buffer.from(dhEncodedMsg, "hex").slice(0, 16); + const IV = Buffer.from(Buffer.from(dhEncodedMsg, "hex").toString(), "base64").slice(0, 16); const msg = Buffer.from("0102030405" + "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67", "hex"); const encrypt = checkEncrypt(sharedSecret, Buffer.from(msg, "hex"), IV); - assert.equal(encrypt.toString("hex"), dhEncodedMsg.toString("hex")); + assert.equal(encrypt.toString("base64"), Buffer.from(dhEncodedMsg, "hex").toString()); // Finish const buffer16 = getAPDUDataBuffer("", ""); diff --git a/test-integration/signTransactionCommandsDHAndCountedSections.js b/test-integration/signTransactionCommandsDHAndCountedSections.js index e6215efb..ae9fd12b 100644 --- a/test-integration/signTransactionCommandsDHAndCountedSections.js +++ b/test-integration/signTransactionCommandsDHAndCountedSections.js @@ -50,7 +50,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); { //START_COUNTED_SECTION 17-varuint32, 01-no validation, 0000000000000000-min, 0800000000000000-max - const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "40"); // value - 64 (16b IV, 1DH block, 32b HMAC) + const buffer12 = getAPDUDataBuffer("170100000000000000000000000000000000", "58"); // value - 88 ...4 blocks (4*16)/3=21.3.. 22*4=44 const promise12 = transport.send(215, 0x20, 0x05, 0, buffer12); const response12 = await promise12; assert.equal(response12.toString("hex"), "9000"); @@ -105,10 +105,10 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); // Validate DH encoded secret const privateKey = PrivateKey(Buffer.from("4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a", "hex")) const sharedSecret = privateKey.getSharedSecret(PublicKey(Buffer.from(otherPublicKey, "hex"))); - const IV = Buffer.from(dhEncodedMsg, "hex").slice(0, 16); + const IV = Buffer.from(Buffer.from(dhEncodedMsg, "hex").toString(), "base64").slice(0, 16); const msg = Buffer.from("05"+"0102030405", "hex"); const encrypt = checkEncrypt(sharedSecret, Buffer.from(msg, "hex"), IV); - assert.equal(encrypt.toString("hex"), dhEncodedMsg.toString("hex")); + assert.equal(encrypt.toString("base64"), Buffer.from(dhEncodedMsg, "hex").toString()); { //END_COUNTED_SECTION @@ -127,7 +127,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); const response16 = await promise16; //The signed message should contain chainId + "40"+dhEncodedMsg - const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"+"40"+dhEncodedMsg, "hex"); + const msg1 = Buffer.from("b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e"+"58"+dhEncodedMsg, "hex"); const hash1 = crypto.createHash('sha256').update(msg1).digest('hex') const ledgerSignature1 = Signature.fromHex(response16.slice(0, 65)); assert.equal(response16.slice(65,65+32).toString("hex"), hash1); @@ -172,7 +172,6 @@ testStep(" - - -", "You cannt just end counted section within DH encription with await device.makeStartingScreenshot(); } //------------------------------------------------------------------------------------- -//------------------------------------------------------------------------------------- testStep(" - - -", "Counted section from within DH encoding mus be finished"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 diff --git a/test-integration/speculos-buttons-and-snapshots.js b/test-integration/speculos-buttons-and-snapshots.js index 59b80f80..90875bd2 100644 --- a/test-integration/speculos-buttons-and-snapshots.js +++ b/test-integration/speculos-buttons-and-snapshots.js @@ -49,7 +49,7 @@ class ButtonsAndSnapshots { const test_device = this.snapshotName; const originalScreenshotSHA = this.pngSha256Previous; // e.g. test-transactions.staking-sign-ts.02-transfer-top-shot-moment-p256-sha3-256/nanos.01.png - const png = this.scriptName.replace(".js", "") + "/" + test_device + "." + this.pngNum.toString(10).padStart(2, '0') + ".png" + const png = this.scriptName + "/" + test_device + "." + this.pngNum.toString(10).padStart(2, '0') + ".png" console.log(humanTime() + " curlScreenShot() // " + png + ".new.png"); const makeScreenshot = (process.env.TEST_PNG_RE_GEN_FOR && (this.scriptName.substring(0, process.env.TEST_PNG_RE_GEN_FOR.length) == process.env.TEST_PNG_RE_GEN_FOR)); From f560dfb463ace1a33b81461863cc95cf8358ea15 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sun, 26 Jun 2022 22:35:27 +0200 Subject: [PATCH 22/83] Add Request funds transaction --- MakefileTest.mk | 1 + ledgerjs-fio/src/errors/invalidDataReason.ts | 8 + .../src/interactions/signTransaction.ts | 8 +- .../transactionTemplates/commands.ts | 247 ++++++++++++++- .../transactionTemplates/template_all.ts | 30 ++ .../template_newfundsreq.ts | 111 +++++++ .../template_trnsfiopubky.ts | 249 +++------------ ledgerjs-fio/src/types/internal.ts | 21 +- ledgerjs-fio/src/types/public.ts | 28 +- ledgerjs-fio/src/utils/parse.ts | 137 +++++--- ledgerjs-fio/yarn.lock | 2 +- src/signTransaction.c | 4 +- src/signTransactionIntegrity.c | 14 +- test-integration/signTransactionBasicDH.js | 298 +++++++++--------- test-integration/signTransactionCommandsDH.js | 32 ++ .../signTransactionBasicDH/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionBasicDH/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionBasicDH/nanos.03.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.04.png | Bin 0 -> 433 bytes .../signTransactionBasicDH/nanos.05.png | Bin 0 -> 463 bytes .../signTransactionBasicDH/nanos.06.png | Bin 0 -> 468 bytes .../signTransactionBasicDH/nanos.07.png | Bin 0 -> 414 bytes .../signTransactionBasicDH/nanos.08.png | Bin 0 -> 455 bytes .../signTransactionBasicDH/nanos.09.png | Bin 0 -> 429 bytes .../signTransactionBasicDH/nanos.10.png | Bin 0 -> 382 bytes .../signTransactionBasicDH/nanos.11.png | Bin 0 -> 317 bytes .../signTransactionBasicDH/nanos.12.png | Bin 0 -> 325 bytes .../signTransactionBasicDH/nanos.13.png | Bin 0 -> 288 bytes .../signTransactionBasicDH/nanos.14.png | Bin 0 -> 447 bytes .../signTransactionBasicDH/nanos.15.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.16.png | Bin 0 -> 393 bytes .../signTransactionBasicDH/nanos.17.png | Bin 0 -> 361 bytes .../signTransactionBasicDH/nanos.18.png | Bin 0 -> 424 bytes .../signTransactionBasicDH/nanos.19.png | Bin 0 -> 356 bytes .../signTransactionBasicDH/nanos.20.png | Bin 0 -> 426 bytes .../signTransactionBasicDH/nanos.21.png | Bin 0 -> 314 bytes .../signTransactionBasicDH/nanos.22.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.23.png | Bin 0 -> 433 bytes .../signTransactionBasicDH/nanos.24.png | Bin 0 -> 463 bytes .../signTransactionBasicDH/nanos.25.png | Bin 0 -> 468 bytes .../signTransactionBasicDH/nanos.26.png | Bin 0 -> 414 bytes .../signTransactionBasicDH/nanos.27.png | Bin 0 -> 455 bytes .../signTransactionBasicDH/nanos.28.png | Bin 0 -> 429 bytes .../signTransactionBasicDH/nanos.29.png | Bin 0 -> 382 bytes .../signTransactionBasicDH/nanos.30.png | Bin 0 -> 317 bytes .../signTransactionBasicDH/nanos.31.png | Bin 0 -> 325 bytes .../signTransactionBasicDH/nanos.32.png | Bin 0 -> 288 bytes .../signTransactionBasicDH/nanos.33.png | Bin 0 -> 447 bytes .../signTransactionBasicDH/nanos.34.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.35.png | Bin 0 -> 393 bytes .../signTransactionBasicDH/nanos.36.png | Bin 0 -> 361 bytes .../signTransactionBasicDH/nanos.37.png | Bin 0 -> 424 bytes .../signTransactionBasicDH/nanos.38.png | Bin 0 -> 356 bytes .../signTransactionBasicDH/nanos.39.png | Bin 0 -> 426 bytes .../signTransactionBasicDH/nanos.40.png | Bin 0 -> 322 bytes .../signTransactionBasicDH/nanos.41.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.42.png | Bin 0 -> 433 bytes .../signTransactionBasicDH/nanos.43.png | Bin 0 -> 463 bytes .../signTransactionBasicDH/nanos.44.png | Bin 0 -> 468 bytes .../signTransactionBasicDH/nanos.45.png | Bin 0 -> 414 bytes .../signTransactionBasicDH/nanos.46.png | Bin 0 -> 455 bytes .../signTransactionBasicDH/nanos.47.png | Bin 0 -> 429 bytes .../signTransactionBasicDH/nanos.48.png | Bin 0 -> 382 bytes .../signTransactionBasicDH/nanos.49.png | Bin 0 -> 317 bytes .../signTransactionBasicDH/nanos.50.png | Bin 0 -> 325 bytes .../signTransactionBasicDH/nanos.51.png | Bin 0 -> 319 bytes .../signTransactionBasicDH/nanos.52.png | Bin 0 -> 323 bytes .../signTransactionBasicDH/nanos.53.png | Bin 0 -> 447 bytes .../signTransactionBasicDH/nanos.54.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.55.png | Bin 0 -> 393 bytes .../signTransactionBasicDH/nanos.56.png | Bin 0 -> 361 bytes .../signTransactionBasicDH/nanos.57.png | Bin 0 -> 424 bytes .../signTransactionBasicDH/nanos.58.png | Bin 0 -> 356 bytes .../signTransactionBasicDH/nanos.59.png | Bin 0 -> 426 bytes .../signTransactionBasicDH/nanos.60.png | Bin 0 -> 314 bytes .../signTransactionBasicDH/nanos.61.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.62.png | Bin 0 -> 433 bytes .../signTransactionBasicDH/nanos.63.png | Bin 0 -> 463 bytes .../signTransactionBasicDH/nanos.64.png | Bin 0 -> 468 bytes .../signTransactionBasicDH/nanos.65.png | Bin 0 -> 414 bytes .../signTransactionBasicDH/nanos.66.png | Bin 0 -> 455 bytes .../signTransactionBasicDH/nanos.67.png | Bin 0 -> 429 bytes .../signTransactionBasicDH/nanos.68.png | Bin 0 -> 382 bytes .../signTransactionBasicDH/nanos.69.png | Bin 0 -> 317 bytes .../signTransactionBasicDH/nanos.70.png | Bin 0 -> 325 bytes .../signTransactionBasicDH/nanos.71.png | Bin 0 -> 319 bytes .../signTransactionBasicDH/nanos.72.png | Bin 0 -> 323 bytes .../signTransactionBasicDH/nanos.73.png | Bin 0 -> 447 bytes .../signTransactionBasicDH/nanos.74.png | Bin 0 -> 377 bytes .../signTransactionBasicDH/nanos.75.png | Bin 0 -> 393 bytes .../signTransactionBasicDH/nanos.76.png | Bin 0 -> 361 bytes .../signTransactionBasicDH/nanos.77.png | Bin 0 -> 424 bytes .../signTransactionBasicDH/nanos.78.png | Bin 0 -> 356 bytes .../signTransactionBasicDH/nanos.79.png | Bin 0 -> 426 bytes .../signTransactionCommandsDH/nanos.24.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.25.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.26.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.27.png | Bin 0 -> 447 bytes .../signTransactionCommandsDH/nanos.28.png | Bin 0 -> 377 bytes .../signTransactionCommandsDH/nanos.29.png | Bin 0 -> 426 bytes .../speculos-buttons-and-snapshots.js | 19 ++ 101 files changed, 794 insertions(+), 415 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.47.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.51.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.52.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.53.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.54.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.55.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.56.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.57.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.58.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.59.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.60.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.61.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.62.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.63.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.64.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.65.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.66.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.67.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.68.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.69.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.70.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.71.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.72.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.73.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.74.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.75.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.76.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.77.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.78.png create mode 100644 test-integration/snapshots/signTransactionBasicDH/nanos.79.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.29.png diff --git a/MakefileTest.mk b/MakefileTest.mk index b11592dc..370db886 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -35,6 +35,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,getSerial.js) $(call run_nodejs_test,5001,40001,getPublicKey.js) $(call run_nodejs_test,5001,40001,signTransactionBasic.js) + $(call run_nodejs_test,5001,40001,signTransactionBasicDH.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index b125600d..bb0a56cc 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -24,4 +24,12 @@ export enum InvalidDataReason { INVALID_PERMISSION = "invalid permission", ACTION_DATA_TOO_LONG = "action data too long", UNEXPECTED_ERROR = "Unexpected error", + INVALID_PAYER_FIO_ADDRESS = "invalid payer fio address", + INVALID_PAYEE_FIO_ADDRESS = "invalid payer fio address", + INVALID_CHAIN_CODE = "invalid chain code", + INVALID_TOKEN_CODE = "invalid token code", + INVALID_PUBLIC_KEY = "invalid public key", + INVALID_MEMO = "invalid memo", + INVALID_HASH = "invalid hash", + INVALID_OFFLINE_URL = "invalid offline url", } diff --git a/ledgerjs-fio/src/interactions/signTransaction.ts b/ledgerjs-fio/src/interactions/signTransaction.ts index daa5240b..5eb73446 100644 --- a/ledgerjs-fio/src/interactions/signTransaction.ts +++ b/ledgerjs-fio/src/interactions/signTransaction.ts @@ -9,7 +9,8 @@ import {buf_to_hex, date_to_buf, path_to_buf, uint8_to_buf, uint16_to_buf, uint3 import {INS} from "./common/ins" import type {Interaction, SendParams} from "./common/types" import {ensureLedgerAppVersionCompatible} from "./getVersion" -import {templete_trnsfiopubky} from "./transactionTemplates/template_trnsfiopubky" +import { templete_all } from "./transactionTemplates/template_all" +import { Console } from "console" const send = (params: { p1: number, @@ -22,9 +23,10 @@ const send = (params: { export function* signTransaction(version: Version, parsedPath: ValidBIP32Path, chainId: HexString, tx: ParsedTransaction): Interaction { ensureLedgerAppVersionCompatible(version) - const commands = templete_trnsfiopubky(chainId, tx, parsedPath); + const commands = templete_all(chainId, tx, parsedPath); + validate(commands.length != 0, InvalidDataReason.ACTION_NOT_SUPPORTED); - let result: SignedTransactionData = {txHashHex: "", witness: {path: parsedPath, witnessSignatureHex: ""}}; + let result: SignedTransactionData = {dhEncryptedData: "", txHashHex: "", witness: {path: parsedPath, witnessSignatureHex: ""}}; for(const command of commands) { validate(command.constData.length + command.varData.length +2 <= 255, InvalidDataReason.UNEXPECTED_ERROR); diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index f06670a4..aabe98de 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -1,5 +1,9 @@ -import { HexString, Uint8_t } from "types/internal" -import type {SignedTransactionData} from "../../types/public" +import { assert } from "console"; +import { InvalidDataReason } from "errors" +import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path } from "types/internal" +import { buf_to_hex, path_to_buf, varuint32_to_buf } from "../../utils/serialize"; +import type { SignedTransactionData } from "../../types/public"; +import { chunkBy } from "../../utils/ioHelpers" export const enum COMMAND { NONE = 0x00, @@ -10,6 +14,8 @@ export const enum COMMAND { START_COUNTED_SECTION = 0x05, END_COUNTED_SECTION = 0x06, STORE_VALUE = 0x07, + START_DH_ENCRYPTION = 0x08, + END_DH_ENCRYPTION = 0x09, FINISH= 0x10, }; @@ -41,13 +47,24 @@ export const enum VALUE_STORAGE_COMPARE { COMPARE_REGISTER3 = 0x30, } +export type DataAction = (b: Buffer, s: SignedTransactionData) => SignedTransactionData + +export const dhDataAction: DataAction = (b, s) => { + return { + dhEncryptedData: s.dhEncryptedData + b.toString(), + txHashHex: s.txHashHex, + witness: s.witness + } +} + export type Command = { command: COMMAND, p2: Uint8_t, constData: HexString, varData: Buffer, - expectedResponseLength: number, - dataAction: (b: Buffer, s: SignedTransactionData) => SignedTransactionData, + expectedResponseLength?: number, + dataAction: DataAction, + txLen: number, //This is necessary to make counted sections work } export const defaultCommand: Command = { @@ -55,10 +72,12 @@ export const defaultCommand: Command = { p2: 0 as Uint8_t, constData: "" as HexString, varData: Buffer.from(""), - expectedResponseLength: 0, - dataAction: (b, s) => s, + dataAction: dhDataAction, //does nothing if there is no DH + txLen: 0 } +export type TransactionTemplate = (chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path) => Array; + export function constDataAppendData(format: VALUE_FORMAT, validation: VALUE_VALIDATION, arg1: bigint, arg2: bigint, policy: VALUE_POLICY, storage: VALUE_STORAGE_COMPARE, key: string): HexString { const buf = Buffer.allocUnsafe(20+ key.length); @@ -90,10 +109,218 @@ export function constDataStartCountedSection(format: VALUE_FORMAT, validation: V return buf.toString("hex") as HexString; } -export function getCommandVarLength(commands: Array) { +export function getCommandVarLength(commands: Array): number { let len: number = 0; - for(const c of commands) { - len += c.varData.length; + for(let i=0; i): TransactionTemplate { + return (chainId, tx, path) => { + for (const t of templates) { + const commands: Array = t(chainId, tx, path); + if (commands.length != 0) { //template match + return commands; + } + } + return []; + } +} + +//---------------------INSTRUCTION SPECIFIC COMMANDS--------------------------------- + +export function COMMAND_INIT(chainId: HexString, parsedPath: ValidBIP32Path): Command { + const varData = Buffer.concat([Buffer.from(chainId, "hex"), path_to_buf(parsedPath)]) + return { + ...defaultCommand, + command: COMMAND.INIT, + varData: varData, + txLen: varData.length + } +} + +export function COMMAND_APPEND_CONST_DATA(constData: HexString): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_CONST_DATA, + constData: constData, + txLen: Buffer.from(constData, "hex").length, + } +} + +export function COMMAND_SHOW_MESSAGE(key: string, value: string): Command { + return { + ...defaultCommand, + command: COMMAND.SHOW_MESSAGE, + constData: constDataShowMessage( + key, + value + ), + } +} + +export function COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_BUFFER_SHOW_AS_HEX, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin), BigInt(bufLenMax), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: varData, + txLen: varData.length, + } +} + +export function COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin), BigInt(bufLenMax), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: varData, + txLen: varData.length, + } +} + +export function COMMAND_APPEND_DATA_STRING_SHOW(key: string, varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin), BigInt(bufLenMax), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: varData, + txLen: varData.length, + } +} + +export function COMMAND_APPEND_DATA_NAME_SHOW(key: string, name: HexString): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_NAME, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: Buffer.from(name, "hex"), + txLen: Buffer.from(name, "hex").length, + } +} + +export function COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: number = 0xFFFFFFFF): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_FIO_AMOUNT, + VALUE_VALIDATION.VALUE_VALIDATION_NUMBER, BigInt(minAmount), BigInt(maxAmount), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: varData, + txLen: varData.length, + } +} + + +export function COMMANDS_COUNTED_SECTION(commands: Array, min: number = 0, max: number = 0xFFFFFFFF): Array { + const varData = varuint32_to_buf(getCommandVarLength(commands)); + return [ + { + ...defaultCommand, + command: COMMAND.START_COUNTED_SECTION, + constData: constDataStartCountedSection( + VALUE_FORMAT.VALUE_FORMAT_VARUINT32, VALUE_VALIDATION.VALUE_VALIDATION_NUMBER, BigInt(min), BigInt(max), + ), + varData: varData, + txLen: varData.length + }, + ...commands, + { + ...defaultCommand, + command: COMMAND.END_COUNTED_SECTION, + } + ] +} + +export function COMMAND_STORE_VALUE(register: Uint8_t, varData: Buffer): Command { + return { + ...defaultCommand, + command: COMMAND.STORE_VALUE, + p2: register as Uint8_t, + varData: varData, + } +} + +export function COMMANDS_DH_ENCODE(other_public_key: Buffer, commands: Array): Array { + return [ + { + ...defaultCommand, + command: COMMAND.START_DH_ENCRYPTION, + varData: other_public_key, + expectedResponseLength: 20, //IV 16b - base64: 1b cached, 15b->20b + txLen: 0, //getCommandVarLength includes the output by default + }, + ...commands, + { + ...defaultCommand, + command: COMMAND.END_DH_ENCRYPTION, + txLen: 0, //getCommandVarLength includes the output by default + } + ] +} + +export function COMMAND_FINISH(parsedPath: ValidBIP32Path): Command { + return { + ...defaultCommand, + command: COMMAND.FINISH, + expectedResponseLength: 65 + 32, + dataAction: (b, s) => { + const [witnessSignature, hash, rest] = chunkBy(b, [65, 32]) + assert(rest.length === 0, "invalid response length") + + return { + dhEncryptedData: s.dhEncryptedData, + txHashHex: buf_to_hex(hash), + witness: { + path: parsedPath, + witnessSignatureHex: buf_to_hex(witnessSignature), + }, + } + + }, + } +} + diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts new file mode 100644 index 00000000..01e39857 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -0,0 +1,30 @@ +import type {HexString, ParsedTransaction, ValidBIP32Path} from "../../types/internal" +import { Command, templateAlternative, COMMAND_INIT, COMMAND_APPEND_CONST_DATA, COMMAND_FINISH, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW} from "./commands" +import { date_to_buf, uint16_to_buf, uint32_to_buf } from "../../utils/serialize" +import { validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; +import { template_trnsfiopubky } from "./template_trnsfiopubky"; +import { template_newfundsreq } from "./template_newfundsreq"; + +export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + //Match action + const actionCommands:Array = templateAlternative([template_trnsfiopubky, template_newfundsreq])(chainId, tx, parsedPath) + if (actionCommands.length == 0) return []; + + return [ + COMMAND_INIT(chainId, parsedPath), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.concat([ + date_to_buf(tx.expiration).reverse(), + uint16_to_buf(tx.ref_block_num).reverse(), + uint32_to_buf(tx.ref_block_prefix).reverse() + ]), 10, 10), + COMMAND_APPEND_CONST_DATA("0000000001" as HexString), + ...actionCommands, + COMMAND_APPEND_CONST_DATA("000000000000000000000000000000000000000000000000000000000000000000" as HexString), + COMMAND_FINISH(parsedPath), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts new file mode 100644 index 00000000..0ce82753 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -0,0 +1,111 @@ +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation} from "../../types/internal" +import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, + COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +export const CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ = "00403ed4aa0ba85b00acba384dbdb89a" + +function template_newfundsreq_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; + + //Matching template + if (actionData.memo.length == 0) { + return [] + } + validate(actionData.hash.length == 0, InvalidDataReason.INVALID_HASH) + validate(actionData.offline_url.length == 0, InvalidDataReason.INVALID_HASH) + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo)), + ]), + COMMAND_APPEND_CONST_DATA("01000100" as HexString), + ] +} + +function template_newfundsreq_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; + + //Matching template + if (actionData.hash.length == 0) { + return [] + } + validate(actionData.memo.length == 0, InvalidDataReason.INVALID_MEMO) + + return [ + COMMAND_APPEND_CONST_DATA("010001" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Hash", Buffer.from(actionData.hash)), + ], 0, 0xFFFFFFFFFFFF), + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Offline url", Buffer.from(actionData.offline_url)), + ], 0, 0xFFFFFFFFFFFF), + ] +} + +export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + // Validate template expectations + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ) { + return []; + } + + const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const memoAndHash: Array = templateAlternative([template_newfundsreq_memo, template_newfundsreq_hash])(chainId, tx, parsedPath) + validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) + + return [ + COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Request Funds"), + COMMAND_APPEND_DATA_NAME_SHOW("Authorization actor", authorization.actor), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address)) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address)) + ]), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_DH_ENCODE(actionData.payee_public_key, [ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.payee_public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Amount requested", Buffer.from(actionData.amount)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code)), + ]), + ...memoAndHash, + ]) + ], 64, 296), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Actor", Buffer.from(actionData.actor)) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index 7cfffbc1..69bbc8e2 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -1,171 +1,30 @@ -import type {HexString, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" -import { COMMAND, Command, constDataAppendData, constDataShowMessage, constDataStartCountedSection, getCommandVarLength, - VALUE_FORMAT, VALUE_VALIDATION, VALUE_POLICY, VALUE_STORAGE_COMPARE, defaultCommand } from "./commands" -import { buf_to_hex, date_to_buf, path_to_buf, uint16_to_buf, uint32_to_buf, uint64_to_buf, varuint32_to_buf } from "../../utils/serialize" +import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { COMMAND, Command, constDataAppendData, VALUE_FORMAT, VALUE_VALIDATION, VALUE_POLICY, VALUE_STORAGE_COMPARE, defaultCommand, + COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" import { validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; -import { assert } from "../../utils/assert" -import { chunkBy } from "../../utils/ioHelpers" +export const CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY = "0000980ad20ca85be0e1d195ba85e7cd" -export function templete_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { +export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations - validate(tx.actions[0].contractAccountName === "0000980ad20ca85be0e1d195ba85e7cd", InvalidDataReason.ACTION_NOT_SUPPORTED); - validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); - - - const tpidCommands: Array = [ - { - //tpid - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, - VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(0), BigInt(21), //21 max tipd length - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "Tpid" - ), - varData: Buffer.from(tx.actions[0].data.tpid), - }, - ]; + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); - const payeePublicKeyCommands: Array = [ - { - //payee pubkey - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING, - VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(0), BigInt(55), //55 max WIF pubkey length - VALUE_POLICY.VALUE_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "Payee Pubkey" - ), - varData: Buffer.from(tx.actions[0].data.payee_public_key), - }, - ]; - - const actionDataCommands: Array = [ - { - // Payee pubkey length - ...defaultCommand, - command: COMMAND.START_COUNTED_SECTION, - constData: constDataStartCountedSection( - VALUE_FORMAT.VALUE_FORMAT_VARUINT32, - VALUE_VALIDATION.VALUE_VALIDATION_NUMBER, BigInt(0), BigInt(55), - ), - varData: varuint32_to_buf(getCommandVarLength(payeePublicKeyCommands)), - }, - ...payeePublicKeyCommands, - { - ...defaultCommand, - command: COMMAND.END_COUNTED_SECTION, - }, - { - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_FIO_AMOUNT, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "Amount" - ), - varData: uint64_to_buf(tx.actions[0].data.amount).reverse(), - }, - { - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_FIO_AMOUNT, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "Max fee" - ), - varData: uint64_to_buf(tx.actions[0].data.max_fee).reverse(), - }, - { - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_NAME, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, - "" - ), - varData: Buffer.from(tx.actions[0].data.actor, "hex") - }, - { - ...defaultCommand, - command: COMMAND.START_COUNTED_SECTION, - constData: constDataStartCountedSection( - VALUE_FORMAT.VALUE_FORMAT_VARUINT32, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - ), - varData: varuint32_to_buf(getCommandVarLength(tpidCommands)), - }, - ...tpidCommands, - { - ...defaultCommand, - command: COMMAND.END_COUNTED_SECTION, - }, - ]; + //Template matching + if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY) return []; + const actionData: ParsedTransferFIOTokensData = tx.actions[0].data as ParsedTransferFIOTokensData; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; return [ - { - //chainId - ...defaultCommand, - command: COMMAND.INIT, - varData: Buffer.concat([Buffer.from(chainId, "hex"), path_to_buf(parsedPath)]), - }, - { - //expiration, ref_block_num, ref_block_prefix - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_BUFFER_SHOW_AS_HEX, - VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(10), BigInt(10), - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "" - ), - varData: Buffer.concat([ - date_to_buf(tx.expiration).reverse(), - uint16_to_buf(tx.ref_block_num).reverse(), - uint32_to_buf(tx.ref_block_prefix).reverse() - ]), - }, - { - // max_net_usage_words, max_cpu_usage_ms, delay_sec, number_context_free_actions, - // number_actions, contractAccountName (for trnsfiopubky actions = 0000980ad20ca85be0e1d195ba85e7cd) - // Number of actions, - ...defaultCommand, - command: COMMAND.APPEND_CONST_DATA, - constData: "00000000010000980ad20ca85be0e1d195ba85e7cd01" as HexString, - }, - { - // Show Action name screen, - ...defaultCommand, - command: COMMAND.SHOW_MESSAGE, - constData: constDataShowMessage( - "Action", - "Transfer FIO tokens" - ), - }, - { - // Store authorisation actor as it needs to match action data actor - ...defaultCommand, - command: COMMAND.STORE_VALUE, - p2: 1 as Uint8_t, - varData: Buffer.from(tx.actions[0].authorization[0].actor, "hex"), - }, + COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Transfer FIO tokens"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), { // Authorisation actor, validate that it is stored ...defaultCommand, @@ -177,58 +36,32 @@ export function templete_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, "" ), - varData: Buffer.from(tx.actions[0].authorization[0].actor, "hex") - }, - { - // Permission, - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_NAME, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - "" - ), - varData: Buffer.from(tx.actions[0].authorization[0].permission, "hex"), - }, - { - // Action data.length - ...defaultCommand, - command: COMMAND.START_COUNTED_SECTION, - constData: constDataStartCountedSection( - VALUE_FORMAT.VALUE_FORMAT_VARUINT32, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - ), - varData: varuint32_to_buf(getCommandVarLength(actionDataCommands)), + varData: Buffer.from(authorization.actor, "hex"), + txLen: 8, }, - ...actionDataCommands, - { - ...defaultCommand, - command: COMMAND.END_COUNTED_SECTION, - }, - { - ...defaultCommand, - command: COMMAND.APPEND_CONST_DATA, - constData: "000000000000000000000000000000000000000000000000000000000000000000" as HexString, - }, - { - ...defaultCommand, - command: COMMAND.FINISH, - expectedResponseLength: 65 + 32, - dataAction: (b, s) => { - const [witnessSignature, hash, rest] = chunkBy(b, [65, 32]) - assert(rest.length === 0, "invalid response length") - - return { - txHashHex: buf_to_hex(hash), - witness: { - path: parsedPath, - witnessSignatureHex: buf_to_hex(witnessSignature), - }, - } - + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Pubkey", Buffer.from(actionData.payee_public_key), 0, 55), + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_NAME, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + "" + ), + varData: Buffer.from(actionData.actor, "hex"), + txLen: 8, }, - }, + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), ]; } diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 9e8c9685..60052529 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -25,6 +25,25 @@ export type ParsedTransferFIOTokensData = { actor: NameString } +export type ParsedRequestFundsData = { + payer_fio_address: string + payee_fio_address: string + max_fee: Uint64_str + actor: string + tpid: string + + //we need this to start DH encryption + payee_public_key: Buffer + //content + payee_public_address: string + amount: string + chain_code: string + token_code: string + memo: string + hash: string + offline_url: string +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -33,7 +52,7 @@ export type ParsedActionAuthorisation = { export type ParsedAction = { contractAccountName: HexString authorization: Array - data: | ParsedTransferFIOTokensData + data: ParsedTransferFIOTokensData | ParsedRequestFundsData } export type ParsedTransaction = { diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 72add041..2db4c5c5 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -1,3 +1,4 @@ +import fiojs from "@fioprotocol/fiojs" /** * Type for 64-bit integers. * @@ -116,10 +117,14 @@ export type Witness = { * @see [[Fio.signTransaction]] */ export type SignedTransactionData = { + /** + * If the transaction involves DH encryption, the data is here (base64 encoding), otherwise, this string is empty + */ + dhEncryptedData: string /** * Hash of signed transaction. Callers should check that they serialize tx the same way */ - txHashHex: string + txHashHex: string /** * List of witnesses. Caller should assemble full transaction to be submitted to the network. */ @@ -138,9 +143,28 @@ export type TransferFIOTokensData = { max_fee: bigint_like tpid: string actor: string +} + +export type RequestFundsData = { + payer_fio_address: string + payee_fio_address: string + max_fee: bigint_like + actor: string + tpid: string + //we need this to start DH encryption + payee_public_key: any + //content + payee_public_address: string + amount: string + chain_code: string + token_code: string + memo: string + hash: string + offline_url: string } + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -161,7 +185,7 @@ export type Action = { account: string name: string authorization: Array - data: | TransferFIOTokensData + data: TransferFIOTokensData | RequestFundsData } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 993b1fe3..13adf831 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -13,9 +13,13 @@ import type { Uint64_str, ValidBIP32Path, VarlenAsciiString, + ParsedAction, + ParsedTransferFIOTokensData, + ParsedRequestFundsData, } from "../types/internal" -import type {ParsedAction, ParsedTransferFIOTokensData} from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction} from "../types/public" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData} from "../types/public" +import { CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ } from "../interactions/transactionTemplates/template_newfundsreq" +import { CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY } from "../interactions/transactionTemplates/template_trnsfiopubky" export const MAX_UINT_64_STR = "18446744073709551615" @@ -167,13 +171,6 @@ export function parseIntFromStr(str: string, errMsg: InvalidDataReason): number return i } -export function parseContractAccountName(account: string, name: string, errMsg: InvalidDataReason): HexString { - if (account == "fio.token" && name == "trnsfiopubky") { - return "0000980ad20ca85be0e1d195ba85e7cd" as HexString - } - validate(false, errMsg) -} - export function parseNameString(name: string, errMsg: InvalidDataReason): NameString { validate(isNameString(name), errMsg) @@ -233,36 +230,100 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa validate(isString(authorization.actor), InvalidDataReason.INVALID_ACTOR) validate(isString(authorization.permission), InvalidDataReason.INVALID_PERMISSION) - // validate action.data (TransferFIOTokenData) - validate(isString(action.data.payee_public_key), InvalidDataReason.INVALID_PAYEE_PUBKEY) - validate(action.data.payee_public_key.length <= 64, InvalidDataReason.INVALID_PAYEE_PUBKEY) - validate(isBigIntLike(action.data.amount), InvalidDataReason.INVALID_AMOUNT) - validate(isBigIntLike(action.data.max_fee), InvalidDataReason.INVALID_MAX_FEE) - validate(isString(action.data.tpid), InvalidDataReason.INVALID_TPID) - validate(action.data.tpid.length <= 20, InvalidDataReason.INVALID_TPID) - validate(isString(action.data.actor), InvalidDataReason.INVALID_ACTOR) - - const parsedActionData: ParsedTransferFIOTokensData = { - payee_public_key: action.data.payee_public_key, - amount: parseUint64_str(action.data.amount, {}, InvalidDataReason.INVALID_AMOUNT), - max_fee: parseUint64_str(action.data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), - actor: parseNameString(action.data.actor, InvalidDataReason.INVALID_ACTOR), - tpid: action.data.tpid, - } - const parsedAction: ParsedAction = { - contractAccountName: parseContractAccountName(action.account, action.name, - InvalidDataReason.ACTION_NOT_SUPPORTED), - authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], - data: parsedActionData, + if (action.account == "fio.token" && action.name == "trnsfiopubky") { + const data: TransferFIOTokensData = action.data; + + // validate action.data (TransferFIOTokenData) + validate(isString(data.payee_public_key), InvalidDataReason.INVALID_PAYEE_PUBKEY) + validate(data.payee_public_key.length <= 64, InvalidDataReason.INVALID_PAYEE_PUBKEY) + validate(isBigIntLike(data.amount), InvalidDataReason.INVALID_AMOUNT) + validate(isBigIntLike(data.max_fee), InvalidDataReason.INVALID_MAX_FEE) + validate(isString(data.tpid), InvalidDataReason.INVALID_TPID) + validate(data.tpid.length <= 20, InvalidDataReason.INVALID_TPID) + validate(isString(data.actor), InvalidDataReason.INVALID_ACTOR) + + const parsedActionData: ParsedTransferFIOTokensData = { + payee_public_key: data.payee_public_key, + amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: data.tpid, + } + + const parsedAction: ParsedAction = { + contractAccountName: CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY as HexString, + authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], + data: parsedActionData, + } + + return { + expiration: tx.expiration, + ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), + ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), + context_free_actions: [], + actions: [parsedAction], + transaction_extensions: null, + } } - - return { - expiration: tx.expiration, - ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), - ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), - context_free_actions: [], - actions: [parsedAction], - transaction_extensions: null, + else if (action.account === "fio.reqobt" && action.name === "newfundsreq") { + const data: RequestFundsData = action.data as RequestFundsData; + validate(isString(data.tpid), InvalidDataReason.INVALID_TPID) + validate(data.tpid.length <= 20, InvalidDataReason.INVALID_TPID) + validate(isString(data.actor), InvalidDataReason.INVALID_ACTOR) + validate(isString(data.payer_fio_address), InvalidDataReason.INVALID_PAYER_FIO_ADDRESS) + validate(isString(data.payee_fio_address), InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS) + validate(isString(data.payee_public_address), InvalidDataReason.INVALID_AMOUNT) + validate(isString(data.amount), InvalidDataReason.INVALID_AMOUNT) + validate(isString(data.chain_code), InvalidDataReason.INVALID_CHAIN_CODE) + validate(isString(data.token_code), InvalidDataReason.INVALID_TOKEN_CODE) + validate(isString(data.memo), InvalidDataReason.INVALID_MEMO) + validate(isString(data.hash), InvalidDataReason.INVALID_HASH) + validate(isString(data.offline_url), InvalidDataReason.INVALID_OFFLINE_URL) + + let payee_public_key: Buffer + try { + console.log(data.payee_public_key) + payee_public_key = data.payee_public_key.toUncompressed().toBuffer() + } + catch { + validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) + } + validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) + + const parsedActionData: ParsedRequestFundsData = { + payer_fio_address: data.payer_fio_address, + payee_fio_address: data.payee_fio_address, + max_fee: parseUint64_str(action.data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: data.actor, + tpid: data.tpid, + + payee_public_key: payee_public_key, + payee_public_address: data.payee_public_address, + amount: data.amount, + chain_code: data.chain_code, + token_code: data.token_code, + memo: data.memo, + hash: data.hash, + offline_url: data.offline_url, + } + + const parsedAction: ParsedAction = { + contractAccountName: CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ as HexString, + authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], + data: parsedActionData, + } + + return { + expiration: tx.expiration, + ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), + ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), + context_free_actions: [], + actions: [parsedAction], + transaction_extensions: null, + } } + + throw new InvalidData(InvalidDataReason.ACTION_NOT_SUPPORTED) } + diff --git a/ledgerjs-fio/yarn.lock b/ledgerjs-fio/yarn.lock index c48e0c15..3d2710f0 100644 --- a/ledgerjs-fio/yarn.lock +++ b/ledgerjs-fio/yarn.lock @@ -40,7 +40,7 @@ "@fioprotocol/fiojs@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@fioprotocol/fiojs/-/fiojs-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@fioprotocol/fiojs/-/fiojs-1.0.1.tgz#81779437603741bc4ca1c76d119b64c4157a3874" integrity sha512-+rxJ/ynUkox/DO3ihHPpAc//DDI+DQvrphLqwRKufw0atC3GKluGR2qMTeO45O0UjorvOIw6esuuG7NpbVUm8Q== dependencies: ajv "^6.10.2" diff --git a/src/signTransaction.c b/src/signTransaction.c index fb2ab607..ba3e758c 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -306,7 +306,7 @@ __noinline_due_to_stack__ void signTx_handleShowMessageAPDU( memmove(ctx->key, constData->displayKey, constData->displayKeyLen); ctx->key[constData->displayKeyLen] = 0; memmove(ctx->value, constData2->displayValue, constData2->displayValueLen); - ctx->key[constData2->displayValueLen] = 0; + ctx->value[constData2->displayValueLen] = 0; } // Reading data finished, from now on we use G_io_apdu_buffer for output @@ -637,7 +637,7 @@ static void signTx_handleDHStart_ui_runStep() { } __noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU(uint8_t p2, - uint8_t* constDataBuffer, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, size_t constSize, uint8_t* varDataBuffer, size_t varSize) { diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index db9d878f..06d0b2dc 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -30,9 +30,17 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { 0xfe, 0x52, 0x96, 0x02, 0xed, 0x5d, 0x96, 0x86, 0x20, 0xf0}, #endif // trnsfiopubky - {0xf7, 0x6d, 0x8f, 0xa6, 0xfe, 0xe7, 0xf1, 0x7d, 0xaf, 0x97, 0x0b, - 0xb0, 0x6a, 0xc4, 0x86, 0x87, 0x7c, 0xad, 0xd2, 0x5b, 0x27, 0x33, - 0x14, 0x45, 0xd7, 0x2d, 0x0b, 0x12, 0x13, 0x45, 0xa7, 0xc1}, + {0xb2, 0xaa, 0xb0, 0x41, 0xd8, 0xc0, 0x0c, 0x45, 0x22, 0x4c, 0xca, + 0x7f, 0x76, 0x60, 0x20, 0x7a, 0xcc, 0x16, 0x71, 0x71, 0x84, 0x17, + 0x3c, 0xb1, 0x12, 0x83, 0xb7, 0xe0, 0xe6, 0xe2, 0xaa, 0x98}, + // newfundsreq memo + {0x08, 0x34, 0x3d, 0xea, 0xdb, 0x22, 0xe2, 0xe1, 0x55, 0xd6, 0xf8, + 0xbe, 0xe0, 0x32, 0x8e, 0x25, 0xda, 0x3c, 0xea, 0x6e, 0xb9, 0xe2, + 0x14, 0x3f, 0x13, 0x55, 0xf3, 0x31, 0xe7, 0xf7, 0x02, 0x67}, + // newfundsreq hash + {0x60, 0x25, 0xc4, 0x38, 0xb7, 0x7f, 0x55, 0x4f, 0x7f, 0x59, 0x4b, + 0x58, 0xa9, 0x35, 0x57, 0xf9, 0x20, 0x44, 0x36, 0xbb, 0xd2, 0x9a, + 0x5c, 0xe6, 0x90, 0x6d, 0xd4, 0x31, 0x55, 0x6d, 0xda, 0xf1} }; enum { diff --git a/test-integration/signTransactionBasicDH.js b/test-integration/signTransactionBasicDH.js index 51c2c4f3..62aee79c 100644 --- a/test-integration/signTransactionBasicDH.js +++ b/test-integration/signTransactionBasicDH.js @@ -18,6 +18,8 @@ const PrivateKey = Ecc.PrivateKey; const Signature = Ecc.Signature; const arrayToHex = fiojs.Numeric.arrayToHex; import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" +import { createSharedCipher } from "@fioprotocol/fiojs/dist/encryption-fio.js"; +import { checkDecrypt } from "@fioprotocol/fiojs/dist/encryption-check.js"; //import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" @@ -53,6 +55,10 @@ const abiReqobtMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get body: `{"account_name": "fio.reqobt"}`, method: 'POST', })).json() +const abiReqobtTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() // Get a Map of all the types from fio.address const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) @@ -60,47 +66,141 @@ const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), ab const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtTestnet.abi) //console.log(typesFioAddressMainnet) -console.log(typesFioAddressMainnet) +/*console.log(typesFioAddressMainnet) console.log(typesTransactionMainnet) console.log(typesTransaction2Mainnet) console.log(typesTransactionMainnet.get('transaction')) console.log(typesTransactionMainnet.get('transaction_header')) console.log(typesTransactionMainnet.get('action')) +console.log(typesTransactionMainnet.get('permission_level')) console.log(typesFioAddressMainnet.get('trnsfiopubky')) -console.log(typesTransaction2Mainnet.get('newfundsreq')) +console.log(typesTransaction2Mainnet.get('newfundsreq'))*/ + -/* const networkInfo = { "TESTNET": { chainId: infoTestnet.chain_id, typesFioAddress: typesFioAddressTestnet, typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, }, "MAINNET": { chainId: infoMainnet.chain_id, typesFioAddress: typesFioAddressMainnet, typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, }, } +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + + +//------------------- TWO TRANSACTIONS ------------------------------------------------ + +const txMemo = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.reqobt", + name: "newfundsreq", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payer_fio_address: "My payer address", + payee_fio_address: "My payee address", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + + payee_public_key: otherPublicKey, + payee_public_address: "My payee public address", + amount: "amount 1000", + chain_code: "BTC", + token_code: "BTC", + memo: "I have memo", + hash: "", + offline_url: "", + }, + }], +} + +const txHash = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.reqobt", + name: "newfundsreq", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payer_fio_address: "My payer address", + payee_fio_address: "My payee address", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + + payee_public_key: otherPublicKey, + payee_public_address: "My payee public address", + amount: "amount 1000", + chain_code: "BTC", + token_code: "BTC", + memo: "", + hash: "I have hash", + offline_url: "I have url", + }, + }], +} +//------------------- SERIALIZE TRANSACTION ------------------------------------------------ + +async function buildTxUsingFioJs(network, tx, iv) { + const content = { + payee_public_address: tx.actions[0].data.payee_public_address, + amount: tx.actions[0].data.amount, + chain_code: tx.actions[0].data.chain_code, + token_code: tx.actions[0].data.token_code, + memo: tx.actions[0].data.memo, + hash: tx.actions[0].data.hash, + offline_url: tx.actions[0].data.offline_url, + } + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const encryptedContent = sharedCipher.encrypt('new_funds_content', content, iv) -// Serializes and signs transaction using fiojs -async function buildTxAndSignatureFioJs(network, tx, pubkey) { - // We serialize the transaction - // Get the addaddress action type - const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') + const data = { + payer_fio_address: tx.actions[0].data.payer_fio_address, + payee_fio_address: tx.actions[0].data.payee_fio_address, + content: encryptedContent, + max_fee: tx.actions[0].data.max_fee, + tpid: tx.actions[0].data.tpid, + actor: tx.actions[0].data.actor, + } - // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const actionAddress = networkInfo[network].typesTransaction2.get('newfundsreq') const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) - actionAddaddress.serialize(buffer, tx.actions[0].data) + actionAddress.serialize(buffer, data) const serializedData = arrayToHex(buffer.asUint8Array()) - // Get the actions parameter from the transaction and replace the data field with the serialized data field - let serializedAction = tx.actions[0] + let serializedAction = tx.actions[0] serializedAction = { ...serializedAction, data: serializedData, @@ -116,81 +216,16 @@ async function buildTxAndSignatureFioJs(network, tx, pubkey) { transaction_extensions: [], } - // Get the transaction action type - const txnaction = networkInfo[network].typesTransaction.get('transaction') - - // Serialize the transaction + const txTransaction = networkInfo[network].typesTransaction.get('transaction') const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) - txnaction.serialize(buffer2, rawTransaction) + txTransaction.serialize(buffer2, rawTransaction) const serializedTransaction = buffer2.asUint8Array() - - - //Lets compute hash in using Signature.sign - const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) - const hash = crypto.createHash('sha256').update(msg).digest('hex') - - - - //Now using signatureProvider.sign - const signatureProvider = new JsSignatureProvider([ - PrivateKey.fromHex(privateKeyDHex).toString(), - PrivateKey.fromHex(otherPrivateKeyDHex).toString() - ]); - const requiredKeys = [pubkey.toString()] - const serializedContextFreeData = null - - const signedTxn = await signatureProvider.sign({ - chainId: networkInfo[network].chainId, - requiredKeys: requiredKeys, - serializedTransaction: serializedTransaction, - serializedContextFreeData: serializedContextFreeData, - }) - - return { - serializedTx: serializedTransaction, - fullMsg: msg, - hash: crypto.createHash('sha256').update(msg).digest('hex'), - signature: signedTxn.signatures[0], - } + return {tx: Buffer.from(serializedTransaction), enc: encryptedContent} } -const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] -const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" -const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) -//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) -const publicKey = privateKey.toPublic() - -const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] -const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" -//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) -const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) -const otherPublicKey = otherPrivateKey.toPublic() - -const basicTx = { - expiration: "2021-08-28T12:50:36.686", - ref_block_num: 0x1122, - ref_block_prefix: 0x33445566, - context_free_actions: [], - actions: [{ - account: "fio.token", - name: "trnsfiopubky", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - amount: "20", - max_fee: 0x11223344, - tpid: "rewards@wallet", - actor: "aftyershcu22", - }, - }], - transaction_extensions: [], -} - +//---------------------------TESTS--------------------------------------------------------- const scriptName = getScriptName(fileURLToPath(import.meta.url)); testStart(scriptName); @@ -202,92 +237,61 @@ const device = getButtonsAndSnapshots(scriptName, speculosConf); await device.makeStartingScreenshot(); - -testStep(" - - -", "Sign testnet transaction"); -{ - const network = "TESTNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - +async function runTxTest(network, tx, review1, review2) { // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review2(review1, review2, "Review sign"); const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - + console.log(ledgerResponse) + + const iv = Buffer.from(ledgerResponse.dhEncryptedData, "base64").slice(0, 16) + + const pair = await buildTxUsingFioJs(network, tx, iv) + const serTx = pair.tx + const encContent = pair.enc + console.log("Test data:") + console.log(tx) + console.log(serTx.toString("hex")) + console.log(encContent) + + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) + const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) + console.log(Buffer.from(plaintextFio).toString("hex")) + console.log(Buffer.from(plaintextLedger).toString("hex")) + assert.equal(Buffer.from(plaintextFio).toString("hex"), Buffer.from(plaintextLedger).toString("hex")) + + const fullMsg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serTx, Buffer.allocUnsafe(32).fill(0)]) + console.log(fullMsg.toString("hex")) + const hash = crypto.createHash('sha256').update(fullMsg).digest('hex') assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); -} - -testStep(" - - -", "Sign mainnet transaction"); -{ - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); assert.equal(signatureLedger.verify(fullMsg, publicKey), true); assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } - -testStep(" - - -", "Invalid transaction: actor dont match"); +testStep(" - - -", "Sign testnet transaction - memo"); { - const network = "MAINNET" - const action = {...basicTx.actions[0], name: "name.error"} - const tx = {...basicTx, actions: [action]} - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = app.signTransaction({path, chainId, tx}) - await assert.rejects(promise); + await runTxTest("TESTNET", txMemo, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3], [1, 1, 3]) } -testStep(" - - -", "Invalid derivation path"); +testStep(" - - -", "Sign testnet mainnet - memo"); { - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = app.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) - const assertPromise = assert.rejects(promise, DeviceStatusError, "Action rejected by Ledger's security policy"); - await assertPromise; + await runTxTest("MAINNET", txMemo, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3], [1, 1, 3]) } -testStep(" - - -", "Sign transaction reject"); +testStep(" - - -", "Sign testnet transaction - hash"); { - const network = "TESTNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.reviewReject([1, 1, 2, 1, 1, 2], "Review sign"); - await assert.rejects(ledgerPromise, DeviceStatusError, "Action rejected by user"); + await runTxTest("TESTNET", txHash, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 3], [1, 1, 3]) } +testStep(" - - -", "Sign testnet mainnet - hash"); +{ + await runTxTest("MAINNET", txHash, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 3], [1, 1, 3]) +} await transport.close() testEnd(scriptName); -process.stdin.pause();*/ \ No newline at end of file +process.stdin.pause(); \ No newline at end of file diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js index cc446b98..ea9b1625 100644 --- a/test-integration/signTransactionCommandsDH.js +++ b/test-integration/signTransactionCommandsDH.js @@ -203,6 +203,38 @@ testStep(" - - -", "You can restart DH encryption. You cannot finish the transac await device.makeStartingScreenshot(); } //------------------------------------------------------------------------------------- +testStep(" - - -", "If you reject DH encryption it fails imediately, without exposing last blocks"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + + //END DH ENCRYPTION + const buffer13 = getAPDUDataBuffer("", ""); + const promise13 = transport.send(215, 0x20, 0x09, 0, buffer13); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); + device.curlButton("left", "Reject create shared secret"); //!!!!!! + await assert.rejects(promise13, err(0x6e09)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- await transport.close(); testEnd(scriptName); diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.01.png b/test-integration/snapshots/signTransactionBasicDH/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.03.png b/test-integration/snapshots/signTransactionBasicDH/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f4aeaaab9a2b581ed0187deea1319daa46cafc GIT binary patch literal 377 zcmV-<0fzpGP)006)pzeC>=NQs(OlwC#i@9Yk= zkcl3X+a7*L*!J9p=A@b60=ffO^|NnzrW-!9JHT4_SWGd6Wc(cnCUGvn0esjR;4d;|5>X^<4^8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~ zHrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_; z9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LLsh>s$e%xjP=C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.05.png b/test-integration/snapshots/signTransactionBasicDH/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.06.png b/test-integration/snapshots/signTransactionBasicDH/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.07.png b/test-integration/snapshots/signTransactionBasicDH/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.09.png b/test-integration/snapshots/signTransactionBasicDH/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc0e320244351797fec5739b9a6d9029cf45e8 GIT binary patch literal 429 zcmV;e0aE^nP)K?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.10.png b/test-integration/snapshots/signTransactionBasicDH/nanos.10.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.13.png b/test-integration/snapshots/signTransactionBasicDH/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d46659f7e6a6db71477a4300cc8603ce5c4760ed GIT binary patch literal 288 zcmV+*0pI?KP)CQy**THu@~5klZLE$I~j003~ry2!c|{*1!Y`T(=@vOYi) zAsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY90wp2lelgSR7rS*jd7d-Ig-!ph3j1~ zP?7Br)W4h)lA``iR0)gvw?Yi;AqJM%yae%9a|YP#)&xMbD;qUpieV|A*6F)x3d3AW zb=DC5vw>>a0O}c_%vRc;%AP$KsBWx?%6m4;;kE9$34o-ELvBs;=Kk;$fCGvhJrJG( mP^=QozUCALDgXcgKu>H(G@Tov-7KU40000H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.17.png b/test-integration/snapshots/signTransactionBasicDH/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.18.png b/test-integration/snapshots/signTransactionBasicDH/nanos.18.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI006)pzeC>=NQs(OlwC#i@9Yk= zkcl3X+a7*L*!J9p=A@b60=ffO^|NnzrW-!9JHT4_SWGd6Wc(cnCUGvn0esjR;4d;|5>X^<4^8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~ zHrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_; z9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LLsh>s$e%xjP=C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.24.png b/test-integration/snapshots/signTransactionBasicDH/nanos.24.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.25.png b/test-integration/snapshots/signTransactionBasicDH/nanos.25.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.26.png b/test-integration/snapshots/signTransactionBasicDH/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.28.png b/test-integration/snapshots/signTransactionBasicDH/nanos.28.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc0e320244351797fec5739b9a6d9029cf45e8 GIT binary patch literal 429 zcmV;e0aE^nP)K?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.29.png b/test-integration/snapshots/signTransactionBasicDH/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.32.png b/test-integration/snapshots/signTransactionBasicDH/nanos.32.png new file mode 100644 index 0000000000000000000000000000000000000000..d46659f7e6a6db71477a4300cc8603ce5c4760ed GIT binary patch literal 288 zcmV+*0pI?KP)CQy**THu@~5klZLE$I~j003~ry2!c|{*1!Y`T(=@vOYi) zAsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY90wp2lelgSR7rS*jd7d-Ig-!ph3j1~ zP?7Br)W4h)lA``iR0)gvw?Yi;AqJM%yae%9a|YP#)&xMbD;qUpieV|A*6F)x3d3AW zb=DC5vw>>a0O}c_%vRc;%AP$KsBWx?%6m4;;kE9$34o-ELvBs;=Kk;$fCGvhJrJG( mP^=QozUCALDgXcgKu>H(G@Tov-7KU40000H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.36.png b/test-integration/snapshots/signTransactionBasicDH/nanos.36.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.37.png b/test-integration/snapshots/signTransactionBasicDH/nanos.37.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.41.png b/test-integration/snapshots/signTransactionBasicDH/nanos.41.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f4aeaaab9a2b581ed0187deea1319daa46cafc GIT binary patch literal 377 zcmV-<0fzpGP)006)pzeC>=NQs(OlwC#i@9Yk= zkcl3X+a7*L*!J9p=A@b60=ffO^|NnzrW-!9JHT4_SWGd6Wc(cnCUGvn0esjR;4d;|5>X^<4^8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~ zHrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_; z9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LLsh>s$e%xjP=C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.43.png b/test-integration/snapshots/signTransactionBasicDH/nanos.43.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.44.png b/test-integration/snapshots/signTransactionBasicDH/nanos.44.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.45.png b/test-integration/snapshots/signTransactionBasicDH/nanos.45.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.47.png b/test-integration/snapshots/signTransactionBasicDH/nanos.47.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc0e320244351797fec5739b9a6d9029cf45e8 GIT binary patch literal 429 zcmV;e0aE^nP)K?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.48.png b/test-integration/snapshots/signTransactionBasicDH/nanos.48.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.51.png b/test-integration/snapshots/signTransactionBasicDH/nanos.51.png new file mode 100644 index 0000000000000000000000000000000000000000..e15f75d57e7822f4f4f5079a0ded4c024c86bdec GIT binary patch literal 319 zcmV-F0l@x=P)5z=Yggp%x`HjVMA$W8+fQ=mVVt$M5Y~V$ z0X={(K@!pzYQQSgBU&D<1=YWu3zAa(NtlGC`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH( zw#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt) zwSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XEfS;n&!Wmszyn#vxA%qYTi316_jcZPB Rp9KH_002ovPDHLkV1nw-h2sDK literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.52.png b/test-integration/snapshots/signTransactionBasicDH/nanos.52.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad GIT binary patch literal 323 zcmV-J0lfZ+P)B%HYfQOkO2h%0002E5kD-i Vp(~2sPMH7z002ovPDHLkV1lBWk&6HT literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.53.png b/test-integration/snapshots/signTransactionBasicDH/nanos.53.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.56.png b/test-integration/snapshots/signTransactionBasicDH/nanos.56.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.57.png b/test-integration/snapshots/signTransactionBasicDH/nanos.57.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI006)pzeC>=NQs(OlwC#i@9Yk= zkcl3X+a7*L*!J9p=A@b60=ffO^|NnzrW-!9JHT4_SWGd6Wc(cnCUGvn0esjR;4d;|5>X^<4^8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~ zHrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_; z9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LLsh>s$e%xjP=C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.63.png b/test-integration/snapshots/signTransactionBasicDH/nanos.63.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.64.png b/test-integration/snapshots/signTransactionBasicDH/nanos.64.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.65.png b/test-integration/snapshots/signTransactionBasicDH/nanos.65.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.67.png b/test-integration/snapshots/signTransactionBasicDH/nanos.67.png new file mode 100644 index 0000000000000000000000000000000000000000..bafc0e320244351797fec5739b9a6d9029cf45e8 GIT binary patch literal 429 zcmV;e0aE^nP)K?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.68.png b/test-integration/snapshots/signTransactionBasicDH/nanos.68.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.71.png b/test-integration/snapshots/signTransactionBasicDH/nanos.71.png new file mode 100644 index 0000000000000000000000000000000000000000..e15f75d57e7822f4f4f5079a0ded4c024c86bdec GIT binary patch literal 319 zcmV-F0l@x=P)5z=Yggp%x`HjVMA$W8+fQ=mVVt$M5Y~V$ z0X={(K@!pzYQQSgBU&D<1=YWu3zAa(NtlGC`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH( zw#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt) zwSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XEfS;n&!Wmszyn#vxA%qYTi316_jcZPB Rp9KH_002ovPDHLkV1nw-h2sDK literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.72.png b/test-integration/snapshots/signTransactionBasicDH/nanos.72.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad GIT binary patch literal 323 zcmV-J0lfZ+P)B%HYfQOkO2h%0002E5kD-i Vp(~2sPMH7z002ovPDHLkV1lBWk&6HT literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.73.png b/test-integration/snapshots/signTransactionBasicDH/nanos.73.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.76.png b/test-integration/snapshots/signTransactionBasicDH/nanos.76.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.77.png b/test-integration/snapshots/signTransactionBasicDH/nanos.77.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.25.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.25.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.27.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Tue, 28 Jun 2022 16:14:48 +0200 Subject: [PATCH 23/83] Integrity check in END DH command + minor chanes Changing newfundsreq data content format, introduce error specific to integrity checks. --- ledgerjs-fio/src/errors/deviceStatusError.ts | 4 ++ .../template_newfundsreq.ts | 16 ++--- ledgerjs-fio/src/types/internal.ts | 6 +- ledgerjs-fio/src/utils/parse.ts | 9 +-- src/errors.h | 2 + src/signTransaction.c | 16 +++-- src/signTransactionIntegrity.c | 58 ++++++++++++------ src/signTransactionIntegrity.h | 4 +- src/signTransactionIntegrity_test.c | 12 ++-- test-integration/signTransactionBasicDH.js | 6 +- .../signTransactionCommandsBasic.js | 2 +- test-integration/signTransactionCommandsDH.js | 46 ++++++++++++++ .../signTransactionCommandsDH/nanos.30.png | Bin 0 -> 322 bytes .../signTransactionCommandsDH/nanos.31.png | Bin 0 -> 414 bytes .../signTransactionCommandsDH/nanos.32.png | Bin 0 -> 475 bytes .../signTransactionCommandsDH/nanos.33.png | Bin 0 -> 372 bytes .../signTransactionCommandsDH/nanos.34.png | Bin 0 -> 426 bytes 17 files changed, 128 insertions(+), 53 deletions(-) create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.34.png diff --git a/ledgerjs-fio/src/errors/deviceStatusError.ts b/ledgerjs-fio/src/errors/deviceStatusError.ts index 02cfbe7b..c4bf2ad6 100644 --- a/ledgerjs-fio/src/errors/deviceStatusError.ts +++ b/ledgerjs-fio/src/errors/deviceStatusError.ts @@ -6,7 +6,9 @@ import {ErrorBase} from "./errorBase" */ export const DeviceStatusCodes = { ERR_STILL_IN_CALL: 0x6e04 as const, // internal + ERR_INVALID_STATE: 0x6e06 as const, ERR_INVALID_DATA: 0x6e07 as const, + ERR_INTEGRITY_CHECK_FAILED: 0x6e08 as const, ERR_REJECTED_BY_USER: 0x6e09 as const, ERR_REJECTED_BY_POLICY: 0x6e10 as const, ERR_DEVICE_LOCKED: 0x6e11 as const, @@ -18,7 +20,9 @@ export const DeviceStatusCodes = { // Human-readable version of errors reported by APDU protocol const DeviceStatusMessages: Record = { + [DeviceStatusCodes.ERR_INVALID_STATE]: "Ledger device reached invalid state", [DeviceStatusCodes.ERR_INVALID_DATA]: "Invalid data supplied to Ledger", + [DeviceStatusCodes.ERR_INTEGRITY_CHECK_FAILED]: "Failed command sequence integrity check", [DeviceStatusCodes.ERR_REJECTED_BY_USER]: "Action rejected by user", [DeviceStatusCodes.ERR_REJECTED_BY_POLICY]: "Action rejected by Ledger's security policy", diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 0ce82753..2c88f5ce 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -15,18 +15,18 @@ function template_newfundsreq_memo(chainId: HexString, tx: ParsedTransaction, pa const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; //Matching template - if (actionData.memo.length == 0) { + if (!actionData.memo) { return [] } - validate(actionData.hash.length == 0, InvalidDataReason.INVALID_HASH) - validate(actionData.offline_url.length == 0, InvalidDataReason.INVALID_HASH) + validate(!actionData.hash, InvalidDataReason.INVALID_HASH) + validate(!actionData.offline_url, InvalidDataReason.INVALID_OFFLINE_URL) return [ COMMAND_APPEND_CONST_DATA("01" as HexString), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo)), + COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo as string)), ]), - COMMAND_APPEND_CONST_DATA("01000100" as HexString), + COMMAND_APPEND_CONST_DATA("0000" as HexString), ] } @@ -37,13 +37,13 @@ function template_newfundsreq_hash(chainId: HexString, tx: ParsedTransaction, pa const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; //Matching template - if (actionData.hash.length == 0) { + if (!actionData.hash || !actionData.offline_url) { return [] } - validate(actionData.memo.length == 0, InvalidDataReason.INVALID_MEMO) + validate(!actionData.memo, InvalidDataReason.INVALID_MEMO) return [ - COMMAND_APPEND_CONST_DATA("010001" as HexString), + COMMAND_APPEND_CONST_DATA("0001" as HexString), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Hash", Buffer.from(actionData.hash)), ], 0, 0xFFFFFFFFFFFF), diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 60052529..e0fab040 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -39,9 +39,9 @@ export type ParsedRequestFundsData = { amount: string chain_code: string token_code: string - memo: string - hash: string - offline_url: string + memo?: string + hash?: string + offline_url?: string } export type ParsedActionAuthorisation = { diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 13adf831..37307b7b 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -277,9 +277,6 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa validate(isString(data.amount), InvalidDataReason.INVALID_AMOUNT) validate(isString(data.chain_code), InvalidDataReason.INVALID_CHAIN_CODE) validate(isString(data.token_code), InvalidDataReason.INVALID_TOKEN_CODE) - validate(isString(data.memo), InvalidDataReason.INVALID_MEMO) - validate(isString(data.hash), InvalidDataReason.INVALID_HASH) - validate(isString(data.offline_url), InvalidDataReason.INVALID_OFFLINE_URL) let payee_public_key: Buffer try { @@ -303,9 +300,9 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa amount: data.amount, chain_code: data.chain_code, token_code: data.token_code, - memo: data.memo, - hash: data.hash, - offline_url: data.offline_url, + ...data.memo ? {memo: data.memo}:{}, + ...data.hash ? {hash: data.hash}:{}, + ...data.offline_url ? {offline_url: data.offline_url}:{}, } const parsedAction: ParsedAction = { diff --git a/src/errors.h b/src/errors.h index 7cdee3dc..f361022a 100644 --- a/src/errors.h +++ b/src/errors.h @@ -24,6 +24,8 @@ enum { ERR_INVALID_STATE = 0x6E06, // Some part of request data is invalid (includes not enough data) ERR_INVALID_DATA = 0x6E07, + // Request is not valid in the context of previous calls + ERR_INTEGRITY_CHECK_FAILED = 0x6E08, // User rejected the action ERR_REJECTED_BY_USER = 0x6E09, diff --git a/src/signTransaction.c b/src/signTransaction.c index ba3e758c..9926ec5a 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -636,11 +636,12 @@ static void signTx_handleDHStart_ui_runStep() { UI_STEP_END(HANDLE_DH_START_STEP_INVALID); } -__noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU(uint8_t p2, - MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, - size_t constSize, - uint8_t* varDataBuffer, - size_t varSize) { +__noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU( + uint8_t p2, + MARK_UNUSED_NO_DEVEL uint8_t* constDataBuffer, + size_t constSize, + uint8_t* varDataBuffer, + size_t varSize) { // Sanity checks and trace buffers TRACE_STACK_USAGE(); { @@ -786,6 +787,9 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( // Apend data to hash (final blocks of DH encryption) and prepare response { + // To be sure that we are encoding correct DH data + VALIDATE(integrityCheckEvaluate(&ctx->integrity), ERR_INTEGRITY_CHECK_FAILED); + VALIDATE(ctx->dhIsActive, ERR_INVALID_STATE); // Counted section that started within DH encoding cannot end after DH encoding VALIDATE(ctx->dhCountedSectionEntryLevel == ctx->countedSections.currentLevel, @@ -916,7 +920,7 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( // measures we finalize counted section { VALIDATE(!ctx->dhIsActive, ERR_INVALID_STATE); - VALIDATE(integrityCheckFinalize(&ctx->integrity), ERR_INVALID_STATE); + VALIDATE(integrityCheckEvaluate(&ctx->integrity), ERR_INTEGRITY_CHECK_FAILED); VALIDATE(countedSectionFinalize(&ctx->countedSections), ERR_INVALID_DATA); } diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 06d0b2dc..a4f98af8 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -20,27 +20,49 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x3c, 0xc2, 0xa2, 0x0d, 0xfb, 0x3b, 0xde, 0xf4, 0xdd, 0x17, 0xf9, 0x97, 0x1c, 0xc8, 0x42, 0x1a, 0xc3, 0x9f, 0x6a, 0x63, 0x9d, 0x0d, 0x5d, 0x9f, 0xb4, 0x24, 0xcf, 0x6b, 0xe5, 0x7c, 0x38, 0x29}, - // Testing transaction template for signTransactionCommandsDH.js - {0xa3, 0x70, 0x53, 0x1e, 0xf3, 0x3e, 0xbe, 0x29, 0x3c, 0xb7, 0xcd, - 0xd3, 0xe4, 0x2b, 0xe0, 0x19, 0xa0, 0xdf, 0xb1, 0x2c, 0x92, 0xa1, - 0x08, 0x6c, 0xd8, 0x0b, 0xd4, 0xc5, 0x37, 0xce, 0xd2, 0xea}, - // Testing transaction template for signTransactionCommandsDHCountedSections.js + // Testing transaction template for signTransactionCommandsDH.js (DH step, and FINISH step) + {0xad, 0x0e, 0xd3, 0xa2, 0x95, 0xd5, 0x2c, 0x97, 0xb3, 0xf5, 0xa6, + 0xc0, 0x66, 0xea, 0xe5, 0x5d, 0xbb, 0x71, 0xd1, 0x1f, 0x57, 0x69, + 0x35, 0x89, 0xd4, 0x3a, 0x5a, 0xf0, 0x3e, 0xed, 0xbf, 0x17}, + {0xf2, 0xab, 0x8e, 0xd1, 0x16, 0x0a, 0xc8, 0x3e, 0x67, 0x2c, 0xef, + 0xcd, 0x8f, 0x81, 0x42, 0x97, 0x60, 0x7d, 0x8a, 0x1e, 0xc8, 0x76, + 0x87, 0xe4, 0x3f, 0x6a, 0x92, 0x3d, 0x03, 0xa0, 0x8a, 0x16}, + {0x43, 0xd2, 0x0e, 0x07, 0x7a, 0xf1, 0x88, 0x9a, 0x21, 0x13, 0x09, + 0xa8, 0x8b, 0xfe, 0xa4, 0x6a, 0xad, 0x4e, 0x43, 0x84, 0xb2, 0x94, + 0xe6, 0x95, 0xe5, 0x5c, 0xc9, 0x8d, 0x95, 0x87, 0x3b, 0xf9}, + {0xc5, 0x1d, 0xb3, 0x6c, 0x7b, 0xca, 0x2b, 0xbd, 0xde, 0x28, 0x55, + 0x02, 0xed, 0xd1, 0x0a, 0x59, 0x2b, 0xe2, 0xfa, 0xb7, 0x3f, 0x9e, + 0x77, 0xca, 0x36, 0xd1, 0x33, 0x4e, 0x85, 0x78, 0x99, 0xcd}, + // Testing transaction template for signTransactionCommandsDHCountedSections.js (DH step, and + // FINISH step) {0x32, 0x94, 0xcb, 0xbb, 0x52, 0x16, 0xfb, 0xe3, 0xff, 0xba, 0x8a, 0x8f, 0xdd, 0x9d, 0xa6, 0x4b, 0x7d, 0x27, 0x8d, 0x88, 0x53, 0xd0, 0xfe, 0x52, 0x96, 0x02, 0xed, 0x5d, 0x96, 0x86, 0x20, 0xf0}, + {0xa3, 0x70, 0x53, 0x1e, 0xf3, 0x3e, 0xbe, 0x29, 0x3c, 0xb7, 0xcd, + 0xd3, 0xe4, 0x2b, 0xe0, 0x19, 0xa0, 0xdf, 0xb1, 0x2c, 0x92, 0xa1, + 0x08, 0x6c, 0xd8, 0x0b, 0xd4, 0xc5, 0x37, 0xce, 0xd2, 0xea}, + {0x02, 0xf3, 0x2d, 0x9f, 0xa2, 0xfa, 0xec, 0x13, 0xda, 0x81, 0x64, + 0xbb, 0x66, 0xea, 0x0e, 0xff, 0xde, 0x09, 0x43, 0x50, 0xca, 0xba, + 0xd4, 0x6f, 0xbf, 0x94, 0xc5, 0x4d, 0x7c, 0x5c, 0xb3, 0x41}, #endif // trnsfiopubky - {0xb2, 0xaa, 0xb0, 0x41, 0xd8, 0xc0, 0x0c, 0x45, 0x22, 0x4c, 0xca, - 0x7f, 0x76, 0x60, 0x20, 0x7a, 0xcc, 0x16, 0x71, 0x71, 0x84, 0x17, + {0xb2, 0xaa, 0xb0, 0x41, 0xd8, 0xc0, 0x0c, 0x45, 0x22, 0x4c, 0xca, + 0x7f, 0x76, 0x60, 0x20, 0x7a, 0xcc, 0x16, 0x71, 0x71, 0x84, 0x17, 0x3c, 0xb1, 0x12, 0x83, 0xb7, 0xe0, 0xe6, 0xe2, 0xaa, 0x98}, - // newfundsreq memo - {0x08, 0x34, 0x3d, 0xea, 0xdb, 0x22, 0xe2, 0xe1, 0x55, 0xd6, 0xf8, - 0xbe, 0xe0, 0x32, 0x8e, 0x25, 0xda, 0x3c, 0xea, 0x6e, 0xb9, 0xe2, - 0x14, 0x3f, 0x13, 0x55, 0xf3, 0x31, 0xe7, 0xf7, 0x02, 0x67}, - // newfundsreq hash - {0x60, 0x25, 0xc4, 0x38, 0xb7, 0x7f, 0x55, 0x4f, 0x7f, 0x59, 0x4b, - 0x58, 0xa9, 0x35, 0x57, 0xf9, 0x20, 0x44, 0x36, 0xbb, 0xd2, 0x9a, - 0x5c, 0xe6, 0x90, 0x6d, 0xd4, 0x31, 0x55, 0x6d, 0xda, 0xf1} + // newfundsreq memo + {0x5c, 0x74, 0x2a, 0x3f, 0x32, 0x12, 0xd7, 0x38, 0x4b, 0xaa, 0x15, + 0x64, 0x59, 0xf4, 0x78, 0xdf, 0x05, 0x9f, 0x2a, 0xcc, 0x44, 0xda, + 0xb8, 0xed, 0x75, 0x48, 0xf3, 0x49, 0xf5, 0x06, 0xed, 0xd6}, + {0xb5, 0x17, 0x03, 0x78, 0x02, 0x22, 0xe8, 0x6d, 0xdb, 0xf8, 0xba, + 0x45, 0x58, 0xc6, 0x99, 0x55, 0xb4, 0xb4, 0xb5, 0x24, 0x7d, 0x6c, + 0xee, 0x87, 0x12, 0x13, 0xae, 0xd1, 0x76, 0x27, 0xc6, 0xf1}, + // newfundsreq hash + {0xd2, 0x8d, 0x3c, 0x74, 0xaa, 0xb6, 0x55, 0x80, 0x2b, 0x25, 0x5d, + 0x1a, 0x77, 0x41, 0x21, 0x37, 0xd7, 0x94, 0xb6, 0x8f, 0x73, 0x79, + 0x53, 0x1f, 0xf6, 0x26, 0xdb, 0x12, 0x1e, 0xfa, 0xb7, 0xf3}, + {0xa1, 0x9d, 0x9e, 0x94, 0x34, 0xe9, 0x7d, 0xce, 0x09, 0x5d, 0x2c, + 0x77, 0x8a, 0xfb, 0x0b, 0x4f, 0xf9, 0xf5, 0x41, 0xe6, 0xda, 0x89, + 0x8c, 0xe2, 0x2a, 0x8d, 0x58, 0x92, 0x64, 0xc0, 0x97, 0x78}, }; enum { @@ -72,7 +94,7 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -__noinline_due_to_stack__ bool _integrityCheckFinalize(tx_integrity_t *integrity, +__noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity, const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength) { ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); @@ -89,6 +111,6 @@ __noinline_due_to_stack__ bool _integrityCheckFinalize(tx_integrity_t *integrity return false; } -__noinline_due_to_stack__ bool integrityCheckFinalize(tx_integrity_t *integrity) { - return _integrityCheckFinalize(integrity, allowedHashes, ARRAY_LEN(allowedHashes)); +__noinline_due_to_stack__ bool integrityCheckEvaluate(tx_integrity_t *integrity) { + return _integrityCheckEvaluate(integrity, allowedHashes, ARRAY_LEN(allowedHashes)); } diff --git a/src/signTransactionIntegrity.h b/src/signTransactionIntegrity.h index 92fabcb8..87d1e744 100644 --- a/src/signTransactionIntegrity.h +++ b/src/signTransactionIntegrity.h @@ -18,11 +18,11 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * const uint8_t *constData, uint8_t constDataLength); -__noinline_due_to_stack__ bool integrityCheckFinalize(tx_integrity_t *integrity); +__noinline_due_to_stack__ bool integrityCheckEvaluate(tx_integrity_t *integrity); #ifdef DEVEL #include "hash.h" -__noinline_due_to_stack__ bool _integrityCheckFinalize(tx_integrity_t *integrity, +__noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity, const uint8_t (*allowedHashes)[SHA_256_SIZE], uint16_t allowedHashesLength); diff --git a/src/signTransactionIntegrity_test.c b/src/signTransactionIntegrity_test.c index 3260cfd6..bc83e34f 100644 --- a/src/signTransactionIntegrity_test.c +++ b/src/signTransactionIntegrity_test.c @@ -16,7 +16,7 @@ static void run1() { integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); - ASSERT(_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified p1 @@ -27,7 +27,7 @@ static void run2() { integrityCheckProcessInstruction(&integrity, 2, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(!_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified p2 @@ -38,7 +38,7 @@ static void run3() { integrityCheckProcessInstruction(&integrity, 1, 3, data1, SIZEOF(data1)); const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(!_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // modified data @@ -49,7 +49,7 @@ static void run4() { integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); - ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(!_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // swapped instructions @@ -60,7 +60,7 @@ static void run5() { const uint8_t data2[] = {}; integrityCheckProcessInstruction(&integrity, 5, 6, data2, SIZEOF(data2)); integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); - ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(!_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); } // Less instruction and second, correc use @@ -69,7 +69,7 @@ static void run6() { integrityCheckInit(&integrity); const uint8_t data1[] = {3, 4}; integrityCheckProcessInstruction(&integrity, 1, 2, data1, SIZEOF(data1)); - ASSERT(!_integrityCheckFinalize(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); + ASSERT(!_integrityCheckEvaluate(&integrity, allowedHashes, ARRAY_LEN(allowedHashes))); run1(); } diff --git a/test-integration/signTransactionBasicDH.js b/test-integration/signTransactionBasicDH.js index 62aee79c..b42380ba 100644 --- a/test-integration/signTransactionBasicDH.js +++ b/test-integration/signTransactionBasicDH.js @@ -133,8 +133,8 @@ const txMemo = { chain_code: "BTC", token_code: "BTC", memo: "I have memo", - hash: "", - offline_url: "", +// hash: "", +// offline_url: "", }, }], } @@ -163,7 +163,7 @@ const txHash = { amount: "amount 1000", chain_code: "BTC", token_code: "BTC", - memo: "", +// memo: "", hash: "I have hash", offline_url: "I have url", }, diff --git a/test-integration/signTransactionCommandsBasic.js b/test-integration/signTransactionCommandsBasic.js index 112a6d18..fd62c3c9 100644 --- a/test-integration/signTransactionCommandsBasic.js +++ b/test-integration/signTransactionCommandsBasic.js @@ -145,7 +145,7 @@ testStep(" - - -", "One byte constant data difference should cause integrity val //Finish path=44'/235'/0'/0/0 const buffer14 = getAPDUDataBuffer("", ""); const promise14 = transport.send(215, 0x20, 0x10, 0, buffer14); - await assert.rejects(promise14, err(0x6e06)); + await assert.rejects(promise14, err(0x6e08)); await device.makeStartingScreenshot(); } diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js index ea9b1625..47913e1a 100644 --- a/test-integration/signTransactionCommandsDH.js +++ b/test-integration/signTransactionCommandsDH.js @@ -235,6 +235,52 @@ testStep(" - - -", "If you reject DH encryption it fails imediately, without exp await device.makeStartingScreenshot(); } //------------------------------------------------------------------------------------- +testStep(" - - -", "Modifying anything within DH block should lead to integrity check failure"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + const otherPublicKey = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; + //START DH encryption //this is 9ubkey for path=44'/235'/0'/0/2000 + const buffer12 = getAPDUDataBuffer("", otherPublicKey); + const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); + await device.curlScreenShot(); + await device.curlButtonAndScreenshot("both", "message"); + device.curlButton("both", "Confirm their pubkey"); + const response12 = await promise12; + assert.equal(response12.slice(-2).toString("hex"), "9000"); + let dhEncodedMsg = response12.slice(0, -2).toString("hex"); + + //Append "0102030406" to transaction - this should be 0102030405 + const buffer13 = getAPDUDataBuffer("0102030406", ""); + const promise13 = transport.send(215, 0x20, 0x02, 0, buffer13); + const response13 = await promise13; + assert.equal(response13.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response13.slice(0, -2).toString("hex"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 05-policy, Key = "String" (06537472696e67) + const buffer14 = getAPDUDataBuffer("0201000000000000000000000000000000000506537472696e67", "4e69636520616e64206c6f6e67206c6f6e67206c6f6e67206c6f6e6720737472696e67"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await device.curlScreenShot(); + device.curlButton("both", "Confirm message"); //!!!!!! + const response14 = await promise14; + assert.equal(response14.slice(-2).toString("hex"), "9000"); + dhEncodedMsg += response14.slice(0, -2).toString("hex"); + + //END DH ENCRYPTION + const buffer15 = getAPDUDataBuffer("", ""); + const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); + await assert.rejects(promise15, err(0x6e08)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- await transport.close(); testEnd(scriptName); diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.30.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.31.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.33.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.33.png new file mode 100644 index 0000000000000000000000000000000000000000..109df4905cfd28cdbdc0bc27ee13772656b0e551 GIT binary patch literal 372 zcmV-)0gL{LP)lR*7$BtytN(Xs%rRyBMUj>T006+OtlkC)9Q#>bw?a$30eAux zK&lynueSj<((I?_x}9RAa`FJyX)@X1D^`v@pF8@>mi5Z04iwb`=%OBa*?znYP-!yt z$(f?67}WzB5_RemQ3YVP>}NX?J+VPolw&*$vCn{EkhPC`6K;k5M*TK{1A%D>xd%=L zH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@F`AEL$II?P(zWOsu1EolabaEus!5j` zdy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`zgkE9( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.34.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.34.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Wed, 29 Jun 2022 09:07:39 +0200 Subject: [PATCH 24/83] Add option to skip integrity check in DEVEL mode --- README.md | 8 ++++++++ ledgerjs-fio/src/utils/parse.ts | 1 - src/signTransactionIntegrity.c | 11 ++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb20e568..86fbcf8a 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,10 @@ Starts the container and runs shell (only for container build) `make size` Determines the size of the app. +Further interesting options are: ` +- `NO_PULL=1`- do not pull containers (this works also for other commands using containers) +- `NO_INTEGRITY_CHECK=1- IF ` - integrity check is always ok, must also have `DEVEL=1`. + ## Javascript layer @@ -78,6 +82,8 @@ Starts the container. You can interact with it on ports: `make speculos_port_5001_stop` Stops the container +Further interesting options are: ` +- `NO_PULL=1`- do not pull containers (this works also for other commands using containers) ### Running tests on Speculos @@ -94,6 +100,8 @@ for `getPublicKey.js` integration tests. `TEST_PNG_RE_GEN_FOR=snapshots make spe `make speculos_port_5001_unit_test` Runs unit tests on Speculos. Requires DEVEL build. +Further interesting options are: ` +- `NO_PULL=1`- do not pull containers (this works also for other commands using containers) ## Testing on physical device diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 37307b7b..c59f5fbe 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -280,7 +280,6 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa let payee_public_key: Buffer try { - console.log(data.payee_public_key) payee_public_key = data.payee_public_key.toUncompressed().toBuffer() } catch { diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index a4f98af8..48932664 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -96,7 +96,16 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * __noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity, const uint8_t (*allowedHashes)[SHA_256_SIZE], - uint16_t allowedHashesLength) { + uint16_t allowedHashesLength) { + PRINTF("Integrity check for: {"); + for(size_t i=0; iintegrityHash)-1; i++) { + PRINTF("0x%x ,", integrity->integrityHash[i]); + } + PRINTF("0x%x}\n", integrity->integrityHash[SIZEOF(integrity->integrityHash)-1]); +#if defined(DEVEL) && defined(NO_INTEGRITY_CHECK) + TRACE("Integrity check skipped"); + return true; +#endif ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); for (uint16_t i = 0; i < allowedHashesLength; i++) { STATIC_ASSERT(SIZEOF(allowedHashes[i]) == SIZEOF(integrity->integrityHash), From 86f29993287b826a3e6c5269a6727cbfbe5bd080 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 29 Jun 2022 10:26:36 +0200 Subject: [PATCH 25/83] Simplifying js parsing applying parse not validate as it is supposed --- ledgerjs-fio/src/types/internal.ts | 34 +++--- ledgerjs-fio/src/utils/parse.ts | 131 ++++++--------------- ledgerjs-fio/src/utils/parseTxActions.ts | 53 +++++++++ test-integration/signTransactionBasicDH.js | 2 +- 4 files changed, 106 insertions(+), 114 deletions(-) create mode 100644 ledgerjs-fio/src/utils/parseTxActions.ts diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index e0fab040..a2a3187e 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -18,30 +18,30 @@ export const PUBLIC_KEY_LENGTH = 65 export const WIF_PUBLIC_KEY_LENGTH = 53 export type ParsedTransferFIOTokensData = { - payee_public_key: string + payee_public_key: VarlenAsciiString amount: Uint64_str max_fee: Uint64_str - tpid: string + tpid: VarlenAsciiString actor: NameString } export type ParsedRequestFundsData = { - payer_fio_address: string - payee_fio_address: string + payer_fio_address: VarlenAsciiString + payee_fio_address: VarlenAsciiString max_fee: Uint64_str - actor: string - tpid: string + actor: VarlenAsciiString + tpid: VarlenAsciiString - //we need this to start DH encryption - payee_public_key: Buffer + //we need this to start DH encryption - + payee_public_key: Buffer //fiojs PublicKey .toUncompressed().toBuffer() //content - payee_public_address: string - amount: string - chain_code: string - token_code: string - memo?: string - hash?: string - offline_url?: string + payee_public_address: VarlenAsciiString + amount: VarlenAsciiString + chain_code: VarlenAsciiString + token_code: VarlenAsciiString + memo?: VarlenAsciiString + hash?: VarlenAsciiString + offline_url?: VarlenAsciiString } export type ParsedActionAuthorisation = { @@ -49,10 +49,12 @@ export type ParsedActionAuthorisation = { permission: NameString } +export type ParsedActionData = ParsedTransferFIOTokensData | ParsedRequestFundsData + export type ParsedAction = { contractAccountName: HexString authorization: Array - data: ParsedTransferFIOTokensData | ParsedRequestFundsData + data: ParsedActionData } export type ParsedTransaction = { diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index c59f5fbe..6e3933f5 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -14,12 +14,12 @@ import type { ValidBIP32Path, VarlenAsciiString, ParsedAction, - ParsedTransferFIOTokensData, - ParsedRequestFundsData, + ParsedActionData, } from "../types/internal" import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData} from "../types/public" import { CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ } from "../interactions/transactionTemplates/template_newfundsreq" import { CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY } from "../interactions/transactionTemplates/template_trnsfiopubky" +import { parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -103,8 +103,9 @@ export function validate(cond: boolean, errMsg: InvalidDataReason): asserts cond } -export function parseAscii(str: unknown, errMsg: InvalidDataReason): VarlenAsciiString { +export function parseAscii(str: unknown, errMsg: InvalidDataReason, minLen: number=0, maxLen: number=Number.MAX_SAFE_INTEGER): VarlenAsciiString { validate(isString(str), errMsg) + validate(minLen <= str.length && str.length <= maxLen, errMsg) validate( str.split("").every((c) => c.charCodeAt(0) >= 32 && c.charCodeAt(0) <= 126), errMsg, @@ -113,8 +114,9 @@ export function parseAscii(str: unknown, errMsg: InvalidDataReason): VarlenAscii } -export function parseHexString(str: unknown, errMsg: InvalidDataReason): HexString { +export function parseHexString(str: unknown, errMsg: InvalidDataReason, minLen: number=0, maxLen: number=Number.MAX_SAFE_INTEGER): HexString { validate(isHexString(str), errMsg) + validate(minLen <= str.length/2 && str.length <= maxLen/2, errMsg) return str } @@ -212,113 +214,48 @@ export function parseAuthorization(authorization: ActionAuthorisation, errMsg: I export function parseTransaction(chainId: string, tx: Transaction): ParsedTransaction { // validate tx (Transaction) validate(isString(tx.expiration), InvalidDataReason.INVALID_EXPIRATION) - validate(isBigIntLike(tx.ref_block_num), InvalidDataReason.INVALID_REF_BLOCK_NUM) - validate(isBigIntLike(tx.ref_block_prefix), InvalidDataReason.INVALID_REF_BLOCK_PREFIX) validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED) - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED) - const action = tx.actions[0] + const action = tx.actions[0] // validate action validate(isString(action.account), InvalidDataReason.INVALID_ACCOUNT) validate(isString(action.name), InvalidDataReason.INVALID_NAME) - validate(action.authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED) const authorization = action.authorization[0] - // validate authorization - validate(isString(authorization.actor), InvalidDataReason.INVALID_ACTOR) - validate(isString(authorization.permission), InvalidDataReason.INVALID_PERMISSION) - + let parsedActionData: ParsedActionData | null = null + let contractAccountName: HexString = "" as HexString if (action.account == "fio.token" && action.name == "trnsfiopubky") { - const data: TransferFIOTokensData = action.data; - - // validate action.data (TransferFIOTokenData) - validate(isString(data.payee_public_key), InvalidDataReason.INVALID_PAYEE_PUBKEY) - validate(data.payee_public_key.length <= 64, InvalidDataReason.INVALID_PAYEE_PUBKEY) - validate(isBigIntLike(data.amount), InvalidDataReason.INVALID_AMOUNT) - validate(isBigIntLike(data.max_fee), InvalidDataReason.INVALID_MAX_FEE) - validate(isString(data.tpid), InvalidDataReason.INVALID_TPID) - validate(data.tpid.length <= 20, InvalidDataReason.INVALID_TPID) - validate(isString(data.actor), InvalidDataReason.INVALID_ACTOR) - - const parsedActionData: ParsedTransferFIOTokensData = { - payee_public_key: data.payee_public_key, - amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), - max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), - actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), - tpid: data.tpid, - } - - const parsedAction: ParsedAction = { - contractAccountName: CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY as HexString, - authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], - data: parsedActionData, - } - - return { - expiration: tx.expiration, - ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), - ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), - context_free_actions: [], - actions: [parsedAction], - transaction_extensions: null, - } + parsedActionData = parseActionDataTransferFIOToken(action.data as TransferFIOTokensData) + contractAccountName = CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY as HexString } else if (action.account === "fio.reqobt" && action.name === "newfundsreq") { - const data: RequestFundsData = action.data as RequestFundsData; - validate(isString(data.tpid), InvalidDataReason.INVALID_TPID) - validate(data.tpid.length <= 20, InvalidDataReason.INVALID_TPID) - validate(isString(data.actor), InvalidDataReason.INVALID_ACTOR) - validate(isString(data.payer_fio_address), InvalidDataReason.INVALID_PAYER_FIO_ADDRESS) - validate(isString(data.payee_fio_address), InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS) - validate(isString(data.payee_public_address), InvalidDataReason.INVALID_AMOUNT) - validate(isString(data.amount), InvalidDataReason.INVALID_AMOUNT) - validate(isString(data.chain_code), InvalidDataReason.INVALID_CHAIN_CODE) - validate(isString(data.token_code), InvalidDataReason.INVALID_TOKEN_CODE) - - let payee_public_key: Buffer - try { - payee_public_key = data.payee_public_key.toUncompressed().toBuffer() - } - catch { - validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) - } - validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) - - const parsedActionData: ParsedRequestFundsData = { - payer_fio_address: data.payer_fio_address, - payee_fio_address: data.payee_fio_address, - max_fee: parseUint64_str(action.data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), - actor: data.actor, - tpid: data.tpid, - - payee_public_key: payee_public_key, - payee_public_address: data.payee_public_address, - amount: data.amount, - chain_code: data.chain_code, - token_code: data.token_code, - ...data.memo ? {memo: data.memo}:{}, - ...data.hash ? {hash: data.hash}:{}, - ...data.offline_url ? {offline_url: data.offline_url}:{}, - } - - const parsedAction: ParsedAction = { - contractAccountName: CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ as HexString, - authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], - data: parsedActionData, - } - - return { - expiration: tx.expiration, - ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), - ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), - context_free_actions: [], - actions: [parsedAction], - transaction_extensions: null, - } + parsedActionData = parseActionDataRequestFunds(action.data as RequestFundsData) + contractAccountName = CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ as HexString + } + + //manual validate so that automatic tools are OK wit conversion that follows + if(parsedActionData == null) { + throw new InvalidData(InvalidDataReason.ACTION_NOT_SUPPORTED) } + validate(contractAccountName.length == 32, InvalidDataReason.ACTION_NOT_SUPPORTED) + + const parsedAction: ParsedAction = { + contractAccountName: contractAccountName, + authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], + data: parsedActionData as ParsedActionData, + } + + return { + expiration: tx.expiration, + ref_block_num: parseUint16_t(tx.ref_block_num, InvalidDataReason.INVALID_REF_BLOCK_NUM), + ref_block_prefix: parseUint32_t(tx.ref_block_prefix, InvalidDataReason.INVALID_REF_BLOCK_PREFIX), + context_free_actions: [], + actions: [parsedAction], + transaction_extensions: null, + } throw new InvalidData(InvalidDataReason.ACTION_NOT_SUPPORTED) } diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts new file mode 100644 index 00000000..8060afbc --- /dev/null +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -0,0 +1,53 @@ +import { TransferFIOTokensData, RequestFundsData } from "fio"; +import {InvalidData, InvalidDataReason} from "../errors" +import type { + _Uint64_bigint, + _Uint64_num, + HexString, + ParsedAction, + ParsedTransferFIOTokensData, + ParsedRequestFundsData, +} from "../types/internal" +import { parseAscii, parseNameString, parseUint64_str, validate } from "./parse"; + + +export function parseActionDataTransferFIOToken(data: TransferFIOTokensData): ParsedTransferFIOTokensData { + return { + payee_public_key: parseAscii(data.payee_public_key, InvalidDataReason.INVALID_PAYEE_PUBKEY, 0, 64), + amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + + +export function parseActionDataRequestFunds(data: RequestFundsData): ParsedRequestFundsData { + let payee_public_key: Buffer + try { + payee_public_key = data.payee_public_key.toUncompressed().toBuffer() + } + catch { + validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) + } + validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) + + return { + payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS), + payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + + payee_public_key: payee_public_key, + payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), + amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), + chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE), + token_code: parseAscii(data.token_code, InvalidDataReason.INVALID_TOKEN_CODE), + ...data.memo ? {memo: parseAscii(data.memo, InvalidDataReason.INVALID_MEMO)}:{}, + ...data.hash ? {hash: parseAscii(data.hash, InvalidDataReason.INVALID_HASH)}:{}, + ...data.offline_url ? {offline_url: parseAscii(data.offline_url, InvalidDataReason.INVALID_OFFLINE_URL)}:{}, + } +} + + diff --git a/test-integration/signTransactionBasicDH.js b/test-integration/signTransactionBasicDH.js index b42380ba..f09f4ff1 100644 --- a/test-integration/signTransactionBasicDH.js +++ b/test-integration/signTransactionBasicDH.js @@ -68,8 +68,8 @@ const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), ab const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtTestnet.abi) -//console.log(typesFioAddressMainnet) /*console.log(typesFioAddressMainnet) +console.log(typesFioAddressMainnet) console.log(typesTransactionMainnet) console.log(typesTransaction2Mainnet) console.log(typesTransactionMainnet.get('transaction')) From 397daa00be15364424360183a5771a4ca0d04a49 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 29 Jun 2022 11:03:24 +0200 Subject: [PATCH 26/83] Finish BE->LE transition Derivation path is serializes LE Remove unnecessary endian functions --- doc/ins_get_public_key.md | 18 ++--- doc/ins_sign_tx.md | 2 + .../src/interactions/signTransaction.ts | 7 +- ledgerjs-fio/src/utils/serialize.ts | 2 +- src/bip44.c | 4 +- src/endian.h | 51 -------------- src/endian_test.c | 68 ------------------- src/getPublicKey.c | 2 + src/keyDerivation.c | 1 - src/runTests.c | 2 - src/signTransaction.c | 4 +- .../signTransactionCommandsBasic.js | 12 ++-- .../signTransactionCommandsCountedSection.js | 16 ++--- test-integration/signTransactionCommandsDH.js | 12 ++-- ...TransactionCommandsDHAndCountedSections.js | 6 +- .../signTransactionCommandsShowData.js | 20 +++--- .../signTransactionCommandsStorage.js | 6 +- 17 files changed, 56 insertions(+), 177 deletions(-) delete mode 100644 src/endian.h delete mode 100644 src/endian_test.c diff --git a/doc/ins_get_public_key.md b/doc/ins_get_public_key.md index 2f66ae14..9ce64202 100644 --- a/doc/ins_get_public_key.md +++ b/doc/ins_get_public_key.md @@ -21,21 +21,21 @@ The public key and derivation path will be shown either way if the derivation pa | Field | Length | Comments | | --------------------------------- | ------ | ---------------------------------- | | BIP32 path len | 1 | min 2, max 10 | -| First derivation index | 4 | Big endian. Must be 44' | -| Second derivation index | 4 | Big endian. Must be 235' | -| (optional) Third derivation index | 4 | Big endian | +| First derivation index | 4 | Little endian. Must be 44' | +| Second derivation index | 4 | Little endian. Must be 235' | +| (optional) Third derivation index | 4 | Little endian | | ... | ... | ... | -| (optional) Last derivation index | 4 | Big endian | -| (optional) No. of remaining keys | 4 | Big endian | +| (optional) Last derivation index | 4 | Little endian | +| (optional) No. of remaining keys | 4 | Little endian | Ledger will will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). **Response** -| Field | Length | -| ----------- | ------ | -| pub_key | 65 | -| pub_key_WIF | 53 | +| Field | Length | +| ------------ | ------ | +| pub_key | 65 | +| pub_key_hash | 32 | **Errors (SW codes)** diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index 7b6b7381..3ae5226e 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -1,5 +1,7 @@ # Sign Transaction +This is out of date at the moment. + **Description** Construct and sign a transaction (returns just the signature). diff --git a/ledgerjs-fio/src/interactions/signTransaction.ts b/ledgerjs-fio/src/interactions/signTransaction.ts index 5eb73446..f3bf245d 100644 --- a/ledgerjs-fio/src/interactions/signTransaction.ts +++ b/ledgerjs-fio/src/interactions/signTransaction.ts @@ -1,16 +1,13 @@ -import type {HexString, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../types/internal" +import type {HexString, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../types/internal" import {InvalidDataReason} from "../errors" import type {SignedTransactionData, Version} from "../types/public" -import {assert} from "../utils/assert" -import {chunkBy} from "../utils/ioHelpers" import {validate} from "../utils/parse" -import {buf_to_hex, date_to_buf, path_to_buf, uint8_to_buf, uint16_to_buf, uint32_to_buf, uint64_to_buf} from "../utils/serialize" +import {uint8_to_buf} from "../utils/serialize" import {INS} from "./common/ins" import type {Interaction, SendParams} from "./common/types" import {ensureLedgerAppVersionCompatible} from "./getVersion" import { templete_all } from "./transactionTemplates/template_all" -import { Console } from "console" const send = (params: { p1: number, diff --git a/ledgerjs-fio/src/utils/serialize.ts b/ledgerjs-fio/src/utils/serialize.ts index 0b1e28c1..3bc9ed3f 100644 --- a/ledgerjs-fio/src/utils/serialize.ts +++ b/ledgerjs-fio/src/utils/serialize.ts @@ -84,7 +84,7 @@ export function path_to_buf(path: Array): Buffer { data.writeUInt8(path.length, 0) for (let i = 0; i < path.length; i++) { - data.writeUInt32BE(path[i], 1 + i * 4) + data.writeUInt32LE(path[i], 1 + i * 4) } return data } diff --git a/src/bip44.c b/src/bip44.c index 8366cfa3..75f2b844 100644 --- a/src/bip44.c +++ b/src/bip44.c @@ -1,6 +1,5 @@ #include "common.h" #include "bip44.h" -#include "endian.h" static const uint32_t MAX_REASONABLE_ADDRESS = 1000; @@ -14,12 +13,13 @@ size_t bip44_parseFromWire(bip44_path_t* pathSpec, const uint8_t* dataBuffer, si // Ensure length is valid VALIDATE(length <= ARRAY_LEN(pathSpec->path), ERR_INVALID_DATA); VALIDATE(length * 4 + 1 <= dataSize, ERR_INVALID_DATA); + STATIC_ASSERT(sizeof(pathSpec->path[0]) == 4, "Incompatible path types."); pathSpec->length = length; size_t offset = 1; for (size_t i = 0; i < length; i++) { - pathSpec->path[i] = u4be_read(dataBuffer + offset); + memmove(&pathSpec->path[i], dataBuffer + offset, sizeof(pathSpec->path[i])); offset += 4; } return offset; diff --git a/src/endian.h b/src/endian.h deleted file mode 100644 index 80d96429..00000000 --- a/src/endian.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef H_FIO_APP_ENDIAN -#define H_FIO_APP_ENDIAN - -#include - -#include "assert.h" - -inline void u1be_write(uint8_t* outBuffer, uint8_t value) { - outBuffer[0] = value; -} - -inline void u2be_write(uint8_t* outBuffer, uint16_t value) { - u1be_write(outBuffer, value >> 8); - u1be_write(outBuffer + 1, value & 0xFF); -} - -inline void u4be_write(uint8_t* outBuffer, uint32_t value) { - u2be_write(outBuffer, value >> 16); - u2be_write(outBuffer + 2, value & 0xFFff); -} - -inline void u8be_write(uint8_t* outBuffer, uint64_t value) { - u4be_write(outBuffer, (value >> 32)); - u4be_write(outBuffer + 4, value & 0xFFffFFff); -} - -inline uint8_t u1be_read(const uint8_t* inBuffer) { - return inBuffer[0]; -} - -inline uint16_t u2be_read(const uint8_t* inBuffer) { - STATIC_ASSERT(sizeof(uint32_t) == sizeof(unsigned), "bad unsigned size"); - - // bitwise OR promotes unsigned types smaller than int to unsigned - return (uint16_t) (((uint32_t) (u1be_read(inBuffer) << 8)) | - ((uint32_t) (u1be_read(inBuffer + 1)))); -} - -inline uint32_t u4be_read(const uint8_t* inBuffer) { - return ((uint32_t) u2be_read(inBuffer) << 16) | (uint32_t) (u2be_read(inBuffer + 2)); -} - -inline uint64_t u8be_read(const uint8_t* inBuffer) { - return ((uint64_t) u4be_read(inBuffer) << 32u) | (uint64_t) (u4be_read(inBuffer + 4)); -} - -#ifdef DEVEL -void run_endian_test(); -#endif // DEVEL - -#endif // H_FIO_APP_ENDIAN diff --git a/src/endian_test.c b/src/endian_test.c deleted file mode 100644 index c2b9adcd..00000000 --- a/src/endian_test.c +++ /dev/null @@ -1,68 +0,0 @@ -#ifdef DEVEL - -#include "endian.h" -#include "testUtils.h" - -void run_read_test() { - const uint8_t* buffer = (uint8_t*) "\x47\x11\x22\x33\x44\x55\x66\x77\x88\x47"; - - EXPECT_EQ(u1be_read(buffer), 0x47); - EXPECT_EQ(u1be_read(buffer + 1), 0x11); - EXPECT_EQ(u1be_read(buffer + 2), 0x22); - - EXPECT_EQ(u2be_read(buffer), 0x4711); - EXPECT_EQ(u2be_read(buffer + 1), 0x1122); - EXPECT_EQ(u2be_read(buffer + 2), 0x2233); - - EXPECT_EQ(u4be_read(buffer), 0x47112233); - EXPECT_EQ(u4be_read(buffer + 1), 0x11223344); - EXPECT_EQ(u4be_read(buffer + 2), 0x22334455); - - EXPECT_EQ(u8be_read(buffer), 0x4711223344556677); - EXPECT_EQ(u8be_read(buffer + 1), 0x1122334455667788); - EXPECT_EQ(u8be_read(buffer + 2), 0x2233445566778847); -} - -void run_read_write_test() { - uint8_t buffer[10] = { - 0x44, // prefix - 0x47, - 0x47, - 0x47, - 0x47, - 0x47, - 0x47, - 0x47, - 0x47, - 0x77 // postfix - }; - - u1be_write(buffer + 1, 0x74); - EXPECT_EQ(u1be_read(buffer), 0x44); - EXPECT_EQ(u1be_read(buffer + 1), 0x74); - EXPECT_EQ(u1be_read(buffer + 2), 0x47); - - u2be_write(buffer + 1, 0x2345); - EXPECT_EQ(u1be_read(buffer), 0x44); - EXPECT_EQ(u2be_read(buffer + 1), 0x2345); - EXPECT_EQ(u1be_read(buffer + 3), 0x47); - - u4be_write(buffer + 1, 0x32547698); - EXPECT_EQ(u1be_read(buffer), 0x44); - EXPECT_EQ(u4be_read(buffer + 1), 0x32547698); - EXPECT_EQ(u1be_read(buffer + 5), 0x47); - - u8be_write(buffer + 1, 0xa0b1c2d300112233); - EXPECT_EQ(u1be_read(buffer), 0x44); - EXPECT_EQ(u8be_read(buffer + 1), 0xa0b1c2d300112233); - EXPECT_EQ(u1be_read(buffer + 9), 0x77); -} - -void run_endian_test() { - PRINTF("run_endian_test\n"); - - run_read_test(); - run_read_write_test(); -} - -#endif // DEVEL diff --git a/src/getPublicKey.c b/src/getPublicKey.c index abdc561e..55deb937 100644 --- a/src/getPublicKey.c +++ b/src/getPublicKey.c @@ -141,6 +141,8 @@ void getPublicKey_handleAPDU(uint8_t p1, TRACE_BUFFER(wireDataBuffer, wireDataSize); size_t parsedSize = bip44_parseFromWire(&ctx->pathSpec, wireDataBuffer, wireDataSize); + BIP44_PRINTF(&ctx->pathSpec); + PRINTF("\n"); VALIDATE(parsedSize == wireDataSize, ERR_INVALID_DATA); } diff --git a/src/keyDerivation.c b/src/keyDerivation.c index 21b8be01..d6437829 100644 --- a/src/keyDerivation.c +++ b/src/keyDerivation.c @@ -6,7 +6,6 @@ #include "keyDerivation.h" #include "hash.h" #include "utils.h" -#include "endian.h" #include "fio.h" #include "securityPolicy.h" diff --git a/src/runTests.c b/src/runTests.c index 5cd42ce2..1f8b05b3 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -5,7 +5,6 @@ #include "hexUtils.h" #include "hash.h" #include "bip44.h" -#include "endian.h" #include "keyDerivation.h" #include "textUtils.h" #include "uiHelpers.h" @@ -26,7 +25,6 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, TRACE_STACK_USAGE(); PRINTF("Running tests\n"); run_hex_test(); - run_endian_test(); run_textUtils_test(); run_bip44_test(); run_key_derivation_test(); diff --git a/src/signTransaction.c b/src/signTransaction.c index 9926ec5a..9e8828c2 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -1,7 +1,5 @@ #include "common.h" #include "handlers.h" - -#include "endian.h" #include "eos_utils.h" #include "getSerial.h" #include "state.h" @@ -152,6 +150,8 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, const size_t parsedSize = bip44_parseFromWire(&ctx->wittnessPath, varData->derivationPath, varSize - SIZEOF(varData->chainId)); + BIP44_PRINTF(&ctx->wittnessPath); + PRINTF("\n"); VALIDATE(parsedSize == varSize - SIZEOF(varData->chainId), ERR_INVALID_DATA); STATIC_ASSERT(SIZEOF(ctx->dataToAppendToTx) >= SIZEOF(varData->chainId), diff --git a/test-integration/signTransactionCommandsBasic.js b/test-integration/signTransactionCommandsBasic.js index fd62c3c9..28f34920 100644 --- a/test-integration/signTransactionCommandsBasic.js +++ b/test-integration/signTransactionCommandsBasic.js @@ -38,7 +38,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - testnet"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -80,7 +80,7 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_CONST_DATA, SHOW_MESSAGE, FINISH instructions - mainnet"); { //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c - const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -121,7 +121,7 @@ testStep(" - - -", "Sign minimal fake devel transaction containing INIT, APPEND_ testStep(" - - -", "One byte constant data difference should cause integrity validation error (Test Value->Uest Value)"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -153,7 +153,7 @@ testStep(" - - -", "One byte constant data difference should cause integrity val testStep(" - - -", "Incorrect chain should result in immediate failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f incorrect chain - last bit - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7f052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await assert.rejects(promise11, err(0x6e07)); } @@ -161,7 +161,7 @@ testStep(" - - -", "Incorrect chain should result in immediate failure"); testStep(" - - -", "Incorrect lengths should lead to failure"); { //INIT chainId=21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c - const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -179,7 +179,7 @@ testStep(" - - -", "Incorrect lengths should lead to failure"); testStep(" - - -", "Non ASCII character in message"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! diff --git a/test-integration/signTransactionCommandsCountedSection.js b/test-integration/signTransactionCommandsCountedSection.js index 253a6926..6ce9f4ff 100644 --- a/test-integration/signTransactionCommandsCountedSection.js +++ b/test-integration/signTransactionCommandsCountedSection.js @@ -38,7 +38,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTION instructions"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -133,7 +133,7 @@ testStep(" - - -", "Sign minimal fake devel transaction cotaining COUNTED_SECTIO testStep(" - - -", "Validation failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -151,7 +151,7 @@ testStep(" - - -", "Validation failure"); testStep(" - - -", "VarInt32 incorrect format"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -169,7 +169,7 @@ testStep(" - - -", "VarInt32 incorrect format"); testStep(" - - -", "VarInt32 too many bytes"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -187,7 +187,7 @@ testStep(" - - -", "VarInt32 too many bytes"); testStep(" - - -", "Too big for UInt32"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -205,7 +205,7 @@ testStep(" - - -", "Too big for UInt32"); testStep(" - - -", "too much nesting"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -264,7 +264,7 @@ testStep(" - - -", "too much nesting"); testStep(" - - -", "Unexpected end counted section"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -283,7 +283,7 @@ testStep(" - - -", "Unexpected end counted section"); testStep(" - - -", "Length mismatch"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js index 47913e1a..1e8cadc4 100644 --- a/test-integration/signTransactionCommandsDH.js +++ b/test-integration/signTransactionCommandsDH.js @@ -40,7 +40,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign minimal devel DH tranaction"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -113,7 +113,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); testStep(" - - -", "Ending DH encoding without beggining it does not work"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -132,7 +132,7 @@ testStep(" - - -", "Ending DH encoding without beggining it does not work"); testStep(" - - -", "Nested DH encryption disallowed"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -159,7 +159,7 @@ testStep(" - - -", "Nested DH encryption disallowed"); testStep(" - - -", "You can restart DH encryption. You cannot finish the transaction without finishind DH encoding"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -206,7 +206,7 @@ testStep(" - - -", "You can restart DH encryption. You cannot finish the transac testStep(" - - -", "If you reject DH encryption it fails imediately, without exposing last blocks"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -238,7 +238,7 @@ testStep(" - - -", "If you reject DH encryption it fails imediately, without exp testStep(" - - -", "Modifying anything within DH block should lead to integrity check failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); diff --git a/test-integration/signTransactionCommandsDHAndCountedSections.js b/test-integration/signTransactionCommandsDHAndCountedSections.js index ae9fd12b..b9deee75 100644 --- a/test-integration/signTransactionCommandsDHAndCountedSections.js +++ b/test-integration/signTransactionCommandsDHAndCountedSections.js @@ -40,7 +40,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign minimal devel DH tranaction"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -138,7 +138,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); testStep(" - - -", "You cannt just end counted section within DH encription without starting it"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -175,7 +175,7 @@ testStep(" - - -", "You cannt just end counted section within DH encription with testStep(" - - -", "Counted section from within DH encoding mus be finished"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); diff --git a/test-integration/signTransactionCommandsShowData.js b/test-integration/signTransactionCommandsShowData.js index ff11cbc3..1b8c1937 100644 --- a/test-integration/signTransactionCommandsShowData.js +++ b/test-integration/signTransactionCommandsShowData.js @@ -38,7 +38,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA instructions - testnet"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -119,7 +119,7 @@ testStep(" - - -", "Sign minimal fake devel transaction containing SHOW_DATA ins testStep(" - - -", "Unknown data type leads to failure"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -137,7 +137,7 @@ testStep(" - - -", "Unknown data type leads to failure"); testStep(" - - -", "Buffer does not pass length validation"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -155,7 +155,7 @@ testStep(" - - -", "Buffer does not pass length validation"); testStep(" - - -", "Key length does not match"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -173,7 +173,7 @@ testStep(" - - -", "Key length does not match"); testStep(" - - -", "Key contains invalid symbols"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -191,7 +191,7 @@ testStep(" - - -", "Key contains invalid symbols"); testStep(" - - -", "Key too long"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -209,7 +209,7 @@ testStep(" - - -", "Key too long"); testStep(" - - -", "String value contains non readable characters"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -227,7 +227,7 @@ testStep(" - - -", "String value contains non readable characters"); testStep(" - - -", "Name string has incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -245,7 +245,7 @@ testStep(" - - -", "Name string has incorrect length"); testStep(" - - -", "Amount incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! @@ -263,7 +263,7 @@ testStep(" - - -", "Amount incorrect length"); testStep(" - - -", "UInt64 incorrect length"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); device.curlButton("both", "Confirm chain"); //!!!!!! diff --git a/test-integration/signTransactionCommandsStorage.js b/test-integration/signTransactionCommandsStorage.js index 0c41964b..fd8d0037 100644 --- a/test-integration/signTransactionCommandsStorage.js +++ b/test-integration/signTransactionCommandsStorage.js @@ -38,7 +38,7 @@ console.log("This test requires app in DEVEL mode.") testStep(" - - -", "Sign transaction using storage"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -96,7 +96,7 @@ testStep(" - - -", "Sign transaction using storage"); testStep(" - - -", "Storing too long data"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); @@ -115,7 +115,7 @@ testStep(" - - -", "Storing too long data"); testStep(" - - -", "Data do not match"); { //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 - const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e058000002c800000eb800000000000000000000000"); + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); console.log(buffer11.toString("hex")) const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); await device.curlScreenShot(); From d5b9493fae38f9ed9e4ecd63a54f2795973a6f0e Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 29 Jun 2022 18:27:57 +0200 Subject: [PATCH 27/83] Recordobt transaction List of hashes for integrity check is not updated at the moment... --- MakefileContainer.mk | 1 + MakefileLocal.mk | 3 + MakefileTest.mk | 13 +- ledgerjs-fio/src/errors/invalidDataReason.ts | 5 + .../transactionTemplates/template_all.ts | 7 +- .../template_newfundsreq.ts | 8 +- .../template_recordobt.ts | 123 +++++++ ledgerjs-fio/src/types/internal.ts | 24 ++ ledgerjs-fio/src/types/public.ts | 41 ++- ledgerjs-fio/src/utils/parse.ts | 30 +- ledgerjs-fio/src/utils/parseTxActions.ts | 44 ++- ...sicDH.js => signTransactionNewfundsreq.js} | 0 test-integration/signTransactionRecordobt.js | 304 ++++++++++++++++++ .../nanos.01.png | Bin .../nanos.02.png | Bin .../nanos.03.png | Bin .../nanos.04.png | Bin .../nanos.05.png | Bin .../nanos.06.png | Bin .../nanos.07.png | Bin .../nanos.08.png | Bin .../nanos.09.png | Bin .../nanos.10.png | Bin .../nanos.11.png | Bin .../nanos.12.png | Bin .../nanos.13.png | Bin .../nanos.14.png | Bin .../nanos.15.png | Bin .../nanos.16.png | Bin .../nanos.17.png | Bin .../nanos.18.png | Bin .../nanos.19.png | Bin .../nanos.20.png | Bin .../nanos.21.png | Bin .../nanos.22.png | Bin .../nanos.23.png | Bin .../nanos.24.png | Bin .../nanos.25.png | Bin .../nanos.26.png | Bin .../nanos.27.png | Bin .../nanos.28.png | Bin .../nanos.29.png | Bin .../nanos.30.png | Bin .../nanos.31.png | Bin .../nanos.32.png | Bin .../nanos.33.png | Bin .../nanos.34.png | Bin .../nanos.35.png | Bin .../nanos.36.png | Bin .../nanos.37.png | Bin .../nanos.38.png | Bin .../nanos.39.png | Bin .../nanos.40.png | Bin .../nanos.41.png | Bin .../nanos.42.png | Bin .../nanos.43.png | Bin .../nanos.44.png | Bin .../nanos.45.png | Bin .../nanos.46.png | Bin .../nanos.47.png | Bin .../nanos.48.png | Bin .../nanos.49.png | Bin .../nanos.50.png | Bin .../nanos.51.png | Bin .../nanos.52.png | Bin .../nanos.53.png | Bin .../nanos.54.png | Bin .../nanos.55.png | Bin .../nanos.56.png | Bin .../nanos.57.png | Bin .../nanos.58.png | Bin .../nanos.59.png | Bin .../nanos.60.png | Bin .../nanos.61.png | Bin .../nanos.62.png | Bin .../nanos.63.png | Bin .../nanos.64.png | Bin .../nanos.65.png | Bin .../nanos.66.png | Bin .../nanos.67.png | Bin .../nanos.68.png | Bin .../nanos.69.png | Bin .../nanos.70.png | Bin .../nanos.71.png | Bin .../nanos.72.png | Bin .../nanos.73.png | Bin .../nanos.74.png | Bin .../nanos.75.png | Bin .../nanos.76.png | Bin .../nanos.77.png | Bin .../nanos.78.png | Bin .../nanos.79.png | Bin .../signTransactionRecordobt/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionRecordobt/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionRecordobt/nanos.03.png | Bin 0 -> 341 bytes .../signTransactionRecordobt/nanos.04.png | Bin 0 -> 433 bytes .../signTransactionRecordobt/nanos.05.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanos.06.png | Bin 0 -> 463 bytes .../signTransactionRecordobt/nanos.07.png | Bin 0 -> 468 bytes .../signTransactionRecordobt/nanos.08.png | Bin 0 -> 414 bytes .../signTransactionRecordobt/nanos.09.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanos.10.png | Bin 0 -> 436 bytes .../signTransactionRecordobt/nanos.11.png | Bin 0 -> 429 bytes .../signTransactionRecordobt/nanos.12.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanos.13.png | Bin 0 -> 317 bytes .../signTransactionRecordobt/nanos.14.png | Bin 0 -> 325 bytes .../signTransactionRecordobt/nanos.15.png | Bin 0 -> 290 bytes .../signTransactionRecordobt/nanos.16.png | Bin 0 -> 278 bytes .../signTransactionRecordobt/nanos.17.png | Bin 0 -> 288 bytes .../signTransactionRecordobt/nanos.18.png | Bin 0 -> 447 bytes .../signTransactionRecordobt/nanos.19.png | Bin 0 -> 377 bytes .../signTransactionRecordobt/nanos.20.png | Bin 0 -> 393 bytes .../signTransactionRecordobt/nanos.21.png | Bin 0 -> 361 bytes .../signTransactionRecordobt/nanos.22.png | Bin 0 -> 424 bytes .../signTransactionRecordobt/nanos.23.png | Bin 0 -> 356 bytes .../signTransactionRecordobt/nanos.24.png | Bin 0 -> 426 bytes .../signTransactionRecordobt/nanos.25.png | Bin 0 -> 314 bytes .../signTransactionRecordobt/nanos.26.png | Bin 0 -> 341 bytes .../signTransactionRecordobt/nanos.27.png | Bin 0 -> 433 bytes .../signTransactionRecordobt/nanos.28.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanos.29.png | Bin 0 -> 463 bytes .../signTransactionRecordobt/nanos.30.png | Bin 0 -> 468 bytes .../signTransactionRecordobt/nanos.31.png | Bin 0 -> 414 bytes .../signTransactionRecordobt/nanos.32.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanos.33.png | Bin 0 -> 436 bytes .../signTransactionRecordobt/nanos.34.png | Bin 0 -> 429 bytes .../signTransactionRecordobt/nanos.35.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanos.36.png | Bin 0 -> 317 bytes .../signTransactionRecordobt/nanos.37.png | Bin 0 -> 325 bytes .../signTransactionRecordobt/nanos.38.png | Bin 0 -> 290 bytes .../signTransactionRecordobt/nanos.39.png | Bin 0 -> 278 bytes .../signTransactionRecordobt/nanos.40.png | Bin 0 -> 288 bytes .../signTransactionRecordobt/nanos.41.png | Bin 0 -> 447 bytes .../signTransactionRecordobt/nanos.42.png | Bin 0 -> 377 bytes .../signTransactionRecordobt/nanos.43.png | Bin 0 -> 393 bytes .../signTransactionRecordobt/nanos.44.png | Bin 0 -> 361 bytes .../signTransactionRecordobt/nanos.45.png | Bin 0 -> 424 bytes .../signTransactionRecordobt/nanos.46.png | Bin 0 -> 356 bytes .../signTransactionRecordobt/nanos.47.png | Bin 0 -> 426 bytes .../signTransactionRecordobt/nanos.48.png | Bin 0 -> 322 bytes .../signTransactionRecordobt/nanos.49.png | Bin 0 -> 341 bytes .../signTransactionRecordobt/nanos.50.png | Bin 0 -> 433 bytes .../signTransactionRecordobt/nanos.51.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanos.52.png | Bin 0 -> 463 bytes .../signTransactionRecordobt/nanos.53.png | Bin 0 -> 468 bytes .../signTransactionRecordobt/nanos.54.png | Bin 0 -> 414 bytes .../signTransactionRecordobt/nanos.55.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanos.56.png | Bin 0 -> 436 bytes .../signTransactionRecordobt/nanos.57.png | Bin 0 -> 429 bytes .../signTransactionRecordobt/nanos.58.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanos.59.png | Bin 0 -> 317 bytes .../signTransactionRecordobt/nanos.60.png | Bin 0 -> 325 bytes .../signTransactionRecordobt/nanos.61.png | Bin 0 -> 290 bytes .../signTransactionRecordobt/nanos.62.png | Bin 0 -> 278 bytes .../signTransactionRecordobt/nanos.63.png | Bin 0 -> 319 bytes .../signTransactionRecordobt/nanos.64.png | Bin 0 -> 323 bytes .../signTransactionRecordobt/nanos.65.png | Bin 0 -> 447 bytes .../signTransactionRecordobt/nanos.66.png | Bin 0 -> 377 bytes .../signTransactionRecordobt/nanos.67.png | Bin 0 -> 393 bytes .../signTransactionRecordobt/nanos.68.png | Bin 0 -> 361 bytes .../signTransactionRecordobt/nanos.69.png | Bin 0 -> 424 bytes .../signTransactionRecordobt/nanos.70.png | Bin 0 -> 356 bytes .../signTransactionRecordobt/nanos.71.png | Bin 0 -> 426 bytes .../signTransactionRecordobt/nanos.72.png | Bin 0 -> 314 bytes .../signTransactionRecordobt/nanos.73.png | Bin 0 -> 341 bytes .../signTransactionRecordobt/nanos.74.png | Bin 0 -> 433 bytes .../signTransactionRecordobt/nanos.75.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanos.76.png | Bin 0 -> 463 bytes .../signTransactionRecordobt/nanos.77.png | Bin 0 -> 468 bytes .../signTransactionRecordobt/nanos.78.png | Bin 0 -> 414 bytes .../signTransactionRecordobt/nanos.79.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanos.80.png | Bin 0 -> 436 bytes .../signTransactionRecordobt/nanos.81.png | Bin 0 -> 429 bytes .../signTransactionRecordobt/nanos.82.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanos.83.png | Bin 0 -> 317 bytes .../signTransactionRecordobt/nanos.84.png | Bin 0 -> 325 bytes .../signTransactionRecordobt/nanos.85.png | Bin 0 -> 290 bytes .../signTransactionRecordobt/nanos.86.png | Bin 0 -> 278 bytes .../signTransactionRecordobt/nanos.87.png | Bin 0 -> 319 bytes .../signTransactionRecordobt/nanos.88.png | Bin 0 -> 323 bytes .../signTransactionRecordobt/nanos.89.png | Bin 0 -> 447 bytes .../signTransactionRecordobt/nanos.90.png | Bin 0 -> 377 bytes .../signTransactionRecordobt/nanos.91.png | Bin 0 -> 393 bytes .../signTransactionRecordobt/nanos.92.png | Bin 0 -> 361 bytes .../signTransactionRecordobt/nanos.93.png | Bin 0 -> 424 bytes .../signTransactionRecordobt/nanos.94.png | Bin 0 -> 356 bytes .../signTransactionRecordobt/nanos.95.png | Bin 0 -> 426 bytes 187 files changed, 562 insertions(+), 41 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts rename test-integration/{signTransactionBasicDH.js => signTransactionNewfundsreq.js} (100%) create mode 100644 test-integration/signTransactionRecordobt.js rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.01.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.02.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.03.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.04.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.05.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.06.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.07.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.08.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.09.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.10.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.11.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.12.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.13.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.14.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.15.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.16.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.17.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.18.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.19.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.20.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.21.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.22.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.23.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.24.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.25.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.26.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.27.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.28.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.29.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.30.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.31.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.32.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.33.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.34.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.35.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.36.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.37.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.38.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.39.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.40.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.41.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.42.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.43.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.44.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.45.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.46.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.47.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.48.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.49.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.50.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.51.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.52.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.53.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.54.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.55.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.56.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.57.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.58.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.59.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.60.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.61.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.62.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.63.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.64.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.65.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.66.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.67.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.68.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.69.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.70.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.71.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.72.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.73.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.74.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.75.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.76.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.77.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.78.png (100%) rename test-integration/snapshots/{signTransactionBasicDH => signTransactionBasicNewfundsreq}/nanos.79.png (100%) create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.47.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.51.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.52.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.53.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.54.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.55.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.56.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.57.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.58.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.59.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.60.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.61.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.62.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.63.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.64.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.65.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.66.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.67.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.68.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.69.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.70.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.71.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.72.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.73.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.74.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.75.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.76.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.77.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.78.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.79.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.80.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.81.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.82.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.83.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.84.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.85.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.86.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.87.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.88.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.89.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.90.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.91.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.92.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.93.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.94.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.95.png diff --git a/MakefileContainer.mk b/MakefileContainer.mk index 21da0daf..3e026036 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -52,6 +52,7 @@ define run_docker -e BOLOS_SDK=$(BOLOS_SDK_DIRECTORY) \ -e DEVEL=$(DEVEL) \ -e TARGET_NAME=$(TARGET_NAME) \ + -e NO_INTEGRITY_CHECK=$(NO_INTEGRITY_CHECK) \ -u $(USERID):$(USERID) \ -v $(shell pwd):/app \ $(1) \ diff --git a/MakefileLocal.mk b/MakefileLocal.mk index e32fd6b1..c262e646 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -95,6 +95,9 @@ ifeq ($(DEVEL), 1) else DEFINES += PRINTF=mcu_usb_printf endif + ifeq ($(NO_INTEGRITY_CHECK), 1) + DEFINES += NO_INTEGRITY_CHECK + endif else DEFINES += RESET_ON_CRASH DEFINES += PRINTF\(...\)= diff --git a/MakefileTest.mk b/MakefileTest.mk index 370db886..6fef76da 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -30,12 +30,13 @@ endef .PHONY: speculos_port_5001_test_internal speculos_port_5001_test_internal: - $(call run_announce,$@) - $(call run_nodejs_test,5001,40001,getVersion.js) - $(call run_nodejs_test,5001,40001,getSerial.js) - $(call run_nodejs_test,5001,40001,getPublicKey.js) - $(call run_nodejs_test,5001,40001,signTransactionBasic.js) - $(call run_nodejs_test,5001,40001,signTransactionBasicDH.js) +# $(call run_announce,$@) +# $(call run_nodejs_test,5001,40001,getVersion.js) +# $(call run_nodejs_test,5001,40001,getSerial.js) +# $(call run_nodejs_test,5001,40001,getPublicKey.js) +# $(call run_nodejs_test,5001,40001,signTransactionBasic.js) +# $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) + $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index bb0a56cc..c1cd6208 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -26,10 +26,15 @@ export enum InvalidDataReason { UNEXPECTED_ERROR = "Unexpected error", INVALID_PAYER_FIO_ADDRESS = "invalid payer fio address", INVALID_PAYEE_FIO_ADDRESS = "invalid payer fio address", + INVALID_PAYER_PUBLIC_ADDRESS = "invalid payer public address", + INVALID_PAYEE_PUBLIC_ADDRESS = "invalid payer public address", INVALID_CHAIN_CODE = "invalid chain code", INVALID_TOKEN_CODE = "invalid token code", INVALID_PUBLIC_KEY = "invalid public key", INVALID_MEMO = "invalid memo", INVALID_HASH = "invalid hash", INVALID_OFFLINE_URL = "invalid offline url", + INVALID_FIO_REQUEST_ID = "invalid fio request id", + INVALID_STATUS = "invalid status", + INVALID_OBT_ID = "invalid opt id" } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 01e39857..691cd9ed 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -5,6 +5,7 @@ import { validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; import { template_trnsfiopubky } from "./template_trnsfiopubky"; import { template_newfundsreq } from "./template_newfundsreq"; +import { template_recordopt } from "./template_recordobt"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -12,7 +13,11 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); //Match action - const actionCommands:Array = templateAlternative([template_trnsfiopubky, template_newfundsreq])(chainId, tx, parsedPath) + const actionCommands:Array = templateAlternative([ + template_trnsfiopubky, + template_newfundsreq, + template_recordopt, + ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; return [ diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 2c88f5ce..af7a4345 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -77,10 +77,10 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address)) + COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address)) + COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(actionData.payee_public_key, [ @@ -91,10 +91,10 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_SHOW("Amount requested", Buffer.from(actionData.amount)), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code)), + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code)), + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), ]), ...memoAndHash, ]) diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts new file mode 100644 index 00000000..178613fe --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -0,0 +1,123 @@ +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata} from "../../types/internal" +import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, + COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +export const CONTRACT_ACCOUNT_NAME_RECORDOBT = "00403ed4aa0ba85b0000c887a64b91ba" + +function template_recordopt_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_RECORDOBT, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; + + //Matching template + if (!actionData.memo) { + return [] + } + validate(!actionData.hash, InvalidDataReason.INVALID_HASH) + validate(!actionData.offline_url, InvalidDataReason.INVALID_OFFLINE_URL) + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo as string)), + ]), + COMMAND_APPEND_CONST_DATA("0000" as HexString), + ] +} + +function template_recordopt_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_RECORDOBT, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; + + //Matching template + if (!actionData.hash || !actionData.offline_url) { + return [] + } + validate(!actionData.memo, InvalidDataReason.INVALID_MEMO) + + return [ + COMMAND_APPEND_CONST_DATA("0001" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Hash", Buffer.from(actionData.hash)), + ], 0, 0xFFFFFFFFFFFF), + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Offline url", Buffer.from(actionData.offline_url)), + ], 0, 0xFFFFFFFFFFFF), + ] +} + +export function template_recordopt(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + // Validate template expectations + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_RECORDOBT) { + return []; + } + + const actionData: ParsedRecordOtherBlockchainTransactionMetadata = tx.actions[0].data as ParsedRecordOtherBlockchainTransactionMetadata; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const memoAndHash: Array = templateAlternative([template_recordopt_memo, template_recordopt_hash])(chainId, tx, parsedPath) + validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) + + return [ + COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_RECORDOBT+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Record other blockchain transaction metadata"), + COMMAND_APPEND_DATA_NAME_SHOW("Authorization actor", authorization.actor), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Fio Request ID", Buffer.from(actionData.fio_request_id)) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_DH_ENCODE(actionData.payee_public_key, [ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payer Public Addr.", Buffer.from(actionData.payer_public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.payee_public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Amount requested", Buffer.from(actionData.amount)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Status", Buffer.from(actionData.status)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Obt ID", Buffer.from(actionData.obt_id)), + ]), + ...memoAndHash, + ]) + ], 64, 432), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Actor", Buffer.from(actionData.actor)) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index a2a3187e..063d22fb 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -44,6 +44,30 @@ export type ParsedRequestFundsData = { offline_url?: VarlenAsciiString } +export type ParsedRecordOtherBlockchainTransactionMetadata = { + fio_request_id: VarlenAsciiString + payer_fio_address: VarlenAsciiString + payee_fio_address: VarlenAsciiString + max_fee: Uint64_str + actor: VarlenAsciiString + tpid: VarlenAsciiString + + //we need this to start DH encryption + payee_public_key: any + //content + payee_public_address: VarlenAsciiString + payer_public_address: VarlenAsciiString + amount: VarlenAsciiString + chain_code: VarlenAsciiString + token_code: VarlenAsciiString + status: VarlenAsciiString + obt_id: VarlenAsciiString + memo?: VarlenAsciiString + hash?: VarlenAsciiString + offline_url?: VarlenAsciiString +} + + export type ParsedActionAuthorisation = { actor: NameString permission: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 2db4c5c5..5afd552b 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -145,7 +145,37 @@ export type TransferFIOTokensData = { actor: string } -export type RequestFundsData = { +/** + * Represents Request Funds newfundsreq data. + * @category Basic types + * @see [[Action]] + */ + export type RequestFundsData = { + payer_fio_address: string + payee_fio_address: string + max_fee: bigint_like + actor: string + tpid: string + + //we need this to start DH encryption + payee_public_key: any + //content + payee_public_address: string + amount: string + chain_code: string + token_code: string + memo?: string + hash?: string + offline_url?: string +} + +/** + * Represents Record Other Blockchain Transaction Metadata recordobt data. + * @category Basic types + * @see [[Action]] + */ + export type RecordOtherBlockchainTransactionMetadata = { + fio_request_id: string payer_fio_address: string payee_fio_address: string max_fee: bigint_like @@ -156,12 +186,15 @@ export type RequestFundsData = { payee_public_key: any //content payee_public_address: string + payer_public_address: string amount: string chain_code: string token_code: string - memo: string - hash: string - offline_url: string + status: string + obt_id: string + memo?: string + hash?: string + offline_url?: string } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 6e3933f5..e1db1a73 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,25 +1,11 @@ -import {InvalidData, InvalidDataReason} from "../errors" -import type { - _Uint64_bigint, - _Uint64_num, - FixlenHexString, - HexString, - NameString, - ParsedActionAuthorisation, - ParsedTransaction, - Uint8_t, - Uint16_t, - Uint32_t, - Uint64_str, - ValidBIP32Path, - VarlenAsciiString, - ParsedAction, - ParsedActionData, -} from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData} from "../types/public" +import { InvalidData, InvalidDataReason } from "../errors" +import type {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, + Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData } from "../types/internal" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata} from "../types/public" import { CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ } from "../interactions/transactionTemplates/template_newfundsreq" import { CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY } from "../interactions/transactionTemplates/template_trnsfiopubky" -import { parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" +import { CONTRACT_ACCOUNT_NAME_RECORDOBT } from "../interactions/transactionTemplates/template_recordobt" export const MAX_UINT_64_STR = "18446744073709551615" @@ -235,6 +221,10 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa parsedActionData = parseActionDataRequestFunds(action.data as RequestFundsData) contractAccountName = CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ as HexString } + else if (action.account === "fio.reqobt" && action.name === "recordobt") { + parsedActionData = parseActionDataRecordOtherBlockchainTransactionMetadata(action.data as RecordOtherBlockchainTransactionMetadata) + contractAccountName = CONTRACT_ACCOUNT_NAME_RECORDOBT as HexString + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 8060afbc..df7cdaa9 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,5 @@ -import { TransferFIOTokensData, RequestFundsData } from "fio"; -import {InvalidData, InvalidDataReason} from "../errors" +import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata } from "fio"; +import {InvalidDataReason} from "../errors" import type { _Uint64_bigint, _Uint64_num, @@ -7,6 +7,7 @@ import type { ParsedAction, ParsedTransferFIOTokensData, ParsedRequestFundsData, + ParsedRecordOtherBlockchainTransactionMetadata, } from "../types/internal" import { parseAscii, parseNameString, parseUint64_str, validate } from "./parse"; @@ -33,8 +34,8 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) return { - payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS), - payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), + payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), + payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS, 3, 64), max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), @@ -42,12 +43,43 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque payee_public_key: payee_public_key, payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), - chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE), - token_code: parseAscii(data.token_code, InvalidDataReason.INVALID_TOKEN_CODE), + chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + token_code: parseAscii(data.token_code, InvalidDataReason.INVALID_TOKEN_CODE, 1, 10), ...data.memo ? {memo: parseAscii(data.memo, InvalidDataReason.INVALID_MEMO)}:{}, ...data.hash ? {hash: parseAscii(data.hash, InvalidDataReason.INVALID_HASH)}:{}, ...data.offline_url ? {offline_url: parseAscii(data.offline_url, InvalidDataReason.INVALID_OFFLINE_URL)}:{}, } } +export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: RecordOtherBlockchainTransactionMetadata): ParsedRecordOtherBlockchainTransactionMetadata { + let payee_public_key: Buffer + try { + payee_public_key = data.payee_public_key.toUncompressed().toBuffer() + } + catch { + validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) + } + validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) + + return { + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), + payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + + payee_public_key: payee_public_key, + payer_public_address: parseAscii(data.payer_public_address, InvalidDataReason.INVALID_PAYER_PUBLIC_ADDRESS), + payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_PUBLIC_ADDRESS), + amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), + chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + token_code: parseAscii(data.token_code, InvalidDataReason.INVALID_TOKEN_CODE, 1, 10), + status: parseAscii(data.status, InvalidDataReason.INVALID_STATUS), + obt_id: parseAscii(data.obt_id, InvalidDataReason.INVALID_OBT_ID), + ...data.memo ? {memo: parseAscii(data.memo, InvalidDataReason.INVALID_MEMO)}:{}, + ...data.hash ? {hash: parseAscii(data.hash, InvalidDataReason.INVALID_HASH)}:{}, + ...data.offline_url ? {offline_url: parseAscii(data.offline_url, InvalidDataReason.INVALID_OFFLINE_URL)}:{}, + } +} diff --git a/test-integration/signTransactionBasicDH.js b/test-integration/signTransactionNewfundsreq.js similarity index 100% rename from test-integration/signTransactionBasicDH.js rename to test-integration/signTransactionNewfundsreq.js diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js new file mode 100644 index 00000000..1e94a4ba --- /dev/null +++ b/test-integration/signTransactionRecordobt.js @@ -0,0 +1,304 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" +import { createSharedCipher } from "@fioprotocol/fiojs/dist/encryption-fio.js"; +import { checkDecrypt } from "@fioprotocol/fiojs/dist/encryption-check.js"; + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiReqobtMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() +const abiReqobtTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtTestnet.abi) + +/*console.log(typesFioAddressMainnet) +console.log(typesFioAddressMainnet) +console.log(typesTransactionMainnet) +console.log(typesTransaction2Mainnet) +console.log(typesTransaction2Mainnet.get('recordobt'))*/ + + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + + +//------------------- TWO TRANSACTIONS ------------------------------------------------ + +const txMemo = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.reqobt", + name: "recordobt", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_request_id: "Fio request ID", + payer_fio_address: "My payer address", + payee_fio_address: "My payee address", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + + payee_public_key: otherPublicKey, + payer_public_address: "My payer public address", + payee_public_address: "My payee public address", + amount: "amount 1000", + chain_code: "BTC", + token_code: "BTC", + status: "status", + obt_id: "obt ID", + memo: "I have memo", + }, + }], +} + +const txHash = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.reqobt", + name: "recordobt", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_request_id: "Fio request ID", + payer_fio_address: "My payer address", + payee_fio_address: "My payee address", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + + payee_public_key: otherPublicKey, + payer_public_address: "My payer public address", + payee_public_address: "My payee public address", + amount: "amount 1000", + chain_code: "BTC", + token_code: "BTC", + status: "status", + obt_id: "obt ID", + hash: "I have hash", + offline_url: "I have url", + }, + }], +} + +//------------------- SERIALIZE TRANSACTION ------------------------------------------------ + +async function buildTxUsingFioJs(network, tx, iv) { + const content = { + payer_public_address: tx.actions[0].data.payer_public_address, + payee_public_address: tx.actions[0].data.payee_public_address, + amount: tx.actions[0].data.amount, + chain_code: tx.actions[0].data.chain_code, + token_code: tx.actions[0].data.token_code, + status: tx.actions[0].data.status, + obt_id: tx.actions[0].data.obt_id, + memo: tx.actions[0].data.memo, + hash: tx.actions[0].data.hash, + offline_url: tx.actions[0].data.offline_url, + } + + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const encryptedContent = sharedCipher.encrypt('record_obt_data_content', content, iv) + + const data = { + fio_request_id: tx.actions[0].data.fio_request_id, + payer_fio_address: tx.actions[0].data.payer_fio_address, + payee_fio_address: tx.actions[0].data.payee_fio_address, + content: encryptedContent, + max_fee: tx.actions[0].data.max_fee, + tpid: tx.actions[0].data.tpid, + actor: tx.actions[0].data.actor, + } + + const actionAddress = networkInfo[network].typesTransaction2.get('recordobt') + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddress.serialize(buffer, data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + const txTransaction = networkInfo[network].typesTransaction.get('transaction') + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txTransaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + return {tx: Buffer.from(serializedTransaction), enc: encryptedContent} +} + + +//---------------------------TESTS--------------------------------------------------------- + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + +async function runTxTest(network, tx, review1, review2) { + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review2(review1, review2, "Review sign"); + const ledgerResponse = await ledgerPromise; + console.log(ledgerResponse) + + const iv = Buffer.from(ledgerResponse.dhEncryptedData, "base64").slice(0, 16) + + const pair = await buildTxUsingFioJs(network, tx, iv) + const serTx = pair.tx + const encContent = pair.enc + console.log("Test data:") + console.log(tx) + console.log(serTx.toString("hex")) + console.log(encContent) + + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) + const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) + console.log(Buffer.from(plaintextFio).toString("hex")) + console.log(Buffer.from(plaintextLedger).toString("hex")) + assert.equal(Buffer.from(plaintextFio).toString("hex"), Buffer.from(plaintextLedger).toString("hex")) + + const fullMsg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serTx, Buffer.allocUnsafe(32).fill(0)]) + console.log(fullMsg.toString("hex")) + const hash = crypto.createHash('sha256').update(fullMsg).digest('hex') + assert.equal(ledgerResponse.txHashHex, hash); + + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +const longSequence1 = [1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3]; +const longSequence2 = [1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3]; + +testStep(" - - -", "Sign testnet transaction - memo"); +{ + await runTxTest("TESTNET", txMemo, longSequence1, [1, 1, 3]) +} + +testStep(" - - -", "Sign testnet mainnet - memo"); +{ + await runTxTest("MAINNET", txMemo, longSequence1, [1, 1, 3]) +} + +testStep(" - - -", "Sign testnet transaction - hash"); +{ + await runTxTest("TESTNET", txHash, longSequence2, [1, 1, 3]) +} + +testStep(" - - -", "Sign testnet mainnet - hash"); +{ + await runTxTest("MAINNET", txHash, longSequence2, [1, 1, 3]) +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause(); diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.01.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.01.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.01.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.01.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.02.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.02.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.02.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.02.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.03.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.03.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.03.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.03.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.04.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.04.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.04.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.04.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.05.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.05.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.05.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.05.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.06.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.06.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.06.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.06.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.07.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.07.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.07.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.07.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.08.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.08.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.08.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.08.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.09.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.09.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.09.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.09.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.10.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.10.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.10.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.10.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.11.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.11.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.11.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.11.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.12.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.12.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.12.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.12.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.13.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.13.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.13.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.13.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.14.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.14.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.14.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.14.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.15.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.15.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.15.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.15.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.16.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.16.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.16.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.16.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.17.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.17.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.17.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.17.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.18.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.18.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.18.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.18.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.19.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.19.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.19.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.19.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.20.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.20.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.20.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.20.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.21.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.21.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.21.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.21.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.22.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.22.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.22.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.22.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.23.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.23.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.23.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.23.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.24.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.24.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.24.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.24.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.25.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.25.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.25.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.25.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.26.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.26.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.26.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.26.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.27.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.27.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.27.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.27.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.28.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.28.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.28.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.28.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.29.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.29.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.29.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.29.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.30.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.30.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.30.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.30.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.31.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.31.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.31.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.31.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.32.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.32.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.32.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.32.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.33.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.33.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.33.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.33.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.34.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.34.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.34.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.34.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.35.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.35.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.35.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.35.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.36.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.36.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.36.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.36.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.37.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.37.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.37.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.37.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.38.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.38.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.38.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.38.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.39.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.39.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.39.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.39.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.40.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.40.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.40.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.40.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.41.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.41.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.41.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.41.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.42.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.42.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.42.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.42.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.43.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.43.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.43.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.43.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.44.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.44.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.44.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.44.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.45.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.45.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.45.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.45.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.46.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.46.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.46.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.46.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.47.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.47.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.47.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.47.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.48.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.48.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.48.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.48.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.49.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.49.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.49.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.49.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.50.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.50.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.50.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.50.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.51.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.51.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.51.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.51.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.52.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.52.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.52.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.52.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.53.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.53.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.53.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.53.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.54.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.54.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.54.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.54.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.55.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.55.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.55.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.55.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.56.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.56.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.56.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.56.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.57.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.57.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.57.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.57.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.58.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.58.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.58.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.58.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.59.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.59.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.59.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.59.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.60.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.60.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.60.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.60.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.61.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.61.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.61.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.61.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.62.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.62.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.62.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.62.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.63.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.63.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.63.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.63.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.64.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.64.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.64.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.64.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.65.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.65.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.65.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.65.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.66.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.66.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.66.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.66.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.67.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.67.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.67.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.67.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.68.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.68.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.68.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.68.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.69.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.69.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.69.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.69.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.70.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.70.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.70.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.70.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.71.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.71.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.71.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.71.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.72.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.72.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.72.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.72.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.73.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.73.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.73.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.73.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.74.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.74.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.74.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.74.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.75.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.75.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.75.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.75.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.76.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.76.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.76.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.76.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.77.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.77.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.77.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.77.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.78.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.78.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.78.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.78.png diff --git a/test-integration/snapshots/signTransactionBasicDH/nanos.79.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.79.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicDH/nanos.79.png rename to test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.79.png diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.01.png b/test-integration/snapshots/signTransactionRecordobt/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.03.png b/test-integration/snapshots/signTransactionRecordobt/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..c0150041dd070cf4bc71a173bba9b4fb4ff7d507 GIT binary patch literal 341 zcmV-b0jmCqP){?~POxgjjLhzWWmy+COUH1VlySBtO7p_Y8}Q_aZHVQdA+Gr|=m>G8<_MmU265?xixS n@hTC_*dWkf0RR9103PuJFcZTcOzz4R00000NkvXXu0mjf0)v#m literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.04.png b/test-integration/snapshots/signTransactionRecordobt/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..f78d98f74d16db9214e952e3e05d94b591ae7a90 GIT binary patch literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.05.png b/test-integration/snapshots/signTransactionRecordobt/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e034602c291e3ffec78d647ca8792429e4b2b GIT binary patch literal 390 zcmV;10eSw3P)c(+6KSXwkji&hwzVh-*!eG|AP9nBRW^}P&*OiRJ)K9|_Irk$ z`-Ldp;y`>*`Q2yOJxKSA_{-|5fJ@)uBesDZP{QCB6gI)VQcXck2S4Wb`PHbpwGvRE zmWg8m3$vLCj%@;K&EFfv5KBP!Zr<#VC%unttrs04mVoXEhd=!)TfASH^09V+plr}i z$7iGd41kd{YY>}I%ZInMD@f_8`!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZ zz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%;%@q$~OhJ@+ZmRB?Tn9C1{iXzlFJ0W$ zG`YTdZNe#P#eV`ak{vMQ5dU5sG$WaSA)&rk2hGf?hRQLG4w_L{L(?5WbVVK15i=EX kH|uRdlMx9Bf*@Fz9|ZjCKZfRNKmY&$07*qoM6N<$f{jSAO8@`> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.06.png b/test-integration/snapshots/signTransactionRecordobt/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.07.png b/test-integration/snapshots/signTransactionRecordobt/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.08.png b/test-integration/snapshots/signTransactionRecordobt/nanos.08.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.10.png b/test-integration/snapshots/signTransactionRecordobt/nanos.10.png new file mode 100644 index 0000000000000000000000000000000000000000..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 GIT binary patch literal 436 zcmV;l0ZaagP)lqGbR{k|ase$GZG~vHGY%=@h!hnDP2y z)E;^KQ1N3oZ^k^Y}R&y)_Fw$+TiOGF0b!Fnb!7^y#z%7P+!~CExd5pOi$<= z)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bq zyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nGq-w^>uOJS?k9vBG;Ik8^>Y$}rpvqgC zN-CvqUP+agK?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.12.png b/test-integration/snapshots/signTransactionRecordobt/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.15.png b/test-integration/snapshots/signTransactionRecordobt/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 GIT binary patch literal 290 zcmV+-0p0$IP)NDq-HB|xDf@=|6_ydqg^8{hHt|-oS~nZIQF!tvo#(T0N~Gg0owtf_$7FZu>b%707*qoM6N<$g7>w31poj5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.16.png b/test-integration/snapshots/signTransactionRecordobt/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..c0236f40e1f682660f35f989589a0948eac7ab57 GIT binary patch literal 278 zcmV+x0qOpUP)oOR+W-KoO6mpF+;1;$)BYSUuMcO) zXSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m(=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p z8jvsRZlrKU*bcTTft_udY7y_}+DeH2&kcl>=%1u3utfh<CQy**THu@~5klZLE$I~j003~ry2!c|{*1!Y`T(=@vOYi) zAsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY90wp2lelgSR7rS*jd7d-Ig-!ph3j1~ zP?7Br)W4h)lA``iR0)gvw?Yi;AqJM%yae%9a|YP#)&xMbD;qUpieV|A*6F)x3d3AW zb=DC5vw>>a0O}c_%vRc;%AP$KsBWx?%6m4;;kE9$34o-ELvBs;=Kk;$fCGvhJrJG( mP^=QozUCALDgXcgKu>H(G@Tov-7KU40000H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.21.png b/test-integration/snapshots/signTransactionRecordobt/nanos.21.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.22.png b/test-integration/snapshots/signTransactionRecordobt/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI{?~POxgjjLhzWWmy+COUH1VlySBtO7p_Y8}Q_aZHVQdA+Gr|=m>G8<_MmU265?xixS n@hTC_*dWkf0RR9103PuJFcZTcOzz4R00000NkvXXu0mjf0)v#m literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.27.png b/test-integration/snapshots/signTransactionRecordobt/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..f78d98f74d16db9214e952e3e05d94b591ae7a90 GIT binary patch literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.28.png b/test-integration/snapshots/signTransactionRecordobt/nanos.28.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e034602c291e3ffec78d647ca8792429e4b2b GIT binary patch literal 390 zcmV;10eSw3P)c(+6KSXwkji&hwzVh-*!eG|AP9nBRW^}P&*OiRJ)K9|_Irk$ z`-Ldp;y`>*`Q2yOJxKSA_{-|5fJ@)uBesDZP{QCB6gI)VQcXck2S4Wb`PHbpwGvRE zmWg8m3$vLCj%@;K&EFfv5KBP!Zr<#VC%unttrs04mVoXEhd=!)TfASH^09V+plr}i z$7iGd41kd{YY>}I%ZInMD@f_8`!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZ zz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%;%@q$~OhJ@+ZmRB?Tn9C1{iXzlFJ0W$ zG`YTdZNe#P#eV`ak{vMQ5dU5sG$WaSA)&rk2hGf?hRQLG4w_L{L(?5WbVVK15i=EX kH|uRdlMx9Bf*@Fz9|ZjCKZfRNKmY&$07*qoM6N<$f{jSAO8@`> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.29.png b/test-integration/snapshots/signTransactionRecordobt/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.30.png b/test-integration/snapshots/signTransactionRecordobt/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.31.png b/test-integration/snapshots/signTransactionRecordobt/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.33.png b/test-integration/snapshots/signTransactionRecordobt/nanos.33.png new file mode 100644 index 0000000000000000000000000000000000000000..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 GIT binary patch literal 436 zcmV;l0ZaagP)lqGbR{k|ase$GZG~vHGY%=@h!hnDP2y z)E;^KQ1N3oZ^k^Y}R&y)_Fw$+TiOGF0b!Fnb!7^y#z%7P+!~CExd5pOi$<= z)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bq zyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nGq-w^>uOJS?k9vBG;Ik8^>Y$}rpvqgC zN-CvqUP+agK?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.35.png b/test-integration/snapshots/signTransactionRecordobt/nanos.35.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.38.png b/test-integration/snapshots/signTransactionRecordobt/nanos.38.png new file mode 100644 index 0000000000000000000000000000000000000000..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 GIT binary patch literal 290 zcmV+-0p0$IP)NDq-HB|xDf@=|6_ydqg^8{hHt|-oS~nZIQF!tvo#(T0N~Gg0owtf_$7FZu>b%707*qoM6N<$g7>w31poj5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.39.png b/test-integration/snapshots/signTransactionRecordobt/nanos.39.png new file mode 100644 index 0000000000000000000000000000000000000000..c0236f40e1f682660f35f989589a0948eac7ab57 GIT binary patch literal 278 zcmV+x0qOpUP)oOR+W-KoO6mpF+;1;$)BYSUuMcO) zXSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m(=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p z8jvsRZlrKU*bcTTft_udY7y_}+DeH2&kcl>=%1u3utfh<CQy**THu@~5klZLE$I~j003~ry2!c|{*1!Y`T(=@vOYi) zAsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY90wp2lelgSR7rS*jd7d-Ig-!ph3j1~ zP?7Br)W4h)lA``iR0)gvw?Yi;AqJM%yae%9a|YP#)&xMbD;qUpieV|A*6F)x3d3AW zb=DC5vw>>a0O}c_%vRc;%AP$KsBWx?%6m4;;kE9$34o-ELvBs;=Kk;$fCGvhJrJG( mP^=QozUCALDgXcgKu>H(G@Tov-7KU40000H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.44.png b/test-integration/snapshots/signTransactionRecordobt/nanos.44.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.49.png b/test-integration/snapshots/signTransactionRecordobt/nanos.49.png new file mode 100644 index 0000000000000000000000000000000000000000..c0150041dd070cf4bc71a173bba9b4fb4ff7d507 GIT binary patch literal 341 zcmV-b0jmCqP){?~POxgjjLhzWWmy+COUH1VlySBtO7p_Y8}Q_aZHVQdA+Gr|=m>G8<_MmU265?xixS n@hTC_*dWkf0RR9103PuJFcZTcOzz4R00000NkvXXu0mjf0)v#m literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.50.png b/test-integration/snapshots/signTransactionRecordobt/nanos.50.png new file mode 100644 index 0000000000000000000000000000000000000000..f78d98f74d16db9214e952e3e05d94b591ae7a90 GIT binary patch literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.51.png b/test-integration/snapshots/signTransactionRecordobt/nanos.51.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e034602c291e3ffec78d647ca8792429e4b2b GIT binary patch literal 390 zcmV;10eSw3P)c(+6KSXwkji&hwzVh-*!eG|AP9nBRW^}P&*OiRJ)K9|_Irk$ z`-Ldp;y`>*`Q2yOJxKSA_{-|5fJ@)uBesDZP{QCB6gI)VQcXck2S4Wb`PHbpwGvRE zmWg8m3$vLCj%@;K&EFfv5KBP!Zr<#VC%unttrs04mVoXEhd=!)TfASH^09V+plr}i z$7iGd41kd{YY>}I%ZInMD@f_8`!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZ zz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%;%@q$~OhJ@+ZmRB?Tn9C1{iXzlFJ0W$ zG`YTdZNe#P#eV`ak{vMQ5dU5sG$WaSA)&rk2hGf?hRQLG4w_L{L(?5WbVVK15i=EX kH|uRdlMx9Bf*@Fz9|ZjCKZfRNKmY&$07*qoM6N<$f{jSAO8@`> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.52.png b/test-integration/snapshots/signTransactionRecordobt/nanos.52.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.53.png b/test-integration/snapshots/signTransactionRecordobt/nanos.53.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.54.png b/test-integration/snapshots/signTransactionRecordobt/nanos.54.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.56.png b/test-integration/snapshots/signTransactionRecordobt/nanos.56.png new file mode 100644 index 0000000000000000000000000000000000000000..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 GIT binary patch literal 436 zcmV;l0ZaagP)lqGbR{k|ase$GZG~vHGY%=@h!hnDP2y z)E;^KQ1N3oZ^k^Y}R&y)_Fw$+TiOGF0b!Fnb!7^y#z%7P+!~CExd5pOi$<= z)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bq zyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nGq-w^>uOJS?k9vBG;Ik8^>Y$}rpvqgC zN-CvqUP+agK?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.58.png b/test-integration/snapshots/signTransactionRecordobt/nanos.58.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.61.png b/test-integration/snapshots/signTransactionRecordobt/nanos.61.png new file mode 100644 index 0000000000000000000000000000000000000000..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 GIT binary patch literal 290 zcmV+-0p0$IP)NDq-HB|xDf@=|6_ydqg^8{hHt|-oS~nZIQF!tvo#(T0N~Gg0owtf_$7FZu>b%707*qoM6N<$g7>w31poj5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.62.png b/test-integration/snapshots/signTransactionRecordobt/nanos.62.png new file mode 100644 index 0000000000000000000000000000000000000000..c0236f40e1f682660f35f989589a0948eac7ab57 GIT binary patch literal 278 zcmV+x0qOpUP)oOR+W-KoO6mpF+;1;$)BYSUuMcO) zXSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m(=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p z8jvsRZlrKU*bcTTft_udY7y_}+DeH2&kcl>=%1u3utfh<5z=Yggp%x`HjVMA$W8+fQ=mVVt$M5Y~V$ z0X={(K@!pzYQQSgBU&D<1=YWu3zAa(NtlGC`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH( zw#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt) zwSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XEfS;n&!Wmszyn#vxA%qYTi316_jcZPB Rp9KH_002ovPDHLkV1nw-h2sDK literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.64.png b/test-integration/snapshots/signTransactionRecordobt/nanos.64.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad GIT binary patch literal 323 zcmV-J0lfZ+P)B%HYfQOkO2h%0002E5kD-i Vp(~2sPMH7z002ovPDHLkV1lBWk&6HT literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.68.png b/test-integration/snapshots/signTransactionRecordobt/nanos.68.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.69.png b/test-integration/snapshots/signTransactionRecordobt/nanos.69.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI{?~POxgjjLhzWWmy+COUH1VlySBtO7p_Y8}Q_aZHVQdA+Gr|=m>G8<_MmU265?xixS n@hTC_*dWkf0RR9103PuJFcZTcOzz4R00000NkvXXu0mjf0)v#m literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.74.png b/test-integration/snapshots/signTransactionRecordobt/nanos.74.png new file mode 100644 index 0000000000000000000000000000000000000000..f78d98f74d16db9214e952e3e05d94b591ae7a90 GIT binary patch literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.75.png b/test-integration/snapshots/signTransactionRecordobt/nanos.75.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e034602c291e3ffec78d647ca8792429e4b2b GIT binary patch literal 390 zcmV;10eSw3P)c(+6KSXwkji&hwzVh-*!eG|AP9nBRW^}P&*OiRJ)K9|_Irk$ z`-Ldp;y`>*`Q2yOJxKSA_{-|5fJ@)uBesDZP{QCB6gI)VQcXck2S4Wb`PHbpwGvRE zmWg8m3$vLCj%@;K&EFfv5KBP!Zr<#VC%unttrs04mVoXEhd=!)TfASH^09V+plr}i z$7iGd41kd{YY>}I%ZInMD@f_8`!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZ zz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%;%@q$~OhJ@+ZmRB?Tn9C1{iXzlFJ0W$ zG`YTdZNe#P#eV`ak{vMQ5dU5sG$WaSA)&rk2hGf?hRQLG4w_L{L(?5WbVVK15i=EX kH|uRdlMx9Bf*@Fz9|ZjCKZfRNKmY&$07*qoM6N<$f{jSAO8@`> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.76.png b/test-integration/snapshots/signTransactionRecordobt/nanos.76.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fbe22ce3eb57a0a62a8e33766658e822f72279 GIT binary patch literal 463 zcmV;=0WkiFP)Xy_0>o|shg#&J%wK%tAqvf0P$Y=RO8e?U_CRDp@-PFre2IKB~xY7SN zeg(+cI`YM`-|atG0qXaKMmAimZUPk`Ge79cLbut;)v8Sv;sR>Q)#9EfkN|Z^R+Zxq zE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{d-aODvm?)YtYaDy1zw< zGwd4&vD2usC&507q7P!$kn*yjN=ZR6wQFDP$y$I?Xx4;gilcf-?o0Z2m&H`aRIm{$ zg;HV#EC3W!Q%~|ZDU>h?XlhBk(BNWfJQJBxDCMf5aVd18nCb(PLTTp`)ZIK)#>G^r zn4U%o1!BG4_vAKV*s?ndbnC6((w9FN&fl44y2=R(tH_%dG$a002ovPDHLk FV1m11-SGeb literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.77.png b/test-integration/snapshots/signTransactionRecordobt/nanos.77.png new file mode 100644 index 0000000000000000000000000000000000000000..8524d356e7311bd4f4a905c37048883fe3cae241 GIT binary patch literal 468 zcmV;_0W1EAP)LjvVWlq5-#{3@53M$bpp!5w9aHOev2 z^YIx@*0wqssxqGcL)0(N91%1MD>15MVar0J$%))xJ+ZW4p;T_mV=|V{3B69gGpmMf z!?80!#_7<-P|wE0q-B75JyFPpbL7oz1{i_d+0ZCat44#X zSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM81Mry_S5?{UEWBSg_3iyo}7b~fOi79 z%5SvppRdFiMX$=iY|B|*g0ucN3>s(t!TVIcv{v_|!o%-6GP zonordp|cPtg;G=oOaK>CLywanDU<*cP;?T1mIaBa{+S4qLMc!U^-H14#Z()F6iUmM zAa&z{i>XpE-9rjR;a{D1IaN4_{6i+`AnY7KzLZ35>`9U&Nt+jP;$nL}64Jc@0000< KMNUMnLSTY@q0qSi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.78.png b/test-integration/snapshots/signTransactionRecordobt/nanos.78.png new file mode 100644 index 0000000000000000000000000000000000000000..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a GIT binary patch literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!Cb4OCf|1LQe7j`g&R+*cMcF=-|eD zRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>DUiwiPDB#tOXV=<{85YUFKGWU37hD7{ zoKA2vBo3WL9w91gteW2Hi@6!j@w8V!COZPK>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e z0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z^+y4(DZRF2GmOE07=xWy-anR`iK~kK zs>?;8zG^Q0;b{?5RyUa%BTCFxh%}hi3 zXu+7OO=G5qfQ!Rp!2%HFn#$@v+fxI5fg7`f-Df~ecm?LUbP}z^c{xG++!>%ZUvt@- xB|7b%lz?mrWYPPy3p}?v9V{V)5JCv~<_#LwY6JZ!hNb`j002ovPDHLkV1gup(G36q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.80.png b/test-integration/snapshots/signTransactionRecordobt/nanos.80.png new file mode 100644 index 0000000000000000000000000000000000000000..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 GIT binary patch literal 436 zcmV;l0ZaagP)lqGbR{k|ase$GZG~vHGY%=@h!hnDP2y z)E;^KQ1N3oZ^k^Y}R&y)_Fw$+TiOGF0b!Fnb!7^y#z%7P+!~CExd5pOi$<= z)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bq zyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nGq-w^>uOJS?k9vBG;Ik8^>Y$}rpvqgC zN-CvqUP+agK?^z|4GN89rt$I} z$aUM9MlBolK zHp|$r`on8!7?k9qG6LGP*V7sS%t00|WJVY*7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$ z_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}4@F%Cw$;f_`nm*-7i!8q)A_;liI8(zJe~$`lzSt1A|JK>Vu}s1X_Qp zbW$lT>YY?nQHg$ac4{A@mw?6H|8-J@69_DOL2@iQsblCipw9t{?KbsJ>M$gh)7V5n zzhfrqr1s&Ff-c`?D7Bqbxt8WmDkIY$$}G9LJr8!%O+kn{z!{r50Qz$GGqQgW1c5tW Xh`>lJRA!oJ00000NkvXXu0mjfTqMEW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.82.png b/test-integration/snapshots/signTransactionRecordobt/nanos.82.png new file mode 100644 index 0000000000000000000000000000000000000000..119eb22fc2111523375a127e32bc66252e40bfbb GIT binary patch literal 382 zcmV-^0fGLBP)~5_mR}4sknMts1y7IM4$OXd1E_8NiIW3 zP1Xr;v2z88AC&_s2}3?Mv97A|o|}Ruyn##NAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4P zlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cCri33`&X1X^VEBp*1`M~g1v4y4Wy1`H zE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O8LEn5L{zgHdMg|)c6KP5&hWV|+tAnn ziOMj=c2g=B-%jqnQD@k03ms1Yh>=^2)3bcdu8j5$07)9BATnm5)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.85.png b/test-integration/snapshots/signTransactionRecordobt/nanos.85.png new file mode 100644 index 0000000000000000000000000000000000000000..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 GIT binary patch literal 290 zcmV+-0p0$IP)NDq-HB|xDf@=|6_ydqg^8{hHt|-oS~nZIQF!tvo#(T0N~Gg0owtf_$7FZu>b%707*qoM6N<$g7>w31poj5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.86.png b/test-integration/snapshots/signTransactionRecordobt/nanos.86.png new file mode 100644 index 0000000000000000000000000000000000000000..c0236f40e1f682660f35f989589a0948eac7ab57 GIT binary patch literal 278 zcmV+x0qOpUP)oOR+W-KoO6mpF+;1;$)BYSUuMcO) zXSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m(=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p z8jvsRZlrKU*bcTTft_udY7y_}+DeH2&kcl>=%1u3utfh<5z=Yggp%x`HjVMA$W8+fQ=mVVt$M5Y~V$ z0X={(K@!pzYQQSgBU&D<1=YWu3zAa(NtlGC`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH( zw#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt) zwSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XEfS;n&!Wmszyn#vxA%qYTi316_jcZPB Rp9KH_002ovPDHLkV1nw-h2sDK literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.88.png b/test-integration/snapshots/signTransactionRecordobt/nanos.88.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad GIT binary patch literal 323 zcmV-J0lfZ+P)B%HYfQOkO2h%0002E5kD-i Vp(~2sPMH7z002ovPDHLkV1lBWk&6HT literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.89.png b/test-integration/snapshots/signTransactionRecordobt/nanos.89.png new file mode 100644 index 0000000000000000000000000000000000000000..8b56d1dac90a9e754792a30512db3633f78fdf45 GIT binary patch literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.92.png b/test-integration/snapshots/signTransactionRecordobt/nanos.92.png new file mode 100644 index 0000000000000000000000000000000000000000..896a9b113f41ca9752321ca6753a2d263497d6af GIT binary patch literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.93.png b/test-integration/snapshots/signTransactionRecordobt/nanos.93.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Thu, 30 Jun 2022 12:13:27 +0200 Subject: [PATCH 28/83] New storage compare mode --- .../transactionTemplates/commands.ts | 12 +++++++ .../template_newfundsreq.ts | 11 +++--- .../template_recordobt.ts | 13 ++++--- .../template_trnsfiopubky.ts | 34 ++++-------------- ledgerjs-fio/src/utils/parseTxActions.ts | 2 +- src/signTransaction.c | 17 ++++++++- .../signTransactionCommandsStorage.js | 24 +++++++++++++ .../signTransactionNewfundsreq.js | 14 ++++---- test-integration/signTransactionRecordobt.js | 13 +++---- .../nanos.04.png | Bin 433 -> 0 bytes .../nanos.17.png | Bin 361 -> 0 bytes .../nanos.23.png | Bin 433 -> 0 bytes .../nanos.36.png | Bin 361 -> 0 bytes .../nanos.42.png | Bin 433 -> 0 bytes .../nanos.56.png | Bin 361 -> 0 bytes .../nanos.62.png | Bin 433 -> 0 bytes .../nanos.76.png | Bin 361 -> 0 bytes .../nanos.12.png} | Bin .../nanos.13.png} | Bin .../nanos.01.png} | Bin .../nanos.02.png} | Bin .../nanos.03.png | Bin .../nanos.04.png} | Bin .../nanos.05.png} | Bin .../nanos.06.png} | Bin .../nanos.07.png} | Bin .../nanos.08.png} | Bin .../nanos.09.png} | Bin .../nanos.10.png} | Bin .../nanos.11.png} | Bin .../nanos.12.png} | Bin .../nanos.13.png} | Bin .../nanos.14.png} | Bin .../nanos.15.png} | Bin .../nanos.16.png} | Bin .../nanos.17.png} | Bin .../nanos.18.png} | Bin .../nanos.19.png} | Bin .../nanos.20.png} | Bin .../nanos.21.png} | Bin .../nanos.22.png} | Bin .../nanos.23.png} | Bin .../nanos.24.png} | Bin .../nanos.25.png} | Bin .../nanos.26.png} | Bin .../nanos.27.png} | Bin .../nanos.28.png} | Bin .../nanos.29.png} | Bin .../nanos.30.png} | Bin .../nanos.31.png} | Bin .../nanos.32.png} | Bin .../nanos.33.png} | Bin .../nanos.34.png} | Bin .../nanos.35.png} | Bin .../signTransactionNewfundsreq/nanos.36.png | Bin 0 -> 322 bytes .../nanos.37.png} | Bin .../nanos.38.png} | Bin .../nanos.39.png} | Bin .../nanos.40.png} | Bin .../nanos.41.png} | Bin .../nanos.42.png} | Bin .../nanos.43.png} | Bin .../nanos.44.png} | Bin .../nanos.45.png} | Bin .../nanos.46.png} | Bin .../nanos.47.png} | Bin .../nanos.48.png} | Bin .../nanos.49.png} | Bin .../nanos.50.png} | Bin .../nanos.51.png} | Bin .../nanos.52.png} | Bin .../nanos.53.png} | Bin .../nanos.54.png} | Bin .../nanos.55.png} | Bin .../nanos.56.png} | Bin .../nanos.57.png} | Bin .../nanos.58.png} | Bin .../nanos.59.png} | Bin .../nanos.60.png} | Bin .../nanos.61.png} | Bin .../nanos.62.png} | Bin .../nanos.63.png} | Bin .../nanos.64.png} | Bin .../nanos.65.png} | Bin .../nanos.66.png} | Bin .../nanos.67.png} | Bin .../nanos.68.png} | Bin .../nanos.69.png} | Bin .../nanos.70.png} | Bin .../nanos.71.png} | Bin .../signTransactionRecordobt/nanos.04.png | Bin 433 -> 390 bytes .../signTransactionRecordobt/nanos.05.png | Bin 390 -> 463 bytes .../signTransactionRecordobt/nanos.06.png | Bin 463 -> 468 bytes .../signTransactionRecordobt/nanos.07.png | Bin 468 -> 414 bytes .../signTransactionRecordobt/nanos.08.png | Bin 414 -> 455 bytes .../signTransactionRecordobt/nanos.09.png | Bin 455 -> 436 bytes .../signTransactionRecordobt/nanos.10.png | Bin 436 -> 429 bytes .../signTransactionRecordobt/nanos.11.png | Bin 429 -> 382 bytes .../signTransactionRecordobt/nanos.12.png | Bin 382 -> 317 bytes .../signTransactionRecordobt/nanos.13.png | Bin 317 -> 325 bytes .../signTransactionRecordobt/nanos.14.png | Bin 325 -> 290 bytes .../signTransactionRecordobt/nanos.15.png | Bin 290 -> 278 bytes .../signTransactionRecordobt/nanos.16.png | Bin 278 -> 288 bytes .../signTransactionRecordobt/nanos.17.png | Bin 288 -> 447 bytes .../signTransactionRecordobt/nanos.18.png | Bin 447 -> 377 bytes .../signTransactionRecordobt/nanos.19.png | Bin 377 -> 393 bytes .../signTransactionRecordobt/nanos.20.png | Bin 393 -> 424 bytes .../signTransactionRecordobt/nanos.21.png | Bin 361 -> 356 bytes .../signTransactionRecordobt/nanos.22.png | Bin 424 -> 426 bytes .../signTransactionRecordobt/nanos.23.png | Bin 356 -> 314 bytes .../signTransactionRecordobt/nanos.24.png | Bin 426 -> 341 bytes .../signTransactionRecordobt/nanos.25.png | Bin 314 -> 390 bytes .../signTransactionRecordobt/nanos.26.png | Bin 341 -> 463 bytes .../signTransactionRecordobt/nanos.27.png | Bin 433 -> 468 bytes .../signTransactionRecordobt/nanos.28.png | Bin 390 -> 414 bytes .../signTransactionRecordobt/nanos.29.png | Bin 463 -> 455 bytes .../signTransactionRecordobt/nanos.30.png | Bin 468 -> 436 bytes .../signTransactionRecordobt/nanos.31.png | Bin 414 -> 429 bytes .../signTransactionRecordobt/nanos.32.png | Bin 455 -> 382 bytes .../signTransactionRecordobt/nanos.33.png | Bin 436 -> 317 bytes .../signTransactionRecordobt/nanos.34.png | Bin 429 -> 325 bytes .../signTransactionRecordobt/nanos.35.png | Bin 382 -> 290 bytes .../signTransactionRecordobt/nanos.36.png | Bin 317 -> 278 bytes .../signTransactionRecordobt/nanos.37.png | Bin 325 -> 288 bytes .../signTransactionRecordobt/nanos.38.png | Bin 290 -> 447 bytes .../signTransactionRecordobt/nanos.39.png | Bin 278 -> 377 bytes .../signTransactionRecordobt/nanos.40.png | Bin 288 -> 393 bytes .../signTransactionRecordobt/nanos.41.png | Bin 447 -> 424 bytes .../signTransactionRecordobt/nanos.42.png | Bin 377 -> 356 bytes .../signTransactionRecordobt/nanos.43.png | Bin 393 -> 426 bytes .../signTransactionRecordobt/nanos.44.png | Bin 361 -> 322 bytes .../signTransactionRecordobt/nanos.45.png | Bin 424 -> 341 bytes .../signTransactionRecordobt/nanos.46.png | Bin 356 -> 390 bytes .../signTransactionRecordobt/nanos.47.png | Bin 426 -> 463 bytes .../signTransactionRecordobt/nanos.48.png | Bin 322 -> 468 bytes .../signTransactionRecordobt/nanos.49.png | Bin 341 -> 414 bytes .../signTransactionRecordobt/nanos.50.png | Bin 433 -> 455 bytes .../signTransactionRecordobt/nanos.51.png | Bin 390 -> 436 bytes .../signTransactionRecordobt/nanos.52.png | Bin 463 -> 429 bytes .../signTransactionRecordobt/nanos.53.png | Bin 468 -> 382 bytes .../signTransactionRecordobt/nanos.54.png | Bin 414 -> 317 bytes .../signTransactionRecordobt/nanos.55.png | Bin 455 -> 325 bytes .../signTransactionRecordobt/nanos.56.png | Bin 436 -> 290 bytes .../signTransactionRecordobt/nanos.57.png | Bin 429 -> 278 bytes .../signTransactionRecordobt/nanos.58.png | Bin 382 -> 319 bytes .../signTransactionRecordobt/nanos.59.png | Bin 317 -> 323 bytes .../signTransactionRecordobt/nanos.60.png | Bin 325 -> 447 bytes .../signTransactionRecordobt/nanos.61.png | Bin 290 -> 377 bytes .../signTransactionRecordobt/nanos.62.png | Bin 278 -> 393 bytes .../signTransactionRecordobt/nanos.63.png | Bin 319 -> 424 bytes .../signTransactionRecordobt/nanos.64.png | Bin 323 -> 356 bytes .../signTransactionRecordobt/nanos.65.png | Bin 447 -> 426 bytes .../signTransactionRecordobt/nanos.66.png | Bin 377 -> 314 bytes .../signTransactionRecordobt/nanos.67.png | Bin 393 -> 341 bytes .../signTransactionRecordobt/nanos.68.png | Bin 361 -> 390 bytes .../signTransactionRecordobt/nanos.69.png | Bin 424 -> 463 bytes .../signTransactionRecordobt/nanos.70.png | Bin 356 -> 468 bytes .../signTransactionRecordobt/nanos.71.png | Bin 426 -> 414 bytes .../signTransactionRecordobt/nanos.72.png | Bin 314 -> 455 bytes .../signTransactionRecordobt/nanos.73.png | Bin 341 -> 436 bytes .../signTransactionRecordobt/nanos.74.png | Bin 433 -> 429 bytes .../signTransactionRecordobt/nanos.75.png | Bin 390 -> 382 bytes .../signTransactionRecordobt/nanos.76.png | Bin 463 -> 317 bytes .../signTransactionRecordobt/nanos.77.png | Bin 468 -> 325 bytes .../signTransactionRecordobt/nanos.78.png | Bin 414 -> 290 bytes .../signTransactionRecordobt/nanos.79.png | Bin 455 -> 278 bytes .../signTransactionRecordobt/nanos.80.png | Bin 436 -> 319 bytes .../signTransactionRecordobt/nanos.81.png | Bin 429 -> 323 bytes .../signTransactionRecordobt/nanos.82.png | Bin 382 -> 447 bytes .../signTransactionRecordobt/nanos.83.png | Bin 317 -> 377 bytes .../signTransactionRecordobt/nanos.84.png | Bin 325 -> 393 bytes .../signTransactionRecordobt/nanos.85.png | Bin 290 -> 424 bytes .../signTransactionRecordobt/nanos.86.png | Bin 278 -> 356 bytes .../signTransactionRecordobt/nanos.87.png | Bin 319 -> 426 bytes .../signTransactionRecordobt/nanos.88.png | Bin 323 -> 0 bytes .../signTransactionRecordobt/nanos.89.png | Bin 447 -> 0 bytes .../signTransactionRecordobt/nanos.90.png | Bin 377 -> 0 bytes .../signTransactionRecordobt/nanos.91.png | Bin 393 -> 0 bytes .../signTransactionRecordobt/nanos.92.png | Bin 361 -> 0 bytes .../signTransactionRecordobt/nanos.93.png | Bin 424 -> 0 bytes .../signTransactionRecordobt/nanos.94.png | Bin 356 -> 0 bytes 181 files changed, 89 insertions(+), 51 deletions(-) delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.04.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.17.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.23.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.36.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.42.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.56.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.62.png delete mode 100644 test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.76.png rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.02.png => signTransactionCommandsStorage/nanos.12.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.01.png => signTransactionCommandsStorage/nanos.13.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.20.png => signTransactionNewfundsreq/nanos.01.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.40.png => signTransactionNewfundsreq/nanos.02.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq => signTransactionNewfundsreq}/nanos.03.png (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.05.png => signTransactionNewfundsreq/nanos.04.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.06.png => signTransactionNewfundsreq/nanos.05.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.07.png => signTransactionNewfundsreq/nanos.06.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.08.png => signTransactionNewfundsreq/nanos.07.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.09.png => signTransactionNewfundsreq/nanos.08.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.10.png => signTransactionNewfundsreq/nanos.09.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.11.png => signTransactionNewfundsreq/nanos.10.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.12.png => signTransactionNewfundsreq/nanos.11.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.13.png => signTransactionNewfundsreq/nanos.12.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.14.png => signTransactionNewfundsreq/nanos.13.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.15.png => signTransactionNewfundsreq/nanos.14.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.16.png => signTransactionNewfundsreq/nanos.15.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.18.png => signTransactionNewfundsreq/nanos.16.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.19.png => signTransactionNewfundsreq/nanos.17.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.39.png => signTransactionNewfundsreq/nanos.18.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.21.png => signTransactionNewfundsreq/nanos.19.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.22.png => signTransactionNewfundsreq/nanos.20.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.24.png => signTransactionNewfundsreq/nanos.21.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.25.png => signTransactionNewfundsreq/nanos.22.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.26.png => signTransactionNewfundsreq/nanos.23.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.27.png => signTransactionNewfundsreq/nanos.24.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.28.png => signTransactionNewfundsreq/nanos.25.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.29.png => signTransactionNewfundsreq/nanos.26.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.30.png => signTransactionNewfundsreq/nanos.27.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.31.png => signTransactionNewfundsreq/nanos.28.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.32.png => signTransactionNewfundsreq/nanos.29.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.33.png => signTransactionNewfundsreq/nanos.30.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.34.png => signTransactionNewfundsreq/nanos.31.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.35.png => signTransactionNewfundsreq/nanos.32.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.37.png => signTransactionNewfundsreq/nanos.33.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.38.png => signTransactionNewfundsreq/nanos.34.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.59.png => signTransactionNewfundsreq/nanos.35.png} (100%) create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.41.png => signTransactionNewfundsreq/nanos.37.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.43.png => signTransactionNewfundsreq/nanos.38.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.44.png => signTransactionNewfundsreq/nanos.39.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.45.png => signTransactionNewfundsreq/nanos.40.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.46.png => signTransactionNewfundsreq/nanos.41.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.47.png => signTransactionNewfundsreq/nanos.42.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.48.png => signTransactionNewfundsreq/nanos.43.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.49.png => signTransactionNewfundsreq/nanos.44.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.50.png => signTransactionNewfundsreq/nanos.45.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.51.png => signTransactionNewfundsreq/nanos.46.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.52.png => signTransactionNewfundsreq/nanos.47.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.53.png => signTransactionNewfundsreq/nanos.48.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.54.png => signTransactionNewfundsreq/nanos.49.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.55.png => signTransactionNewfundsreq/nanos.50.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.57.png => signTransactionNewfundsreq/nanos.51.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.58.png => signTransactionNewfundsreq/nanos.52.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.79.png => signTransactionNewfundsreq/nanos.53.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.60.png => signTransactionNewfundsreq/nanos.54.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.61.png => signTransactionNewfundsreq/nanos.55.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.63.png => signTransactionNewfundsreq/nanos.56.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.64.png => signTransactionNewfundsreq/nanos.57.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.65.png => signTransactionNewfundsreq/nanos.58.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.66.png => signTransactionNewfundsreq/nanos.59.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.67.png => signTransactionNewfundsreq/nanos.60.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.68.png => signTransactionNewfundsreq/nanos.61.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.69.png => signTransactionNewfundsreq/nanos.62.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.70.png => signTransactionNewfundsreq/nanos.63.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.71.png => signTransactionNewfundsreq/nanos.64.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.72.png => signTransactionNewfundsreq/nanos.65.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.73.png => signTransactionNewfundsreq/nanos.66.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.74.png => signTransactionNewfundsreq/nanos.67.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.75.png => signTransactionNewfundsreq/nanos.68.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.77.png => signTransactionNewfundsreq/nanos.69.png} (100%) rename test-integration/snapshots/{signTransactionBasicNewfundsreq/nanos.78.png => signTransactionNewfundsreq/nanos.70.png} (100%) rename test-integration/snapshots/{signTransactionRecordobt/nanos.95.png => signTransactionNewfundsreq/nanos.71.png} (100%) delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.88.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.89.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.90.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.91.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.92.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.93.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.94.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index aabe98de..0e735c5d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -45,6 +45,7 @@ export const enum VALUE_STORAGE_COMPARE { COMPARE_REGISTER1 = 0x10, COMPARE_REGISTER2 = 0x20, COMPARE_REGISTER3 = 0x30, + COMPARE_REGISTER1_DECODE_NAME = 0x40, } export type DataAction = (b: Buffer, s: SignedTransactionData) => SignedTransactionData @@ -324,3 +325,14 @@ export function COMMAND_FINISH(parsedPath: ValidBIP32Path): Command { } } +export function ADD_STORAGE_CHECK(check: VALUE_STORAGE_COMPARE, c: Command): Command { + const constData: Buffer = Buffer.from(c.constData, "hex") + const policyAndStorage: Uint8_t = constData[18] as Uint8_t + const newValue: Uint8_t = ((policyAndStorage & 0x0F) | check) as Uint8_t + constData.writeUInt8(newValue,18) + return { + ...c, + constData: constData.toString("hex") as HexString, + } +} + diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index af7a4345..cbbe83ef 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -1,7 +1,7 @@ -import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation} from "../../types/internal" +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -73,7 +73,9 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, return [ COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Request Funds"), - COMMAND_APPEND_DATA_NAME_SHOW("Authorization actor", authorization.actor), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ @@ -101,7 +103,8 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, ], 64, 296), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Actor", Buffer.from(actionData.actor)) + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 178613fe..28f1dd06 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -1,7 +1,7 @@ -import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata} from "../../types/internal" +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -73,7 +73,9 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa return [ COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_RECORDOBT+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Record other blockchain transaction metadata"), - COMMAND_APPEND_DATA_NAME_SHOW("Authorization actor", authorization.actor), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ @@ -113,8 +115,9 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa ], 64, 432), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Actor", Buffer.from(actionData.actor)) - ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), + ]), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index 69bbc8e2..c7b98867 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -2,7 +2,8 @@ import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTran import { COMMAND, Command, constDataAppendData, VALUE_FORMAT, VALUE_VALIDATION, VALUE_POLICY, VALUE_STORAGE_COMPARE, defaultCommand, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW} from "./commands" + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -25,20 +26,8 @@ export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Transfer FIO tokens"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), - { - // Authorisation actor, validate that it is stored - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_NAME, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, - "" - ), - varData: Buffer.from(authorization.actor, "hex"), - txLen: 8, - }, + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ @@ -46,19 +35,8 @@ export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, ]), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), - { - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_NAME, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, - "" - ), - varData: Buffer.from(actionData.actor, "hex"), - txLen: 8, - }, + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), ]), diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index df7cdaa9..814e7dfb 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -60,7 +60,7 @@ export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: Re validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) } validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) - + return { fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), diff --git a/src/signTransaction.c b/src/signTransaction.c index 9e8828c2..41d8a7eb 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -3,6 +3,7 @@ #include "eos_utils.h" #include "getSerial.h" #include "state.h" +#include "fio.h" #include "hash.h" #include "lcx_rng.h" #include "securityPolicy.h" @@ -20,6 +21,7 @@ typedef enum { VALUE_STORAGE_CHECK_R1 = 0x10, VALUE_STORAGE_CHECK_R2 = 0x20, VALUE_STORAGE_CHECK_R3 = 0x30, + VALUE_STORAGE_CHECK_R1_DECODE_NAME = 0x40, } tx_storage_check_t; enum { @@ -356,7 +358,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, { tx_storage_check_t storage = constData->valuePolicyAndStorage & 0xF0; TRACE("Storage request :%d, Stored length %d,%d,%d", - (int) storage, + (int) storage/0x10, (int) ctx->storage.storedValueLen1, (int) ctx->storage.storedValueLen2, (int) ctx->storage.storedValueLen3); @@ -373,6 +375,19 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, CASE_STORAGE_EQUALS(1); CASE_STORAGE_EQUALS(2); CASE_STORAGE_EQUALS(3); + case VALUE_STORAGE_CHECK_R1_DECODE_NAME: { + ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); + ASSERT(ctx->storage.storedValueLen1 <= SIZEOF(ctx->storage.storedValue1)); + char buffer[14]; + uint8array_name_to_string(ctx->storage.storedValue1, ctx->storage.storedValueLen1, buffer, SIZEOF(buffer)); + VALIDATE(varSize < SIZEOF(buffer), ERR_INVALID_DATA); + TRACE("%s", buffer); + TRACE("%s", varData->value); + TRACE("%d", varSize); + VALIDATE(buffer[varSize] == 0, ERR_INVALID_DATA); + VALIDATE(!memcmp(buffer, varData->value, varSize), ERR_INVALID_DATA); + break; + } case VALUE_STORAGE_CHECK_NO: break; default: diff --git a/test-integration/signTransactionCommandsStorage.js b/test-integration/signTransactionCommandsStorage.js index fd8d0037..57318324 100644 --- a/test-integration/signTransactionCommandsStorage.js +++ b/test-integration/signTransactionCommandsStorage.js @@ -137,6 +137,30 @@ testStep(" - - -", "Data do not match"); await device.makeStartingScreenshot(); } //------------------------------------------------------------------------------------- +testStep(" - - -", "Data do not match using name conversion"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e path=44'/235'/0'/0/0 + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); + console.log(buffer11.toString("hex")) + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //Store data to register1 + const buffer12 = getAPDUDataBuffer("", "0011223344556677"); + const promise12 = transport.send(215, 0x20, 0x07, 0x01, buffer12); + const response12 = await promise12; + assert.equal(response12.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 45-policy, Key = "HexString" (09486578537472696e67) + const buffer14 = getAPDUDataBuffer("0201000000000000000000000000000000004509486578537472696e67", "0011223344556677"); + const promise14 = transport.send(215, 0x20, 0x04, 0, buffer14); + await assert.rejects(promise14, err(0x6e07)); + + await device.makeStartingScreenshot(); +} await transport.close(); diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index f09f4ff1..69440254 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -133,8 +133,6 @@ const txMemo = { chain_code: "BTC", token_code: "BTC", memo: "I have memo", -// hash: "", -// offline_url: "", }, }], } @@ -272,24 +270,28 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } +const longSequence1 = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 3]; +const longSequence2 = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3]; +const secondSequence = [1, 3] + testStep(" - - -", "Sign testnet transaction - memo"); { - await runTxTest("TESTNET", txMemo, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3], [1, 1, 3]) + await runTxTest("TESTNET", txMemo, longSequence1, secondSequence) } testStep(" - - -", "Sign testnet mainnet - memo"); { - await runTxTest("MAINNET", txMemo, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3], [1, 1, 3]) + await runTxTest("MAINNET", txMemo, longSequence1, secondSequence) } testStep(" - - -", "Sign testnet transaction - hash"); { - await runTxTest("TESTNET", txHash, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 3], [1, 1, 3]) + await runTxTest("TESTNET", txHash, longSequence2, secondSequence) } testStep(" - - -", "Sign testnet mainnet - hash"); { - await runTxTest("MAINNET", txHash, [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 3], [1, 1, 3]) + await runTxTest("MAINNET", txHash, longSequence2, secondSequence) } await transport.close() diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 1e94a4ba..2997fda4 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -276,27 +276,28 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence1 = [1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3]; -const longSequence2 = [1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3]; +const longSequence1 = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3]; +const longSequence2 = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3]; +const secondSequence = [1, 3] testStep(" - - -", "Sign testnet transaction - memo"); { - await runTxTest("TESTNET", txMemo, longSequence1, [1, 1, 3]) + await runTxTest("TESTNET", txMemo, longSequence1, secondSequence) } testStep(" - - -", "Sign testnet mainnet - memo"); { - await runTxTest("MAINNET", txMemo, longSequence1, [1, 1, 3]) + await runTxTest("MAINNET", txMemo, longSequence1, secondSequence) } testStep(" - - -", "Sign testnet transaction - hash"); { - await runTxTest("TESTNET", txHash, longSequence2, [1, 1, 3]) + await runTxTest("TESTNET", txHash, longSequence2, secondSequence) } testStep(" - - -", "Sign testnet mainnet - hash"); { - await runTxTest("MAINNET", txHash, longSequence2, [1, 1, 3]) + await runTxTest("MAINNET", txHash, longSequence2, secondSequence) } await transport.close() diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.04.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.04.png deleted file mode 100644 index f78d98f74d16db9214e952e3e05d94b591ae7a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.17.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.17.png deleted file mode 100644 index 896a9b113f41ca9752321ca6753a2d263497d6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.23.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.23.png deleted file mode 100644 index f78d98f74d16db9214e952e3e05d94b591ae7a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.36.png deleted file mode 100644 index 896a9b113f41ca9752321ca6753a2d263497d6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.42.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.42.png deleted file mode 100644 index f78d98f74d16db9214e952e3e05d94b591ae7a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.56.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.56.png deleted file mode 100644 index 896a9b113f41ca9752321ca6753a2d263497d6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.62.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.62.png deleted file mode 100644 index f78d98f74d16db9214e952e3e05d94b591ae7a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)C*2t}FA&i{XKAG!}sj0=k506NJ%PmR?JqUe+%0ssI24BS_2|NK$k#52R;JnIh8 zK}idGfT3Rpjr*e4``>fDNYAU{dgR7vXVe9eyv`G00000NkvXXu0mjfJiy0p diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.76.png b/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.76.png deleted file mode 100644 index 896a9b113f41ca9752321ca6753a2d263497d6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.02.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.12.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.02.png rename to test-integration/snapshots/signTransactionCommandsStorage/nanos.12.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.01.png b/test-integration/snapshots/signTransactionCommandsStorage/nanos.13.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.01.png rename to test-integration/snapshots/signTransactionCommandsStorage/nanos.13.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.20.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.01.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.20.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.01.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.40.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.02.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.40.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.02.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.03.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.03.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.03.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.03.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.05.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.04.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.05.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.04.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.06.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.06.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.07.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.06.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.07.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.06.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.08.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.07.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.08.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.07.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.09.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.08.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.09.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.08.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.10.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.09.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.10.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.09.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.11.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.10.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.11.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.10.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.12.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.11.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.12.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.11.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.13.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.13.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.14.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.14.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.15.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.14.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.15.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.14.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.16.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.15.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.16.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.15.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.18.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.16.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.18.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.16.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.19.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.17.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.19.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.17.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.39.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.18.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.39.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.18.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.21.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.21.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.22.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.22.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.24.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.24.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.25.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.25.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.26.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.23.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.26.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.23.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.27.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.27.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.28.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.28.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.26.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.29.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.26.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.30.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.30.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.31.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.28.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.31.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.28.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.32.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.32.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.33.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.30.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.33.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.30.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.34.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.31.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.34.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.31.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.35.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.32.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.35.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.32.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.33.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.37.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.33.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.38.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.34.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.38.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.34.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.59.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.59.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.41.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.41.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.43.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.38.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.43.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.38.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.44.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.45.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.45.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.46.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.46.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.47.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.47.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.48.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.43.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.48.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.43.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.49.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.49.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.50.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.45.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.50.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.45.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.51.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.51.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.52.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.47.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.52.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.47.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.48.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.53.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.48.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.54.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.49.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.54.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.49.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.55.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.50.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.55.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.50.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.57.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.51.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.57.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.51.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.58.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.58.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.79.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.79.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.54.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.60.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.54.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.61.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.61.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.63.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.63.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.64.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.64.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.65.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.65.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.66.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.59.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.66.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.59.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.67.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.67.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.68.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.61.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.68.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.61.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.69.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.62.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.69.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.62.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.70.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.70.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.71.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.64.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.71.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.64.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.72.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.65.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.72.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.65.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.73.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.66.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.73.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.66.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.74.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.67.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.74.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.67.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.75.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.68.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.75.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.68.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.77.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.69.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.77.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.69.png diff --git a/test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.78.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.70.png similarity index 100% rename from test-integration/snapshots/signTransactionBasicNewfundsreq/nanos.78.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.70.png diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.95.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.71.png similarity index 100% rename from test-integration/snapshots/signTransactionRecordobt/nanos.95.png rename to test-integration/snapshots/signTransactionNewfundsreq/nanos.71.png diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.04.png b/test-integration/snapshots/signTransactionRecordobt/nanos.04.png index f78d98f74d16db9214e952e3e05d94b591ae7a90..f23e034602c291e3ffec78d647ca8792429e4b2b 100644 GIT binary patch delta 363 zcmV-x0hIo+1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1i+ruP6Wj delta 407 zcmV;I0cie)1F-{;B!75GL_t(|ob8#>j>I4cMVZac|9@~Fx(`i^3yR_ZI>|jxjnxaH z=#(J>0000C+*fS>{88V;GsEFL>kiRDNeg;_pDg?oTWYBS zYmv5?Gd+FgiSm{?piinfO=n~VG@sWxD0w4y--6U+UN-wH!+(4ICopC}*0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjf5`)|| delta 363 zcmV-x0hIpF1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1kS#uSNg> diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.06.png b/test-integration/snapshots/signTransactionRecordobt/nanos.06.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(1L1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f-x=6Pyhe` delta 437 zcmV;m0ZRVV1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfm#N%? diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.07.png b/test-integration/snapshots/signTransactionRecordobt/nanos.07.png index 8524d356e7311bd4f4a905c37048883fe3cae241..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?{1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nVvvE={& delta 442 zcmV;r0Y(0v1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g4~499{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.08.png b/test-integration/snapshots/signTransactionRecordobt/nanos.08.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE^+1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfiT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mvfvDg3r diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.09.png b/test-integration/snapshots/signTransactionRecordobt/nanos.09.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 100644 GIT binary patch delta 410 zcmV;L0cHNj1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ EfO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfuyfCE diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.10.png b/test-integration/snapshots/signTransactionRecordobt/nanos.10.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%X1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1nOXzzYBX delta 410 zcmV;L0cHNJ1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*MiFM*si- diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.11.png b/test-integration/snapshots/signTransactionRecordobt/nanos.11.png index bafc0e320244351797fec5739b9a6d9029cf45e8..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D=1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g0c Bro{jN delta 403 zcmV;E0c`&M0<8m(B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1iOvz*GPL diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.12.png b/test-integration/snapshots/signTransactionRecordobt/nanos.12.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.13.png b/test-integration/snapshots/signTransactionRecordobt/nanos.13.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=~v3jil delta 299 zcmV+`0o4AY0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mFrg8Kjf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.15.png b/test-integration/snapshots/signTransactionRecordobt/nanos.15.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<0N~Gg0owtf_$7FZu>b%7 M07*qoM6N<$f*KEcegFUf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.16.png b/test-integration/snapshots/signTransactionRecordobt/nanos.16.png index c0236f40e1f682660f35f989589a0948eac7ab57..d46659f7e6a6db71477a4300cc8603ce5c4760ed 100644 GIT binary patch delta 260 zcmV+f0sH=z0-yqrB!A~gL_t(|ob8y=4uc>JMZ0DD{}1*-AI!)mP>|?a;G8EBLf|$n z=@kJ00C2>*$hs8%jKb6U0JHP5K0p&88y@eU;r{0^8?T1~yIw)Hs>HVk?j!Fznl}2qW(=(34M$Dw?Yi;AqJM%yae%9 za|YP#)&xMbD;qUpieV|A*6F)x3d3AWb=DC5vw>>a0O}c_%vRc;%AP$KsBWx?%6m4; z;kE9$34o-ELvBs;=Kk;$fCGvhJrJG(P^=QozUCALDgXcgKu>H(G@Tov-7KU40000< KMNUMnLSTaJka#Ho delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g0_*!tN;K2 delta 261 zcmV+g0s8*G1E2zsBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjf8qs)D diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.18.png b/test-integration/snapshots/signTransactionRecordobt/nanos.18.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipiC1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeHq)$ delta 421 zcmV;W0b2g~0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfMsvvo diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.19.png b/test-integration/snapshots/signTransactionRecordobt/nanos.19.png index f26fb07e66f049995a83eb93b725e472eda6d16c..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Xs0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ;WtL;wH) delta 350 zcmV-k0iphh1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJpMq|xd&2zy@Kg>a!4=Qbdi;=U-YnX=0GD+7Hh(~Ubs8jv`hz$mEYu$g z#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZM zk*9g{VC|E1$-g|OMCzgtTPsh>B~0O>)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJ zd|oCC^@F?ffJd04TmSj_(*h&)!=wnoTVUO g$)ML`0000LzRJ4bZQ(?V$^ZZW07*qoM6N<$g1On6z5oCK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.22.png b/test-integration/snapshots/signTransactionRecordobt/nanos.22.png index d1eac39e479dd964eb87fa54d56480cf7e8bf195..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}O1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1hrwf};Qc delta 329 zcmV-P0k;0S0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY`5Wfrn diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.25.png b/test-integration/snapshots/signTransactionRecordobt/nanos.25.png index 06140342c291c111e9c068e5607f9a041bc53592..f23e034602c291e3ffec78d647ca8792429e4b2b 100644 GIT binary patch delta 363 zcmV-x0hIo_0)_*SB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1jJ)uP^`r delta 287 zcmV+)0pR|I1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1n0gf<^!U diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.26.png b/test-integration/snapshots/signTransactionRecordobt/nanos.26.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..b1fbe22ce3eb57a0a62a8e33766658e822f72279 100644 GIT binary patch delta 437 zcmV;m0ZRVW0?z}GB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfm#W-@ delta 314 zcmV-A0mc5$1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g8fp@G5`Po delta 407 zcmV;I0cifz1F-{;B!75GL_t(|ob8#>j>I4cMVZac|9@~Fx(`i^3yR_ZI>|jxjnxaH z=#(J>0000C+*fS>{88V;GsEFL>kiRDNeg;_pDg?oTWYBS zYmv5?Gd+FgiSm{?piinfO=n~VG@sWxD0w4y--6U+UN-wH!+(4ICopC}*T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1jGkv6lb< delta 363 zcmV-x0hIop1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1h=fuN43Q diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.29.png b/test-integration/snapshots/signTransactionRecordobt/nanos.29.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_Y1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf-LlV$ delta 437 zcmV;m0ZRVI1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjffq2|@ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.30.png b/test-integration/snapshots/signTransactionRecordobt/nanos.30.png index 8524d356e7311bd4f4a905c37048883fe3cae241..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 100644 GIT binary patch delta 410 zcmV;L0cHNw1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef>_7PZU6uP delta 442 zcmV;r0Y(0_1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f&!1vH2?qr diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.31.png b/test-integration/snapshots/signTransactionRecordobt/nanos.31.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%B1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1m57zx4nB delta 387 zcmV-}0et?g1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lO9vAzHR diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.32.png b/test-integration/snapshots/signTransactionRecordobt/nanos.32.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6EF1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hO3 Brr!Vn delta 429 zcmV;e0aE_{0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfD%j7s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.33.png b/test-integration/snapshots/signTransactionRecordobt/nanos.33.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$z1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jquOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef-+dkRsaA1 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.34.png b/test-integration/snapshots/signTransactionRecordobt/nanos.34.png index bafc0e320244351797fec5739b9a6d9029cf45e8..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDGk1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g3A_z1^@s6 delta 403 zcmV;E0c`%o0<8m(B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1oFMz#9Mn diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.35.png b/test-integration/snapshots/signTransactionRecordobt/nanos.35.png index 119eb22fc2111523375a127e32bc66252e40bfbb..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&p?0-^$tBYyztNklNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%;vh~5 z_mR}4sknMts1y7IM4$OXd1E_8NiIW3P1Xr;v2z88AC&_s34cRAHnFa%@t&K4CcJ@5 z;vg8y^HnV&#v^mww!eQ1u%Cb+E|gg)dM%Uv1w#_z^Gn;u8~Ir2n!RF9DOALS z8K#6ETh5P}t6=zw3#I8oJXX(kkL|T!}=s%{H;}> zbQ!9OVMJ838eMuT94&TsD4Ndjxh~t#*a3;kFvWILDi_~Q?!HlH*lr6QPXLIKTa44Q ze9f+m_6`6^8mAyKW}((a(?G>_)3g8p0001hdb|Lenh4sAjtpP`0000A5& diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.36.png b/test-integration/snapshots/signTransactionRecordobt/nanos.36.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1np# BcBTLT delta 291 zcmV+;0o?wU0=)u|BYyz|Nklo5G z5s6>5+zS4+s|IDIYP4sJ`9|5IBt8QgQ7O$DPOS#O6$M1hqkk-iv_tJxhc#qpfInXg zP(I_vLKR%Z>+H6)p*kvqJklR~!HU0001>#2;?$iBbo!yWRi*002ovPDHLkV1i~8f2sfg diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.37.png b/test-integration/snapshots/signTransactionRecordobt/nanos.37.png index fadc23a161829705363042782e217be337d6b7af..d46659f7e6a6db71477a4300cc8603ce5c4760ed 100644 GIT binary patch delta 261 zcmV+g0s8*M0-yqrBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjfAM1En delta 299 zcmV+`0o4AW0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1m8og82Xd diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.38.png b/test-integration/snapshots/signTransactionRecordobt/nanos.38.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z{0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g1Ozut^fc4 delta 264 zcmV+j0r&pD1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=_hfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1mn#uE78R delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1gr7 BcH#g4 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.40.png b/test-integration/snapshots/signTransactionRecordobt/nanos.40.png index d46659f7e6a6db71477a4300cc8603ce5c4760ed..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 367 zcmV-#0g(Qn0*M2VBYy!(^bU?%60&Z9AMXSKk5XD9G9=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#^0FK>f$*kQC|_)VCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjfR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf!qdpK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.42.png b/test-integration/snapshots/signTransactionRecordobt/nanos.42.png index f26fb07e66f049995a83eb93b725e472eda6d16c..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;160^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTXl-@d^B delta 366 zcmV-!0g?Wy1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1mLdf{g$G delta 334 zcmV-U0kQtV0_g&fB!4hTL_t(|ob8!G5`!QNMX^)we_$8wf(}Cyh=PGc{cpMuEou58 z0YeA?004krKAW`%PbR7_jKRf+=WXpk7ew^fT-Luwv01zW8sHI7RA0FE9U?Dl2Sh&G zZ`v-aa~->JpMq|xd&2zy@Kg>a!4=Qbdi;=U-YnX=0GD+7Hh(~Ubs8jv`hz$mEYu$g z#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZM zk*9g{VC|E1$-g|OMCzgtTPsh>B~0O>)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJ zd|oCC^@F?ffJd04TmSj_(*h&)!=wnoTVUO g$)ML`0000LzRJ4bZQ(?V$^ZZW07*qoM6N<$f{lHeoB#j- diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png index d1eac39e479dd964eb87fa54d56480cf7e8bf195..c0150041dd070cf4bc71a173bba9b4fb4ff7d507 100644 GIT binary patch delta 314 zcmV-A0mc5P1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=b%7 delta 398 zcmV;90dfA-0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kATL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1lTEuUY^A delta 329 zcmV-P0k-~z1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfPxste delta 400 zcmV;B0dM}#1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY;Kfeb6 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.48.png b/test-integration/snapshots/signTransactionRecordobt/nanos.48.png index 076a821e03587e469d3c6332c0b098513e95630d..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(180@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f*AtOLI3~& delta 295 zcmV+?0oeZ31HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1lb3f_VS{ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.49.png b/test-integration/snapshots/signTransactionRecordobt/nanos.49.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?|0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nVwvE={& delta 314 zcmV-A0mc5F1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=O1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjft8C9~ delta 407 zcmV;I0cifm1F-{;B!75GL_t(|ob8#>j>I4cMVZac|9@~Fx(`i^3yR_ZI>|jxjnxaH z=#(J>0000C+*fS>{88V;GsEFL>kiRDNeg;_pDg?oTWYBS zYmv5?Gd+FgiSm{?piinfO=n~VG@sWxD0w4y--6U+UN-wH!+(4ICopC}*B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Eg4@i?AOHXW delta 363 zcmV-x0hIo<1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1i}buPXom diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.52.png b/test-integration/snapshots/signTransactionRecordobt/nanos.52.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%y1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1fzmz$O3y delta 437 zcmV;m0ZRU@1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfRTkV_ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.53.png b/test-integration/snapshots/signTransactionRecordobt/nanos.53.png index 8524d356e7311bd4f4a905c37048883fe3cae241..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6ES1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1h^S BrtAO! delta 442 zcmV;r0Y(1)0@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f`FROegFUf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.54.png b/test-integration/snapshots/signTransactionRecordobt/nanos.54.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$d1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqvH$=8 delta 387 zcmV-}0et?w0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m7ZvCRMg diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.55.png b/test-integration/snapshots/signTransactionRecordobt/nanos.55.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG;1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g6Ud=AOHXW delta 429 zcmV;e0aE_O0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf%S6wA diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.56.png b/test-integration/snapshots/signTransactionRecordobt/nanos.56.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&p21EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=)FnXN; delta 411 zcmV;M0c8H70<;5=BYy#VNkll zqGbR{k|ase$GZG~vHGY%=@h!hnDP2y)E;^KQ1N3oPXkt>ulC`g4TIO0NUW| z6E3gsL7CR}k-Y>(08n4s)h)bm*i2988`U%gwQS1@E}YE)dY@oZtOIa*4<#fp6czs6 z$Oxk29&%2}LbWlfK>2pZbr%20d}}_@4!nbyRp_@*ej+&)@nj6*$rwapJo{~me_YZx zsibPg%C8^}!+(!@dW+z*6Q=5*rCFfLTbfELrEgwIm6zmPHfV=3I@$#6(c^3VjDkd* z(jVxQ=ORV2a;^o*v8|+DgM~Bd02r3r3@fRZA@P~T?FrBa<`I=tH9;xp^qqzxucXTL zhbyU!=3VIen_FqAzbc5_2L$7`4**^6enIw6k|YV|2NY$DBE~A?C~W`$002ovPDHLk FV1fwu%RB%8 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.57.png b/test-integration/snapshots/signTransactionRecordobt/nanos.57.png index bafc0e320244351797fec5739b9a6d9029cf45e8..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1n7b Bc9#GE delta 404 zcmV;F0c-x20<8m(BYy#ONklK?^z|4GN89rt$I}$aUM9MlBolKHp|$r`on8!7?k9qGJgWvwAa%b0n9-bE@Va+ zEf%B@DFfG@RtKO~o|24kA@jh)_QLOts`m~k*$)(qOpdM8#<3o%4!E>Fxdh-4_4!Df z7Ksp4*D2?uER;`1B~Z5A>$G`(EYHEq+kj`_a1gEQ@= zrIXsMD87O&(0}@qmca`!W`e-H$LJ70*vNGw!lnhj_G00001)~B!31;L_t(|ob8yw5`!QNM6px<|ATv|2c`@bl14@*8@lgQEJodp zL6Q<7gb;$r`=t%-Cj#^EzJY(|>3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qAY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g-d Brq%!e diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.59.png b/test-integration/snapshots/signTransactionRecordobt/nanos.59.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad 100644 GIT binary patch delta 296 zcmV+@0oVS$0>c83B!3D?L_t(|ob8#>4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf@ZiYM delta 298 zcmV+_0oDG$1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g5U~+7ytkO diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.61.png b/test-integration/snapshots/signTransactionRecordobt/nanos.61.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 351 zcmV-l0igb(0{H@vBYy!vNklfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1nEPuFU`d delta 264 zcmV+j0r&p-0-^$tBYyztNklNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%>rQF`G3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.62.png b/test-integration/snapshots/signTransactionRecordobt/nanos.62.png index c0236f40e1f682660f35f989589a0948eac7ab57..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 367 zcmV-#0g(Qd0*M2VBYy!(^bU?%60&Z9AMXSKk5XD9G9=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#^0FK>f$*kQC|_)VoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1l-B Bc5?s# diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.63.png b/test-integration/snapshots/signTransactionRecordobt/nanos.63.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAn0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qADlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mc83B!3D?L_t(|ob8#>4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@9FLO# diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}l1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYlKfd<> delta 421 zcmV;W0b2g51HS{1B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf#vRDE diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.66.png b/test-integration/snapshots/signTransactionRecordobt/nanos.66.png index f26fb07e66f049995a83eb93b725e472eda6d16c..06140342c291c111e9c068e5607f9a041bc53592 100644 GIT binary patch delta 287 zcmV+)0pR}m0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1idog17(x delta 350 zcmV-k0ipi70{H@vB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxefS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQTL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1loiuU`NF delta 334 zcmV-U0kQsu1L*>gB!4hTL_t(|ob8!G5`!QNMX^)we_$8wf(}Cyh=PGc{cpMuEou58 z0YeA?004krKAW`%PbR7_jKRf+=WXpk7ew^fT-Luwv01zW8sHI7RA0FE9U?Dl2Sh&G zZ`v-aa~->JpMq|xd&2zy@Kg>a!4=Qbdi;=U-YnX=0GD+7Hh(~Ubs8jv`hz$mEYu$g z#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZM zk*9g{VC|E1$-g|OMCzgtTPsh>B~0O>)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJ zd|oCC^@F?ffJd04TmSj_(*h&)!=wnoTVUO g$)ML`0000LzRJ4bZQ(?V$^ZZW07*qoM6N<$f0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfOpV-E delta 398 zcmV;90dfA%1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>XB7WB>pF delta 329 zcmV-P0k;0s1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lAcvAX~O delta 400 zcmV;B0dM}E1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX`ufEm* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.72.png b/test-integration/snapshots/signTransactionRecordobt/nanos.72.png index 06140342c291c111e9c068e5607f9a041bc53592..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_D0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfxYf^e delta 287 zcmV+)0pR|}1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1giBf`uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef>_AQZU6uP delta 314 zcmV-A0mc5b1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|={}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1nAEzz6^U delta 407 zcmV;I0cifM1F-{;B!75GL_t(|ob8#>j>I4cMVZac|9@~Fx(`i^3yR_ZI>|jxjnxaH z=#(J>0000C+*fS>{88V;GsEFL>kiRDNeg;_pDg?oTWYBS zYmv5?Gd+FgiSm{?piinfO=n~VG@sWxD0w4y--6U+UN-wH!+(4ICopC}*Y5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1nDY Brk(%* delta 363 zcmV-x0hIp!0)_*SB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1mtHuXF$a diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.76.png b/test-integration/snapshots/signTransactionRecordobt/nanos.76.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%31HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfZnE5K diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.77.png b/test-integration/snapshots/signTransactionRecordobt/nanos.77.png index 8524d356e7311bd4f4a905c37048883fe3cae241..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDH01H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g7|!cEdT%j delta 442 zcmV;r0Y(1B0@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f*vr>MF0Q* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.78.png b/test-integration/snapshots/signTransactionRecordobt/nanos.78.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&o%1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=jfO>}j delta 388 zcmV-~0ek+U0-ghqBYy#9NklU_yvZgr!v1McA-k&7*C+@k%7_KqE`P=61QejWqQ=x2^&fSY+Q7)L=ZQ!ANe?2`0G%+HPZ#i&8OguTG)!Znp+bH4{hr zT%#FJ3gL3fY<)zk!>*nr>4Ud*w>_{9Dg8#I4I@?x?bMAT^s`CU)*5R?Dhfa+j@C(8 zLAd3po`&9G;uykjpVoP*KNTlH7#8Lv5$mi`a8;m|yM$DjN~~@HkIBn7 iNk7>4KL7ym_j~~}6CR-`8G8Q!0000oOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1n~I BcCi2e delta 430 zcmV;f0a5;z0>=Z8BYy#oNkl4OCf|1LQe7j`g&R+*cMcF=-|eDRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>D zUiwiPDB#tOXV=<{85YUFKGWU37hD7{oKA2vBo3WL9w91gtbdx`>WjG<&hfNYKqfl^ zuVdz5+gncV-OZ17o0!7|_;1l(i(1&{Kh1&?VgN zhxJDRuPME@WHXGxei(zDSl&ODn~AH6{;JDGp}uM^{o!d5Q&u;b8Y4=~R)~17JLiuq zk|A+_GLu|Wdw z?Nfb8I^5jXV7MU`fYpGP&Q7Ygj#|x3L;7gJn5s=OR|31AT!T zvxD7dKuvfB=DBndt;BgbLHyhqpf_K0*_tIf?Vgl?Y$pk1(fhOuJhwU>EFpvtLJ0Zh Y4I0*J1N|t5rT_o{07*qoM6N<$f`0PPQ2+n{ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.80.png b/test-integration/snapshots/signTransactionRecordobt/nanos.80.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..e15f75d57e7822f4f4f5079a0ded4c024c86bdec 100644 GIT binary patch delta 292 zcmV+<0o(qx1HS^0B!31;L_t(|ob8yw5`!QNM6px<|ATv|2c`@bl14@*8@lgQEJodp zL6Q<7gb;$r`=t%-Cj#^EzJY(|>3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qAuOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef;EiGSO5S3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.81.png b/test-integration/snapshots/signTransactionRecordobt/nanos.81.png index bafc0e320244351797fec5739b9a6d9029cf45e8..1ae5c58ad68058aa49bdd87d7d3bd6b85eaaf9ad 100644 GIT binary patch delta 296 zcmV+@0oVSm1H%H4B!3D?L_t(|ob8#>4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1o5&z!?Al diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.82.png b/test-integration/snapshots/signTransactionRecordobt/nanos.82.png index 119eb22fc2111523375a127e32bc66252e40bfbb..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 421 zcmV;W0b2h40>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfPOQlZ delta 355 zcmV-p0i6E71O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g>r Brq=)f diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.83.png b/test-integration/snapshots/signTransactionRecordobt/nanos.83.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipiA0{H@vB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f}t*g;s5{u diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.85.png b/test-integration/snapshots/signTransactionRecordobt/nanos.85.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 399 zcmV;A0dW4J0;mI!BYy#JNkl?3;%h4x(i>&+7iw%Yd zq%8z?KE5Sc0qXqX{l%q5LRV|(Y618pu6hh#y(hqL{b3(ZSAWc4F#wab_1@P9_2KEN z0NMH85hT}kcWSuE{6q$b0V}|tA=h#m83?!jNtq`sJ(oxO(n&BKj0O_}$W#o@u>?

Ag|UPjXORE@Lw1*fByo2u*XuHWCqoC>di zTK1K-0P^3M0&2;rg1G$Vsfet!rO>%e`corTn3#h6ARI(FfN*TMU_D*D5VxYho4bwZ tX;enPzov=1Q0}ZLpfjcb!!YLO3*+@TcC{fEO#lD@00>D%PDHLkV1j0Z!c+hN delta 264 zcmV+j0r&o>1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=t(0Y*o diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.86.png b/test-integration/snapshots/signTransactionRecordobt/nanos.86.png index c0236f40e1f682660f35f989589a0948eac7ab57..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 330 zcmV-Q0k!^?0^|aaBYy!aNklWIivaPwH_s2>jV1y1r z1f-jNx=sD)Er1!#^b#MijzNfkI7Ms?SXE@~c;&R6^^%bXxFhU3+ cgpe_L0d_{Z-M|ODoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1f?6 BcFh0) diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.87.png b/test-integration/snapshots/signTransactionRecordobt/nanos.87.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}l0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYju)g*H delta 292 zcmV+<0o(qn1HS^0B!31;L_t(|ob8yw5`!QNM6px<|ATv|2c`@bl14@*8@lgQEJodp zL6Q<7gb;$r`=t%-Cj#^EzJY(|>3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qAB%HYfQOkO2h%0002E5kD-i Vp(~2sPMH7z002ovPDHLkV1lBWk&6HT diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.89.png b/test-integration/snapshots/signTransactionRecordobt/nanos.89.png deleted file mode 100644 index 8b56d1dac90a9e754792a30512db3633f78fdf45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.92.png b/test-integration/snapshots/signTransactionRecordobt/nanos.92.png deleted file mode 100644 index 896a9b113f41ca9752321ca6753a2d263497d6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP);x*j(1XN3mJF0~+8FP*h*I_8lTGYX?L=+i%(~t8*Q@ai4;2s(Zry0Ps`}CczcY z(|Y`nYu+r{xd4}R`Zhp)bs8jv`hz$mEYu$g#=stofhCSs0iv)s2jQ6V87-m2^`5lGNJrf@LZMk*9g{VC|E1$-g|OMCzgtTPsh>B~0O> z)zohHgLhP!8v!FMD9&PTYJ7-HDaMi1(brwJd|oCC^@F?ffS99O|M~gT0weXqqzKqm zCqGjp6jxeqS&ow0GA^5X=vk(t{qhW)r66F*px0vn000%f%DUif;Y5qd00000NkvXX Hu0mjf1YDeI diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.93.png b/test-integration/snapshots/signTransactionRecordobt/nanos.93.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19 Date: Fri, 1 Jul 2022 08:34:34 +0200 Subject: [PATCH 29/83] Refactor contract name and account handling in parser --- MakefileTest.mk | 12 +++++----- .../template_newfundsreq.ts | 22 ++++++++++-------- .../template_recordobt.ts | 15 +++++++----- .../template_trnsfiopubky.ts | 13 +++++++---- ledgerjs-fio/src/types/internal.ts | 3 ++- ledgerjs-fio/src/utils/parse.ts | 11 ++------- src/signTransaction.c | 9 ++++--- src/signTransactionIntegrity.c | 6 ++--- ...asic.js => signTransactionTrnsfiopubky.js} | 0 .../nanos.01.png | Bin .../nanos.02.png | Bin .../nanos.03.png | Bin .../nanos.04.png | Bin .../nanos.05.png | Bin .../nanos.06.png | Bin .../nanos.07.png | Bin .../nanos.08.png | Bin .../nanos.09.png | Bin .../nanos.10.png | Bin .../nanos.11.png | Bin .../nanos.12.png | Bin .../nanos.13.png | Bin .../nanos.14.png | Bin .../nanos.15.png | Bin .../nanos.16.png | Bin .../nanos.17.png | Bin .../nanos.18.png | Bin .../nanos.19.png | Bin .../nanos.20.png | Bin .../nanos.21.png | Bin .../nanos.22.png | Bin .../nanos.23.png | Bin .../nanos.24.png | Bin .../nanos.25.png | Bin .../nanox.01.png | Bin .../nanox.02.png | Bin .../nanox.03.png | Bin .../nanox.04.png | Bin .../nanox.05.png | Bin .../nanox.06.png | Bin .../nanox.07.png | Bin .../nanox.08.png | Bin .../nanox.09.png | Bin .../nanox.10.png | Bin .../nanox.11.png | Bin .../nanox.12.png | Bin .../nanox.13.png | Bin .../nanox.14.png | Bin .../nanox.15.png | Bin .../nanox.16.png | Bin .../nanox.17.png | Bin .../nanox.18.png | Bin .../nanox.19.png | Bin .../nanox.20.png | Bin .../nanox.21.png | Bin .../nanox.22.png | Bin .../nanox.23.png | Bin .../nanox.24.png | Bin .../nanox.25.png | Bin .../nanox.26.png | Bin .../nanox.27.png | Bin .../nanox.28.png | Bin 62 files changed, 48 insertions(+), 43 deletions(-) rename test-integration/{signTransactionBasic.js => signTransactionTrnsfiopubky.js} (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.01.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.02.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.03.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.04.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.05.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.06.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.07.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.08.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.09.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.10.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.11.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.12.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.13.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.14.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.15.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.16.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.17.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.18.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.19.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.20.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.21.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.22.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.23.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.24.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanos.25.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.01.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.02.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.03.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.04.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.05.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.06.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.07.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.08.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.09.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.10.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.11.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.12.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.13.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.14.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.15.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.16.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.17.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.18.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.19.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.20.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.21.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.22.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.23.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.24.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.25.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.26.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.27.png (100%) rename test-integration/snapshots/{signTransactionBasic => signTransactionTrnsfiopubky}/nanox.28.png (100%) diff --git a/MakefileTest.mk b/MakefileTest.mk index 6fef76da..6b5d14c4 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -30,12 +30,12 @@ endef .PHONY: speculos_port_5001_test_internal speculos_port_5001_test_internal: -# $(call run_announce,$@) -# $(call run_nodejs_test,5001,40001,getVersion.js) -# $(call run_nodejs_test,5001,40001,getSerial.js) -# $(call run_nodejs_test,5001,40001,getPublicKey.js) -# $(call run_nodejs_test,5001,40001,signTransactionBasic.js) -# $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) + $(call run_announce,$@) + $(call run_nodejs_test,5001,40001,getVersion.js) + $(call run_nodejs_test,5001,40001,getSerial.js) + $(call run_nodejs_test,5001,40001,getPublicKey.js) + $(call run_nodejs_test,5001,40001,signTransactionTrnsfiopubky.js) + $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index cbbe83ef..6a85ddec 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -1,16 +1,18 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, - COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE } from "./commands" + COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMANDS_DH_ENCODE, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE } from "./commands" import { uint64_to_buf } from "../../utils/serialize" -import { validate } from "../../utils/parse" +import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; -export const CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ = "00403ed4aa0ba85b00acba384dbdb89a" +const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("newfundsreq", InvalidDataReason.UNEXPECTED_ERROR); function template_newfundsreq_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; @@ -32,7 +34,8 @@ function template_newfundsreq_memo(chainId: HexString, tx: ParsedTransaction, pa function template_newfundsreq_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; @@ -57,10 +60,9 @@ function template_newfundsreq_hash(chainId: HexString, tx: ParsedTransaction, pa export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { // Validate template expectations validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); - + // Template matching - if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ) { + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { return []; } @@ -71,7 +73,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) return [ - COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ+"01" as HexString), + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Request Funds"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 28f1dd06..75954519 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -3,14 +3,16 @@ import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_ COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE } from "./commands" import { uint64_to_buf } from "../../utils/serialize" -import { validate } from "../../utils/parse" +import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; -export const CONTRACT_ACCOUNT_NAME_RECORDOBT = "00403ed4aa0ba85b0000c887a64b91ba" +const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("recordobt", InvalidDataReason.UNEXPECTED_ERROR); function template_recordopt_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_RECORDOBT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; @@ -32,7 +34,8 @@ function template_recordopt_memo(chainId: HexString, tx: ParsedTransaction, pars function template_recordopt_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].contractAccountName === CONTRACT_ACCOUNT_NAME_RECORDOBT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; @@ -60,7 +63,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); // Template matching - if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_RECORDOBT) { + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { return []; } @@ -71,7 +74,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) return [ - COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_RECORDOBT+"01" as HexString), + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Record other blockchain transaction metadata"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index c7b98867..9639fd0d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -5,10 +5,11 @@ import { COMMAND, Command, constDataAppendData, VALUE_FORMAT, VALUE_VALIDATION, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK} from "./commands" import { uint64_to_buf } from "../../utils/serialize" -import { validate } from "../../utils/parse" +import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; -export const CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY = "0000980ad20ca85be0e1d195ba85e7cd" +const CONTRACT_ACCOUNT = parseNameString("fio.token", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("trnsfiopubky", InvalidDataReason.UNEXPECTED_ERROR); export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -16,14 +17,16 @@ export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); - //Template matching - if (tx.actions[0].contractAccountName !== CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY) return []; + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } const actionData: ParsedTransferFIOTokensData = tx.actions[0].data as ParsedTransferFIOTokensData; const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; return [ - COMMAND_APPEND_CONST_DATA(CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY+"01" as HexString), + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Transfer FIO tokens"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 063d22fb..d7f92064 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -76,7 +76,8 @@ export type ParsedActionAuthorisation = { export type ParsedActionData = ParsedTransferFIOTokensData | ParsedRequestFundsData export type ParsedAction = { - contractAccountName: HexString + account: NameString + name: NameString authorization: Array data: ParsedActionData } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index e1db1a73..15f6e927 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -2,10 +2,7 @@ import { InvalidData, InvalidDataReason } from "../errors" import type {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData } from "../types/internal" import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata} from "../types/public" -import { CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ } from "../interactions/transactionTemplates/template_newfundsreq" -import { CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY } from "../interactions/transactionTemplates/template_trnsfiopubky" import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" -import { CONTRACT_ACCOUNT_NAME_RECORDOBT } from "../interactions/transactionTemplates/template_recordobt" export const MAX_UINT_64_STR = "18446744073709551615" @@ -211,29 +208,25 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa const authorization = action.authorization[0] let parsedActionData: ParsedActionData | null = null - let contractAccountName: HexString = "" as HexString if (action.account == "fio.token" && action.name == "trnsfiopubky") { parsedActionData = parseActionDataTransferFIOToken(action.data as TransferFIOTokensData) - contractAccountName = CONTRACT_ACCOUNT_NAME_TRNSFIOPUBKEY as HexString } else if (action.account === "fio.reqobt" && action.name === "newfundsreq") { parsedActionData = parseActionDataRequestFunds(action.data as RequestFundsData) - contractAccountName = CONTRACT_ACCOUNT_NAME_NEWFUNDSREQ as HexString } else if (action.account === "fio.reqobt" && action.name === "recordobt") { parsedActionData = parseActionDataRecordOtherBlockchainTransactionMetadata(action.data as RecordOtherBlockchainTransactionMetadata) - contractAccountName = CONTRACT_ACCOUNT_NAME_RECORDOBT as HexString } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { throw new InvalidData(InvalidDataReason.ACTION_NOT_SUPPORTED) } - validate(contractAccountName.length == 32, InvalidDataReason.ACTION_NOT_SUPPORTED) const parsedAction: ParsedAction = { - contractAccountName: contractAccountName, + account: parseNameString(action.account, InvalidDataReason.INVALID_ACCOUNT), + name: parseNameString(action.name, InvalidDataReason.INVALID_NAME), authorization: [parseAuthorization(authorization, InvalidDataReason.INVALID_ACTION_AUTHORIZATION)], data: parsedActionData as ParsedActionData, } diff --git a/src/signTransaction.c b/src/signTransaction.c index 41d8a7eb..dfd9b729 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -358,7 +358,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, { tx_storage_check_t storage = constData->valuePolicyAndStorage & 0xF0; TRACE("Storage request :%d, Stored length %d,%d,%d", - (int) storage/0x10, + (int) storage / 0x10, (int) ctx->storage.storedValueLen1, (int) ctx->storage.storedValueLen2, (int) ctx->storage.storedValueLen3); @@ -376,10 +376,13 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, CASE_STORAGE_EQUALS(2); CASE_STORAGE_EQUALS(3); case VALUE_STORAGE_CHECK_R1_DECODE_NAME: { - ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); + ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); ASSERT(ctx->storage.storedValueLen1 <= SIZEOF(ctx->storage.storedValue1)); char buffer[14]; - uint8array_name_to_string(ctx->storage.storedValue1, ctx->storage.storedValueLen1, buffer, SIZEOF(buffer)); + uint8array_name_to_string(ctx->storage.storedValue1, + ctx->storage.storedValueLen1, + buffer, + SIZEOF(buffer)); VALIDATE(varSize < SIZEOF(buffer), ERR_INVALID_DATA); TRACE("%s", buffer); TRACE("%s", varData->value); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 48932664..ba56b54a 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -96,12 +96,12 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * __noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity, const uint8_t (*allowedHashes)[SHA_256_SIZE], - uint16_t allowedHashesLength) { + uint16_t allowedHashesLength) { PRINTF("Integrity check for: {"); - for(size_t i=0; iintegrityHash)-1; i++) { + for (size_t i = 0; i < SIZEOF(integrity->integrityHash) - 1; i++) { PRINTF("0x%x ,", integrity->integrityHash[i]); } - PRINTF("0x%x}\n", integrity->integrityHash[SIZEOF(integrity->integrityHash)-1]); + PRINTF("0x%x}\n", integrity->integrityHash[SIZEOF(integrity->integrityHash) - 1]); #if defined(DEVEL) && defined(NO_INTEGRITY_CHECK) TRACE("Integrity check skipped"); return true; diff --git a/test-integration/signTransactionBasic.js b/test-integration/signTransactionTrnsfiopubky.js similarity index 100% rename from test-integration/signTransactionBasic.js rename to test-integration/signTransactionTrnsfiopubky.js diff --git a/test-integration/snapshots/signTransactionBasic/nanos.01.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.01.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.01.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.01.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.02.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.02.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.02.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.02.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.03.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.03.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.03.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.03.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.04.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.04.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.04.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.04.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.05.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.05.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.05.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.05.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.06.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.06.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.06.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.06.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.07.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.07.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.07.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.07.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.08.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.08.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.08.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.08.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.09.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.09.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.09.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.09.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.10.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.10.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.10.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.10.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.11.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.11.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.11.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.11.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.12.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.12.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.12.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.12.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.13.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.13.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.13.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.13.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.14.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.14.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.14.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.14.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.15.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.15.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.15.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.15.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.16.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.16.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.16.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.16.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.17.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.17.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.17.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.17.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.18.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.18.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.18.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.18.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.19.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.19.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.19.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.19.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.20.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.20.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.20.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.20.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.21.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.21.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.21.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.21.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.22.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.22.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.22.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.22.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.23.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.23.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.23.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.23.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.24.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.24.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.24.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.24.png diff --git a/test-integration/snapshots/signTransactionBasic/nanos.25.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.25.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanos.25.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanos.25.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.01.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.01.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.01.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.01.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.02.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.02.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.02.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.02.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.03.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.03.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.03.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.03.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.04.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.04.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.04.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.04.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.05.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.05.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.05.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.05.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.06.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.06.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.06.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.06.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.07.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.07.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.07.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.07.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.08.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.08.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.08.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.08.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.09.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.09.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.09.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.09.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.10.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.10.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.10.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.10.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.11.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.11.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.11.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.11.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.12.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.12.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.12.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.12.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.13.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.13.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.13.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.13.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.14.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.14.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.14.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.14.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.15.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.15.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.15.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.15.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.16.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.16.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.16.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.16.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.17.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.17.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.17.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.17.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.18.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.18.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.18.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.18.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.19.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.19.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.19.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.19.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.20.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.20.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.20.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.20.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.21.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.21.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.21.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.21.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.22.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.22.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.22.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.22.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.23.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.23.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.23.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.23.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.24.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.24.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.24.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.24.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.25.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.25.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.25.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.25.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.26.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.26.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.26.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.26.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.27.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.27.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.27.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.27.png diff --git a/test-integration/snapshots/signTransactionBasic/nanox.28.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.28.png similarity index 100% rename from test-integration/snapshots/signTransactionBasic/nanox.28.png rename to test-integration/snapshots/signTransactionTrnsfiopubky/nanox.28.png From 540becada6b5c79dece4d3effce94988e5375b5d Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 1 Jul 2022 12:58:52 +0200 Subject: [PATCH 30/83] DH decoding internals --- ledgerjs-fio/src/errors/deviceStatusError.ts | 4 +- src/diffieHellman.c | 61 +++++++++- src/diffieHellman.h | 14 ++- src/diffieHellmann_test.c | 122 +++++++++++++++++++ src/errors.h | 6 +- 5 files changed, 200 insertions(+), 7 deletions(-) diff --git a/ledgerjs-fio/src/errors/deviceStatusError.ts b/ledgerjs-fio/src/errors/deviceStatusError.ts index c4bf2ad6..e61ed1ae 100644 --- a/ledgerjs-fio/src/errors/deviceStatusError.ts +++ b/ledgerjs-fio/src/errors/deviceStatusError.ts @@ -12,7 +12,7 @@ export const DeviceStatusCodes = { ERR_REJECTED_BY_USER: 0x6e09 as const, ERR_REJECTED_BY_POLICY: 0x6e10 as const, ERR_DEVICE_LOCKED: 0x6e11 as const, - ERR_UNSUPPORTED_ADDRESS_TYPE: 0x6e12 as const, + ERR_INVALID_HMAC: 0x6e12 as const, // Not thrown by ledger-app-fio itself but other apps ERR_CLA_NOT_SUPPORTED: 0x6e00 as const, @@ -28,7 +28,7 @@ const DeviceStatusMessages: Record = { "Action rejected by Ledger's security policy", [DeviceStatusCodes.ERR_DEVICE_LOCKED]: "Device is locked", [DeviceStatusCodes.ERR_CLA_NOT_SUPPORTED]: "Wrong Ledger app", - [DeviceStatusCodes.ERR_UNSUPPORTED_ADDRESS_TYPE]: "Unsupported address type", + [DeviceStatusCodes.ERR_INVALID_HMAC]: "Invalid HMAC", } const GH_DEVICE_ERRORS_LINK = diff --git a/src/diffieHellman.c b/src/diffieHellman.c index e241530d..9415c05a 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -304,4 +304,63 @@ __noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, END_TRY; return written; -} \ No newline at end of file +} + +__noinline_due_to_stack__ static void validateHmac(dh_aes_key_t* aes_key, + const uint8_t* buffer, + size_t inSize) { + VALIDATE(inSize >= DH_AES_IV_SIZE + CX_AES_BLOCK_SIZE + DH_HMAC_SIZE, ERR_INVALID_DATA); + + cx_hmac_sha256_t hmac; + cx_err_t err = cx_hmac_sha256_init_no_throw(&hmac, aes_key->km, SIZEOF(aes_key->km)); + ASSERT(err == CX_OK); + err = cx_hmac_update((cx_hmac_t*) &hmac, buffer, inSize - DH_HMAC_SIZE); + ASSERT(err == CX_OK); + uint8_t hmacBuf[DH_HMAC_SIZE]; + size_t outLen = SIZEOF(hmacBuf); + err = cx_hmac_final((cx_hmac_t*) &hmac, hmacBuf, &outLen); + ASSERT(err == CX_OK); + ASSERT(outLen == DH_HMAC_SIZE); + VALIDATE(!memcmp(hmacBuf, buffer + inSize - DH_HMAC_SIZE, DH_HMAC_SIZE), ERR_INVALID_HMAC); +} + +__noinline_due_to_stack__ size_t dh_decode(bip44_path_t* pathSpec, + public_key_t* publicKey, + uint8_t* buffer, + size_t inSize) { + VALIDATE(inSize >= DH_AES_IV_SIZE + CX_AES_BLOCK_SIZE + DH_HMAC_SIZE, ERR_INVALID_DATA); + VALIDATE(inSize % CX_AES_BLOCK_SIZE == 0, ERR_INVALID_DATA); + + dh_aes_key_t aes_key; + dh_init_aes_key(&aes_key, pathSpec, publicKey); + + // validate HMAC + validateHmac(&aes_key, buffer, inSize); + TRACE("HMAC validation succesfull."); + + // initiate DH decryptions + uint8_t IV[CX_AES_BLOCK_SIZE]; + memcpy(IV, buffer, SIZEOF(IV)); + size_t read = + DH_AES_IV_SIZE; // we do not decode IV, this also creates a buffer so we can decode inplace + size_t written = 0; + + for (; read < inSize - DH_HMAC_SIZE; read += CX_AES_BLOCK_SIZE) { + // 1. Decode next block + ASSERT(read - written == CX_AES_BLOCK_SIZE); + cx_err_t err = cx_aes_dec_block(&aes_key.aesKey, buffer + read, buffer + written); + ASSERT(err == CX_OK); + // 2. XOR with IV + for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { + buffer[written + i] ^= IV[i]; + } + // 3. Cyphertext is the new IV ... we do not care that we copy part of HMAC in last + // iteration here + memcpy(IV, buffer + read, CX_AES_BLOCK_SIZE); + written += CX_AES_BLOCK_SIZE; + } + + TRACE("Finishing decription, written:%d, lastCharacter:%d", written, buffer[written - 1]); + // Calculate redulting length based on the last decoded value + return written - buffer[written - 1]; +} diff --git a/src/diffieHellman.h b/src/diffieHellman.h index d4ee5530..2c1fe388 100644 --- a/src/diffieHellman.h +++ b/src/diffieHellman.h @@ -50,10 +50,12 @@ typedef struct { // APDU2 - dh_init_aes_key, dh_encode_append // APDU3 - dh_init_aes_key, dh_encode_append, dh_encode_finalize // Do not forget to guarantee that dh_aes_key_t is zeroes at all times + __noinline_due_to_stack__ void dh_init_aes_key(dh_aes_key_t* dhKey, const bip44_path_t* pathSpec, const public_key_t* publicKey); +// Output data are base64 encrypted __noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* iv, @@ -61,6 +63,7 @@ __noinline_due_to_stack__ size_t dh_encode_init(dh_context_t* ctx, uint8_t* outBuffer, size_t outSize); +// Output data are base64 encrypted __noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, const dh_aes_key_t* aes_key, const uint8_t* inBuffer, @@ -68,12 +71,14 @@ __noinline_due_to_stack__ size_t dh_encode_append(dh_context_t* ctx, uint8_t* outBuffer, size_t outSize); +// Output data are base64 encrypted __noinline_due_to_stack__ size_t dh_encode_finalize(dh_context_t* ctx, const dh_aes_key_t* aes_key, uint8_t* outBuffer, size_t outSize); -/* Convenience function to make all in one step */ +// Convenience function to make all in one step +// Output data are base64 encrypted __noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, public_key_t* publicKey, const uint8_t* iv, @@ -83,6 +88,13 @@ __noinline_due_to_stack__ size_t dh_encode(bip44_path_t* pathSpec, uint8_t* outBuffer, size_t outSize); +// Inplace decoding function. +// Input data is NOT base64 encrypted +__noinline_due_to_stack__ size_t dh_decode(bip44_path_t* pathSpec, + public_key_t* publicKey, + uint8_t* buffer, + size_t inSize); + #ifdef DEVEL __noinline_due_to_stack__ void run_diffieHellman_test(); #endif // DEVEL diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index 706ab600..b3f0bf4e 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -5,6 +5,7 @@ #include "testUtils.h" #include "utils.h" #include "bip44.h" +#include "errors.h" #include "state.h" #define HD HARDENED_BIP32 @@ -62,6 +63,7 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { msgLen, \ encMsg, \ SIZEOF(encMsg)); \ + TRACE_BUFFER(encMsg, encMsgLength); \ ASSERT(encMsgLength == strlen(expectedEncMsg)); \ EXPECT_EQ_BYTES(encMsg, expectedEncMsg, strlen(expectedEncMsg)); \ } @@ -89,6 +91,10 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgcjEMTh02vWc3lY8KOgBVdtYKY7MOUtuZP9tT9nugPNCr" "7YlPVJKaxq3f1wdpcFl6Q6NsUlrR/ENJxpviFxirB7xjkXJmOSfLB1+nd3l+DBxA=="); + TESTCASE("0123456789abcdef0123456789abcdef0123456789abcdef", + "AAECAwQFBgcICQoLDA0OD5UItJL5bwZ8xy74x8JKwgep9INSMYlu/SPdSUMhBnjaVsV/" + "Jx4eXIRvvwVVn9G3OUBpKtEm9+G1b3GYumJrYoc="); + #undef TESTCASE } END_ASSERT_NOEXCEPT; @@ -204,6 +210,120 @@ __noinline_due_to_stack__ static void run_dh_encode_init_append_finalize_tests() END_ASSERT_NOEXCEPT; } +__noinline_due_to_stack__ static void run_dh_decode_tests() { + BEGIN_ASSERT_NOEXCEPT { + TRACE_STACK_USAGE(); + // initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = + "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e2668" + "50ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + publicKeyBuffer, + publicKeyLen, + &publicKey); + + TRACE_STACK_USAGE(); + +#define TESTCASE(msgHex_, expectedDecMsgHex_) \ + { \ + char* msgHex = msgHex_; \ + uint8_t msg[120]; \ + size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ + char* expectedDecMsgHex = expectedDecMsgHex_; \ + uint8_t expectedDecMsg[100]; \ + size_t expectedMsgLen = \ + decode_hex(expectedDecMsgHex, expectedDecMsg, SIZEOF(expectedDecMsg)); \ + size_t decMsgLen = dh_decode(&pathSpec, &publicKey, msg, msgLen); \ + TRACE("Decoded mesage %d, %d", decMsgLen, expectedMsgLen); \ + ASSERT(decMsgLen == expectedMsgLen); \ + EXPECT_EQ_BYTES(msg, expectedDecMsg, decMsgLen); \ + } + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576d60b64b8e8c732d893f6cd374cabc0b30882b6eebaba7af72826e54b11d48a8705974adf7d957" + "aba1f428f58aca25ac5a", + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"); + + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576df93b5a2ebef58532ec2d2dd21c11fdb590d05a598740af8fd9263343eb1d85a7e6943c21d254" + "682d0bdc4c74619ea22c", + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00"); + + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576d2b88c5f509bb7276a32f94595e196cf382b0625992dd194210a0e545410741a8013a122d2edd" + "9233caa3fd4b75f9946c", + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0011"); + + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576df99997fa2a742665b01c35c7d6caebc2fbd1bd4479cb819eb452123a0ec6356f40222f7fc8ce" + "bc3a5b81f644f2f75629", + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" + "bbccddee"); + + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0" + "a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1f" + "c4349c69be21718ab07bc639172663927cb075fa777797e0c1c4", + "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00112233445566778899aa" + "bbccddeeff"); + + TESTCASE( + "000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac207a9f4835231896efd23dd49" + "43210678da56c57f271e1e5c846fbf05559fd1b73940692ad126f7e1b56f7198ba626b6287", + "0123456789abcdef0123456789abcdef0123456789abcdef") + + TRACE_STACK_USAGE(); + +#undef TESTCASE + } + END_ASSERT_NOEXCEPT; +} + +__noinline_due_to_stack__ static void run_dh_decode_failed_hmac_tests() { + TRACE_STACK_USAGE(); + // initializing derivation paths + uint32_t path[] = {HD + 44, HD + 235, HD + 0, 0, 2000}; + bip44_path_t pathSpec; + pathSpec_init(&pathSpec, path, 5); + bip44_PRINTF(&pathSpec); + PRINTF("\n"); + + public_key_t publicKey; + const char* publicKeyHex = + "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e2668" + "50ff980ad349ab8b027c93bf4aead1984168ad43e30ab"; + uint8_t publicKeyBuffer[65]; + size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); + ASSERT(publicKeyLen == 65); + cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, &publicKey); + + TRACE_STACK_USAGE(); + + //"000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69be21718ab07bc639172663927cb075fa777797e0c1c4";we + //change first byte + char* msgHex = + "100102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a0" + "05576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69" + "be21718ab07bc639172663927cb075fa777797e0c1c4"; + uint8_t msg[120]; + size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); + + EXPECT_THROWS(dh_decode(&pathSpec, &publicKey, msg, msgLen), ERR_INVALID_HMAC); +} + __noinline_due_to_stack__ void run_diffieHellman_test() { PRINTF("Running DH tests\n"); PRINTF("If they fail, make sure you seeded your device with\n"); @@ -211,6 +331,8 @@ __noinline_due_to_stack__ void run_diffieHellman_test() { TRACE_STACK_USAGE(); run_dh_encode_tests(); run_dh_encode_init_append_finalize_tests(); + run_dh_decode_tests(); + run_dh_decode_failed_hmac_tests(); } #endif // DEVEL diff --git a/src/errors.h b/src/errors.h index f361022a..6a0a3d3f 100644 --- a/src/errors.h +++ b/src/errors.h @@ -24,7 +24,7 @@ enum { ERR_INVALID_STATE = 0x6E06, // Some part of request data is invalid (includes not enough data) ERR_INVALID_DATA = 0x6E07, - // Request is not valid in the context of previous calls + // Command sequence not allowed by the device ERR_INTEGRITY_CHECK_FAILED = 0x6E08, // User rejected the action @@ -35,8 +35,8 @@ enum { // Pin screen ERR_DEVICE_LOCKED = 0x6E11, - // unsupported Shelley address type - ERR_UNSUPPORTED_ADDRESS_TYPE = 0x6E12, + // Invalid HMAC in DH decryption + ERR_INVALID_HMAC = 0x6E12, // end of errors which trigger automatic response _ERR_AUTORESPOND_END = 0x6E13, From 196973ba50170729f49a0719d6f060187b03dd6f Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 5 Jul 2022 13:15:39 +0200 Subject: [PATCH 31/83] Remove U2F support according to LedgerHQ commit --- MakefileLocal.mk | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/MakefileLocal.mk b/MakefileLocal.mk index c262e646..079fcd25 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -58,9 +58,6 @@ DEFINES += HAVE_PENDING_REVIEW_SCREEN ## USB HID? DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU -## USB U2F -DEFINES += HAVE_U2F HAVE_IO_U2F U2F_PROXY_MAGIC=\"FIO\" USB_SEGMENT_SIZE=64 - ## WEBUSB #WEBUSB_URL = https://www.ledger.com/pages/supported-crypto-assets #DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=$(shell echo -n $(WEBUSB_URL) | wc -c) WEBUSB_URL=$(shell echo -n $(WEBUSB_URL) | sed -e "s/./\\\'\0\\\',/g") @@ -150,7 +147,7 @@ include $(BOLOS_SDK)/Makefile.glyphs ### computed variables APP_SOURCE_PATH += src -SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f +SDK_SOURCE_PATH += lib_stusb lib_stusb_impl SDK_SOURCE_PATH += lib_ux ifeq ($(TARGET_NAME),TARGET_NANOX) SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl From a985bc507f023bf094f6780343292a05e905844e Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 6 Jul 2022 14:13:14 +0200 Subject: [PATCH 32/83] Decoding DH encrypted messages --- MakefileTest.mk | 1 + doc/design_doc.md | 10 +- doc/ins_decrypt.md | 92 +++ doc/ins_sign_tx_commands.md | 7 +- ledgerjs-fio/src/errors/invalidDataReason.ts | 4 +- ledgerjs-fio/src/fio.ts | 62 +- ledgerjs-fio/src/interactions/common/ins.ts | 2 + .../src/interactions/decodeMessage.ts | 101 +++ ledgerjs-fio/src/types/internal.ts | 6 + ledgerjs-fio/src/utils/parse.ts | 25 +- null.d | 1 + src/decodeDH.c | 605 ++++++++++++++++++ src/decodeDH.h | 33 + src/handlers.c | 4 + src/securityPolicy.c | 9 + src/securityPolicy.h | 2 + src/state.h | 2 + src/uiScreens.c | 19 + src/uiScreens.h | 6 + test-integration/decodeMessage.js | 150 +++++ .../snapshots/decodeMessage/nanos.01.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.02.png | Bin 0 -> 339 bytes .../snapshots/decodeMessage/nanos.03.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.04.png | Bin 0 -> 408 bytes .../snapshots/decodeMessage/nanos.05.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanos.06.png | Bin 0 -> 384 bytes .../snapshots/decodeMessage/nanos.07.png | Bin 0 -> 298 bytes .../snapshots/decodeMessage/nanos.08.png | Bin 0 -> 323 bytes .../snapshots/decodeMessage/nanos.09.png | Bin 0 -> 334 bytes .../snapshots/decodeMessage/nanos.10.png | Bin 0 -> 283 bytes .../snapshots/decodeMessage/nanos.11.png | Bin 0 -> 329 bytes .../snapshots/decodeMessage/nanos.12.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.13.png | Bin 0 -> 339 bytes .../snapshots/decodeMessage/nanos.14.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.15.png | Bin 0 -> 408 bytes .../snapshots/decodeMessage/nanos.16.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanos.17.png | Bin 0 -> 384 bytes .../snapshots/decodeMessage/nanos.18.png | Bin 0 -> 298 bytes .../snapshots/decodeMessage/nanos.19.png | Bin 0 -> 323 bytes .../snapshots/decodeMessage/nanos.20.png | Bin 0 -> 334 bytes .../snapshots/decodeMessage/nanos.21.png | Bin 0 -> 319 bytes .../snapshots/decodeMessage/nanos.22.png | Bin 0 -> 291 bytes .../snapshots/decodeMessage/nanos.23.png | Bin 0 -> 329 bytes .../snapshots/decodeMessage/nanos.24.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.25.png | Bin 0 -> 339 bytes .../snapshots/decodeMessage/nanos.26.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.27.png | Bin 0 -> 408 bytes .../snapshots/decodeMessage/nanos.28.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanos.29.png | Bin 0 -> 412 bytes .../snapshots/decodeMessage/nanos.30.png | Bin 0 -> 418 bytes .../snapshots/decodeMessage/nanos.31.png | Bin 0 -> 298 bytes .../snapshots/decodeMessage/nanos.32.png | Bin 0 -> 323 bytes .../snapshots/decodeMessage/nanos.33.png | Bin 0 -> 334 bytes .../snapshots/decodeMessage/nanos.34.png | Bin 0 -> 269 bytes .../snapshots/decodeMessage/nanos.35.png | Bin 0 -> 261 bytes .../snapshots/decodeMessage/nanos.36.png | Bin 0 -> 283 bytes .../snapshots/decodeMessage/nanos.37.png | Bin 0 -> 329 bytes .../snapshots/decodeMessage/nanos.38.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.39.png | Bin 0 -> 339 bytes .../snapshots/decodeMessage/nanos.40.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.41.png | Bin 0 -> 408 bytes .../snapshots/decodeMessage/nanos.42.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanos.43.png | Bin 0 -> 412 bytes .../snapshots/decodeMessage/nanos.44.png | Bin 0 -> 418 bytes .../snapshots/decodeMessage/nanos.45.png | Bin 0 -> 298 bytes .../snapshots/decodeMessage/nanos.46.png | Bin 0 -> 323 bytes .../snapshots/decodeMessage/nanos.47.png | Bin 0 -> 334 bytes .../snapshots/decodeMessage/nanos.48.png | Bin 0 -> 269 bytes .../snapshots/decodeMessage/nanos.49.png | Bin 0 -> 261 bytes .../snapshots/decodeMessage/nanos.50.png | Bin 0 -> 365 bytes .../snapshots/decodeMessage/nanos.51.png | Bin 0 -> 332 bytes .../snapshots/decodeMessage/nanos.52.png | Bin 0 -> 329 bytes .../snapshots/decodeMessage/nanos.53.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.54.png | Bin 0 -> 339 bytes .../snapshots/decodeMessage/nanos.55.png | Bin 0 -> 426 bytes .../snapshots/decodeMessage/nanos.56.png | Bin 0 -> 408 bytes .../snapshots/decodeMessage/nanos.57.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanos.58.png | Bin 0 -> 384 bytes .../snapshots/decodeMessage/nanos.59.png | Bin 0 -> 298 bytes .../snapshots/decodeMessage/nanos.60.png | Bin 0 -> 323 bytes .../snapshots/decodeMessage/nanos.61.png | Bin 0 -> 334 bytes .../snapshots/decodeMessage/nanos.62.png | Bin 0 -> 283 bytes .../snapshots/decodeMessage/nanos.63.png | Bin 0 -> 329 bytes .../snapshots/decodeMessage/nanos.64.png | Bin 0 -> 426 bytes 84 files changed, 1130 insertions(+), 11 deletions(-) create mode 100644 doc/ins_decrypt.md create mode 100644 ledgerjs-fio/src/interactions/decodeMessage.ts create mode 100644 null.d create mode 100644 src/decodeDH.c create mode 100644 src/decodeDH.h create mode 100644 test-integration/decodeMessage.js create mode 100644 test-integration/snapshots/decodeMessage/nanos.01.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.02.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.03.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.04.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.05.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.06.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.07.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.08.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.09.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.10.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.11.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.12.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.13.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.14.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.15.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.16.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.17.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.18.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.19.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.20.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.21.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.22.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.23.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.24.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.25.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.26.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.27.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.28.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.29.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.30.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.31.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.32.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.33.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.34.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.35.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.36.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.37.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.38.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.39.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.40.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.41.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.42.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.43.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.44.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.45.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.46.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.47.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.48.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.49.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.50.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.51.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.52.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.53.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.54.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.55.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.56.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.57.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.58.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.59.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.60.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.61.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.62.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.63.png create mode 100644 test-integration/snapshots/decodeMessage/nanos.64.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 6b5d14c4..3e8581c5 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -37,6 +37,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionTrnsfiopubky.js) $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) + $(call run_nodejs_test,5001,40001,decodeMessage.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/doc/design_doc.md b/doc/design_doc.md index 19f6b28c..38367ebc 100644 --- a/doc/design_doc.md +++ b/doc/design_doc.md @@ -37,7 +37,7 @@ Generally the response from the app looks like this: |**size (B)**| variable | 1 | 1 | where `SW1 SW2` represents the return code. -Known error codes are: +Error codes are: - 0x9000 = OK - see [src/errors.h](../src/errors.h) for the full listing of other errors @@ -62,7 +62,13 @@ Instructions related to public keys/addresses Instructions related to transaction signing -- `0x21` [Sign Transaction](ins_sign_tx.md) +- `0x20` [Sign Transaction](ins_sign_tx.md) + +### `INS=0x3*` group + +Instructions related to DH decryption + +- `0x30` [Decrypt shared secret](ins_decrypt.md) ### `INS=0xF*` group diff --git a/doc/ins_decrypt.md b/doc/ins_decrypt.md new file mode 100644 index 00000000..5ff2a431 --- /dev/null +++ b/doc/ins_decrypt.md @@ -0,0 +1,92 @@ +# Get Public Key + +**Description** + +Decrypt shared secret. Decryption of shared secret spanns several APDU commands. + +**Command 1** + +| Field | Value | +| ----- | -------- | +| CLA | `0xD7` | +| INS | `0x30` | +| P1 | `0x01` | +| P2 | unused | +| Lc | data | + +Data contains part of the encrypted data (after base64 decoding). This command nad be sent multiple times, but reasonably, it should be used at most twice at this moment (the longest addmissible message has length 324 bytes after base 64 decoding). + +**Command 2** + +| Field | Value | +| ----- | -------------------------------------------- | +| CLA | `0xD7` | +| INS | `0x30` | +| P1 | `0x02` | +| P2 | `0x01` for newfundsreq; `0x02` for recordobt | +| Lc | data | + +Data decoding. + +**Command 2 Data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ---------------------------------- | +| Other public key | 65 | Pub key | +| BIP32 path len | 1 | min 2, max 10 | +| First derivation index | 4 | Little endian. Must be 44' | +| Second derivation index | 4 | Little endian. Must be 235' | +| (optional) Third derivation index | 4 | Little endian | +| ... | ... | ... | +| (optional) Last derivation index | 4 | Little endian | +| (optional) No. of remaining keys | 4 | Little endian | + +Ledger will will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). + +**Command 3** + +| Field | Value | +| ----- | -------| +| CLA | `0xD7` | +| INS | `0x30` | +| P1 | `0x03` | +| P2 | unused | +| Lc | unused | + +Sends remaining decoded data. You need to send this message even if the data + +**Response** + +| Field | Length | Comments | +| ---------------------------------------- | -------- |------------------------------------ | +| total length of the whole message | 2 | Little endian | +| length of the second part of the message | 1 | | +| decoded message (first part) | variable | Length according to the field above | + +**Errors (SW codes)** + +- `0x9000` OK +- `0x6E10` Request rejected by app policy +- `0x6E09` Request rejected by user +- for more errors, see [src/errors.h](../src/errors.h) + +**Ledger responsibilities** + +- Check: + - check P1 is valid + - check P2 is valid + - check data is valid: + - `Lc >= 66` (we have path_len) + - `1 + path_len * 4 == Lc` + - check if public key is valid + - check derivation path is valid and within FIO BIP32 space + - `path_len == 5` + - `path[0] == 44'` (' means hardened) + - `path[1] == 235'` + - `path[2] == 0'` + - `path[3] == 0` + - Ledger might impose more restrictions, see implementation of `policyForGetPublicKey` in [src/securityPolicy.c](../src/securityPolicy.c) for details +- validate that decpoded message confirms to format imposed by newfundsreq/recordobt context structure +- display relevant decoded fields +- respond with decoded message + diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md index ccab325a..fac3baa2 100644 --- a/doc/ins_sign_tx_commands.md +++ b/doc/ins_sign_tx_commands.md @@ -1,4 +1,9 @@ -STORED1 4b, STORED2 12b, stored3 64b +STORED1 8b, +STORED2 8b, +STORED3 64b +STORED1_DECODENAME + + diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index c1cd6208..b6624e80 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -36,5 +36,7 @@ export enum InvalidDataReason { INVALID_OFFLINE_URL = "invalid offline url", INVALID_FIO_REQUEST_ID = "invalid fio request id", INVALID_STATUS = "invalid status", - INVALID_OBT_ID = "invalid opt id" + INVALID_OBT_ID = "invalid opt id", + INVALID_MESSAGE = "invalid message", + INVALID_CONTEXT = "invalid context", } diff --git a/ledgerjs-fio/src/fio.ts b/ledgerjs-fio/src/fio.ts index 4585bf3b..4389712c 100644 --- a/ledgerjs-fio/src/fio.ts +++ b/ledgerjs-fio/src/fio.ts @@ -15,6 +15,7 @@ * limitations under the License. ********************************************************************************/ import type Transport from "@ledgerhq/hw-transport" +import { decodeMessage } from "./interactions/decodeMessage" import {DeviceStatusCodes, DeviceStatusError, InvalidDataReason} from './errors' import type {Interaction, SendParams} from './interactions/common/types' @@ -23,11 +24,11 @@ import {getSerial} from "./interactions/getSerial" import {getCompatibility, getVersion} from "./interactions/getVersion" import {runTests} from "./interactions/runTests" import {signTransaction} from "./interactions/signTransaction" -import type {HexString, ParsedTransaction, ValidBIP32Path} from './types/internal' +import {HexString, ParsedContext, ParsedTransaction, PUBLIC_KEY_LENGTH, ValidBIP32Path} from './types/internal' import type {BIP32Path, DeviceCompatibility, Serial, SignedTransactionData, Transaction, Version} from './types/public' import {stripRetcodeFromResponse} from "./utils" import {assert} from './utils/assert' -import {isArray, parseBIP32Path, parseHexString, parseTransaction, validate} from './utils/parse' +import {isArray, parseBIP32Path, parseContext, parseHexString, parseMessage, parseTransaction, validate} from './utils/parse' export * from './errors' export * from './types/public' @@ -220,7 +221,7 @@ export class Fio { * * @example * ``` - * const sign = await fio.getPublicKey[[ HARDENED + 44, HARDENED + 235, HARDENED + 0, 0, 0 ], chainId, tx); + * const sign = await fio.signTransaction({path, chainId, tx}); * console.log(sign); * @see [[SignTransactionRequest]] * @see [[SignTransactionResponse]] @@ -239,6 +240,33 @@ export class Fio { return yield* signTransaction(version, parsedPath, chainId, tx) } + /** + * Decode mesage encoded using DH shared cypher. + * + * @returns Decoded message + * + * @example + * ``` + * const decoded = await fio.getPublicKey[[ HARDENED + 44, HARDENED + 235, HARDENED + 0, 0, 0 ], chainId, tx); + * console.log(sign); + * @see [[DecodeMessageRequest]] + * @see [[DecodeMessageResponse]] + * ``` + */ + async decodeMessage({path, publicKeyHex, message, context}: DecodeMessageRequest): Promise { + const parsedPath = parseBIP32Path(path, InvalidDataReason.INVALID_PATH) + const parsedPubkey = parseHexString(publicKeyHex, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH) + const parsedMessage = parseMessage(message, InvalidDataReason.INVALID_MESSAGE) + const parsedContext = parseContext(context, InvalidDataReason.INVALID_CONTEXT) + return interact(this._decodeMessage(parsedPath, parsedPubkey, parsedMessage, parsedContext), this._send) + } + + /** @ignore */ + * _decodeMessage(parsedPath: ValidBIP32Path, pubkey: HexString, message: HexString, context: ParsedContext) { + const version = yield* getVersion() + return yield* decodeMessage(version, parsedPath, pubkey, message, context) + } + /** * Runs unit tests on the device (DEVEL app build only) */ @@ -257,7 +285,7 @@ export class Fio { /** * Get FIO app version [[Fio.getVersion]] response data * @category Main - * @see [[DeviceCompatibility] + * @see [[DeviceCompatibility]] */ export type GetVersionResponse = { version: Version @@ -316,4 +344,30 @@ export type SignTransactionRequest = { */ export type SignTransactionResponse = SignedTransactionData +/** + * Sign transaction ([[Fio.signTransaction]]) request data + * @category Main + * @see [[DecodeMessageResponse]] + */ + export type DecodeMessageRequest = { + /** Path to public key used to decode the message */ + path: BIP32Path, + /** Other public key in raw hex format*/ + publicKeyHex: string, + /** Base64 encoded message */ + message: string, + /** Message context, either "newfundsreq" or "recordobt" */ + context: string, +} + +/** + * Sign transaction ([[Fio.signTransaction]]) response data + * @category Main + * @see [[DecodeMessageRequest]] + */ +export type DecodeMessageResponse = { + /** Decoded message */ + message: Buffer, +} + export default Fio diff --git a/ledgerjs-fio/src/interactions/common/ins.ts b/ledgerjs-fio/src/interactions/common/ins.ts index 65ff3c08..fe91729c 100644 --- a/ledgerjs-fio/src/interactions/common/ins.ts +++ b/ledgerjs-fio/src/interactions/common/ins.ts @@ -6,5 +6,7 @@ export const enum INS { SIGN_TX = 0x20, + DECODE_MESSAGE = 0x30, + RUN_TESTS = 0xf0, } diff --git a/ledgerjs-fio/src/interactions/decodeMessage.ts b/ledgerjs-fio/src/interactions/decodeMessage.ts new file mode 100644 index 00000000..a8364d38 --- /dev/null +++ b/ledgerjs-fio/src/interactions/decodeMessage.ts @@ -0,0 +1,101 @@ +import { validate } from "utils/parse" +import { DeviceStatusError, DeviceStatusCodes } from "../errors" +import type {DecodeMessageResponse} from "../fio" +import type {HexString, ParsedContext, ValidBIP32Path} from "../types/internal" +import {PUBLIC_KEY_LENGTH} from "../types/internal" +import type {Version} from "../types/public" +import {assert} from "../utils/assert" +import {chunkBy} from "../utils/ioHelpers" +import {path_to_buf} from "../utils/serialize" +import {INS} from "./common/ins" +import type {Interaction, SendParams} from "./common/types" +import {ensureLedgerAppVersionCompatible} from "./getVersion" + +const send = (params: { + p1: number, + p2: number, + data: Buffer, + expectedResponseLength?: number +}): SendParams => ({ins: INS.DECODE_MESSAGE, ...params}) + +const enum P1 { + SEND_DATA = 0x01, + DECODE = 0x02, + RECEIVE_REST = 0x03, +} + +const enum P2 { + UNUSED = 0x00, +} + +export function* decodeMessage( + version: Version, + path: ValidBIP32Path, + pubkey: HexString, + message: HexString, + context: ParsedContext +): Interaction { + ensureLedgerAppVersionCompatible(version) + + const toSend = Buffer.from(message, "hex"); + const firstChunkLength = 200; + //We start sending message + yield send({ + p1: P1.SEND_DATA, + p2: P2.UNUSED, + data: toSend.slice(0, firstChunkLength), + expectedResponseLength: 0, + }) + if (toSend.slice(firstChunkLength).length != 0) { + yield send({ + p1: P1.SEND_DATA, + p2: P2.UNUSED, + data: toSend.slice(firstChunkLength), + expectedResponseLength: 0, + }) + } + + + //decode data + const pathData = path_to_buf(path) + yield send({ + p1: P1.DECODE, + p2: context, + data: Buffer.from(pubkey+pathData.toString("hex"), "hex"), + }) + + //get the data + const response = yield send({ + p1: P1.RECEIVE_REST, + p2: P2.UNUSED, + data: Buffer.from(""), + }) + const [msgLen, chunkLen, decoded] = chunkBy(response, [2, 1]) + + //we may need more than one apdu to retrieve data + let msg = decoded + let totalLen = msgLen.readUInt16LE() + let len = chunkLen.readUInt8() + + while(len < totalLen) { + const response = yield send({ + p1: P1.RECEIVE_REST, + p2: P2.UNUSED, + data: Buffer.from(""), + }) + const [msgLen, chunkLen, decoded] = chunkBy(response, [2, 1]) + const msg2 = decoded + const totalLen2 = msgLen.readUInt16LE() + const len2 = chunkLen.readUInt8() + len += len2; + msg = Buffer.concat([msg, msg2]) + if (totalLen != totalLen2) { + throw new DeviceStatusError(DeviceStatusCodes.ERR_INVALID_STATE); + } + } + if (totalLen != len) { + throw new DeviceStatusError(DeviceStatusCodes.ERR_INVALID_STATE); + } + + return {message: msg} +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index d7f92064..f216e0d8 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -3,6 +3,7 @@ export type VarlenAsciiString = string & { __type: 'ascii' } export type FixlenHexString = string & { __type: 'hex', __length: N } export type NameString = FixlenHexString<16> export type HexString = string & { __type: 'hex' } +export type Base64String = string & { __type: 'base64' } export type _Uint64_num = number & { __type: 'uint64_t' } export type _Uint64_bigint = bigint & { __type: 'uint64_t' } @@ -90,3 +91,8 @@ export type ParsedTransaction = { actions: Array transaction_extensions: null } + +export enum ParsedContext { + NEWFUNDSREQ = 1, + RECORDOT = 2, +} diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 15f6e927..80f204be 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,6 +1,6 @@ import { InvalidData, InvalidDataReason } from "../errors" -import type {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, - Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData } from "../types/internal" +import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, + Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata} from "../types/public" import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" @@ -40,6 +40,9 @@ export const isHexString = (data: unknown): data is HexString => export const isHexStringOfLength = (data: unknown, expectedByteLength: L): data is FixlenHexString => isHexString(data) && data.length === expectedByteLength * 2 +export const isBase64String = (data: unknown): data is Base64String => + isString(data) && /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(data) + export const isValidPath = (data: unknown): data is ValidBIP32Path => isArray(data) && data.every(x => isUint32(x)) && data.length <= 5 @@ -99,7 +102,7 @@ export function parseAscii(str: unknown, errMsg: InvalidDataReason, minLen: numb export function parseHexString(str: unknown, errMsg: InvalidDataReason, minLen: number=0, maxLen: number=Number.MAX_SAFE_INTEGER): HexString { validate(isHexString(str), errMsg) - validate(minLen <= str.length/2 && str.length <= maxLen/2, errMsg) + validate(minLen <= str.length*2 && str.length <= maxLen*2, errMsg) return str } @@ -243,3 +246,19 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa throw new InvalidData(InvalidDataReason.ACTION_NOT_SUPPORTED) } +export function parseMessage(message: string, reason: InvalidDataReason): HexString { + validate(isBase64String(message), reason); + validate(message.length <= 432, reason); //max message length + return Buffer.from(message, "base64").toString("hex") as HexString; +} + +export function parseContext(context: string, reason: InvalidDataReason): ParsedContext { + if (context === "newfundsreq") { + return ParsedContext.NEWFUNDSREQ + } + if (context === "recordobt") { + return ParsedContext.RECORDOT + } + + validate(false, reason) +} diff --git a/null.d b/null.d new file mode 100644 index 00000000..4b1d012d --- /dev/null +++ b/null.d @@ -0,0 +1 @@ +obj/keyDerivation_test.o obj/keyDerivation_test.o: /dev/null diff --git a/src/decodeDH.c b/src/decodeDH.c new file mode 100644 index 00000000..d3b54eb3 --- /dev/null +++ b/src/decodeDH.c @@ -0,0 +1,605 @@ +#include "state.h" +#include "securityPolicy.h" +#include "uiHelpers.h" +#include "uiScreens.h" +#include "getPublicKey.h" +#include "utils.h" +#include "eos_utils.h" + + +static const int16_t DECODING_FINISHED_MAGIC = 23456; +static const uint16_t MAX_SEND_FIRST_MESSAGE = 200; +static ins_decode_context_t* ctx = &(instructionState.decodeContext); + +static inline void CHECK_STAGE(decode_stage_t expected) { + VALIDATE(ctx->stage == expected, ERR_INVALID_STATE); +} + +enum { + P2_NEWFUNDSREQ = 1, + P2_RECORDOBT = 2, +}; + +//we want to wipe out all confidental data on reject +static void dh_respond_with_user_reject() { + explicit_bzero(G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); + explicit_bzero(ctx->buffer, SIZEOF(ctx->buffer)); + io_send_buf(ERR_REJECTED_BY_USER, NULL, 0); + ui_idle(); +} + +// ctx->ui_state is shared between the intertwined UI state machines below +// it should be set to this value at the beginning and after a UI state machine is finished +static int UI_STEP_NONE = 0; + + +typedef struct { + uint8_t length; + uint8_t data[]; +} string_with_length_t; + +static struct { + string_with_length_t *payee_public_address; + string_with_length_t *payer_public_address; + string_with_length_t *amount; + string_with_length_t *chain_code; + string_with_length_t *token_code; + string_with_length_t *status; + string_with_length_t *obt_id; + string_with_length_t *memo; + string_with_length_t *hash; + string_with_length_t *offline_url; +} parsedContent; + +static void readStringWithLength(size_t *read, string_with_length_t **result) { + VALIDATE(ctx->bufferLen >= 1 + *read, ERR_INVALID_DATA); + *result = (string_with_length_t *)(ctx->buffer+*read); + *read += (*result)->length + 1; //+1 for actual length + TRACE("%d, %d" ,(*result)->length, *read); +} + +static void readOptionalStringWithLength(size_t *read, string_with_length_t **result) { + VALIDATE(ctx->bufferLen >= 1 + *read, ERR_INVALID_DATA); + if (ctx->buffer[*read] == 1) { + *read += 1; // has memo or not + readStringWithLength(read, result); + } + else { + VALIDATE(ctx->buffer[*read] == 0, ERR_INVALID_DATA); + *read += 1; // has memo or not + *result = NULL; + TRACE("Not present: %d" ,*read); + } +} + +// ============================== NEWFUNDSREQ state machine ============================== + +enum { + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1 = 200, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_OUR_PATH, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_THEIR_PUBKEY, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_AMOUNT, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CHAIN_CODE, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_TOKEN_CODE, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MEMO, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CONFIRM, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_RESPOND, + DECODE_NEWFUNDSREQ_MEMO_UI_STEP_INVALID, +}; + +static void decodeNewfundsreqMemo_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + ui_callback_fn_t* this_fn = decodeNewfundsreqMemo_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1) { + ui_displayPaginatedText("Decode shared", "secret", this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2) { + ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_OUR_PATH) { + ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_THEIR_PUBKEY) { + ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_AMOUNT) { + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CHAIN_CODE) { + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_TOKEN_CODE) { + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MEMO) { + ASSERT(parsedContent.memo != NULL); + ui_displayAsciiBufferScreen("Memo", + parsedContent.memo->data, + parsedContent.memo->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CONFIRM) { + ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); + } + UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_RESPOND) { + io_send_buf(SUCCESS, NULL, 0); + ui_displayBusy(); // needs to happen after I/O + ctx->stage = DECODE_STAGE_SEND_REST; + } + UI_STEP_END(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_INVALID); +} + +enum { + DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1 = 250, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE2, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_OUR_PATH, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_THEIR_PUBKEY, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_AMOUNT, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_CHAIN_CODE, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_TOKEN_CODE, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_HASH, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_OFFLINE_URL, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_CONFIRM, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_RESPOND, + DECODE_NEWFUNDSREQ_HASH_UI_STEP_INVALID, +}; + +static void decodeNewfundsreqHash_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + ui_callback_fn_t* this_fn = decodeNewfundsreqHash_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1) { + ui_displayPaginatedText("Decode shared", "secret", this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE2) { + ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OUR_PATH) { + ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_THEIR_PUBKEY) { + ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_AMOUNT) { + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CHAIN_CODE) { + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_TOKEN_CODE) { + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_HASH) { + ASSERT(parsedContent.hash != NULL); + ui_displayAsciiBufferScreen("Hash", + parsedContent.hash->data, + parsedContent.hash->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OFFLINE_URL) { + ASSERT(parsedContent.offline_url != NULL); + ui_displayAsciiBufferScreen("Offline URL", + parsedContent.offline_url->data, + parsedContent.offline_url->length, + this_fn); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CONFIRM) { + ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); + } + UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_RESPOND) { + io_send_buf(SUCCESS, NULL, 0); + ui_displayBusy(); // needs to happen after I/O + ctx->stage = DECODE_STAGE_SEND_REST; + } + UI_STEP_END(DECODE_NEWFUNDSREQ_HASH_UI_STEP_INVALID); +} + +// Parse newfundsreq data +static void decodeNewfundsreqUIFlow() { + ASSERT(ctx->ui_step == UI_STEP_NONE); // make sure no ui state machine is running + + explicit_bzero(&parsedContent, SIZEOF(parsedContent)); + size_t read = 0; + readStringWithLength(&read, &parsedContent.payee_public_address); + readStringWithLength(&read, &parsedContent.amount); + readStringWithLength(&read, &parsedContent.chain_code); + readStringWithLength(&read, &parsedContent.token_code); + readOptionalStringWithLength(&read, &parsedContent.memo); + readOptionalStringWithLength(&read, &parsedContent.hash); + readOptionalStringWithLength(&read, &parsedContent.offline_url); + VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); + + if (parsedContent.memo != NULL && parsedContent.hash == NULL && parsedContent.offline_url == NULL) { + ctx->ui_step = DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1; + decodeNewfundsreqMemo_ui_runStep(); + } + else if (parsedContent.memo == NULL && parsedContent.hash != NULL && parsedContent.offline_url != NULL) { + ctx->ui_step = DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1; + decodeNewfundsreqHash_ui_runStep(); + + } + else { + THROW(ERR_INVALID_DATA); + } + +} + +// ============================== RECORDOBT state machine ============================== + +enum { + DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1 = 300, + DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE2, + DECODE_RECORDOBT_MEMO_UI_STEP_OUR_PATH, + DECODE_RECORDOBT_MEMO_UI_STEP_THEIR_PUBKEY, + DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS, + DECODE_RECORDOBT_MEMO_UI_STEP_PAYER_PUBLIC_ADDRESS, + DECODE_RECORDOBT_MEMO_UI_STEP_AMOUNT, + DECODE_RECORDOBT_MEMO_UI_STEP_CHAIN_CODE, + DECODE_RECORDOBT_MEMO_UI_STEP_TOKEN_CODE, + DECODE_RECORDOBT_MEMO_UI_STEP_STATUS, + DECODE_RECORDOBT_MEMO_UI_STEP_OBT_ID, + DECODE_RECORDOBT_MEMO_UI_STEP_MEMO, + DECODE_RECORDOBT_MEMO_UI_STEP_CONFIRM, + DECODE_RECORDOBT_MEMO_UI_STEP_RESPOND, + DECODE_RECORDOBT_MEMO_UI_STEP_INVALID, +}; + +static void decodeRecordobtMemo_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + ui_callback_fn_t* this_fn = decodeRecordobtMemo_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1) { + ui_displayPaginatedText("Decode shared", "secret", this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE2) { + ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OUR_PATH) { + ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_THEIR_PUBKEY) { + ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYER_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payer public address", + parsedContent.payer_public_address->data, + parsedContent.payer_public_address->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_AMOUNT) { + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CHAIN_CODE) { + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_TOKEN_CODE) { + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_STATUS) { + ui_displayAsciiBufferScreen("Status", + parsedContent.status->data, + parsedContent.status->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OBT_ID) { + ui_displayAsciiBufferScreen("Obt ID", + parsedContent.obt_id->data, + parsedContent.obt_id->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MEMO) { + ASSERT(parsedContent.memo != NULL); + ui_displayAsciiBufferScreen("Memo", + parsedContent.memo->data, + parsedContent.memo->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CONFIRM) { + ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); + } + UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_RESPOND) { + io_send_buf(SUCCESS, NULL, 0); + ui_displayBusy(); // needs to happen after I/O + ctx->stage = DECODE_STAGE_SEND_REST; + } + UI_STEP_END(DECODE_RECORDOBT_MEMO_UI_STEP_INVALID); +} + +enum { + DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1 = 350, + DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE2, + DECODE_RECORDOBT_HASH_UI_STEP_OUR_PATH, + DECODE_RECORDOBT_HASH_UI_STEP_THEIR_PUBKEY, + DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS, + DECODE_RECORDOBT_HASH_UI_STEP_PAYER_PUBLIC_ADDRESS, + DECODE_RECORDOBT_HASH_UI_STEP_AMOUNT, + DECODE_RECORDOBT_HASH_UI_STEP_CHAIN_CODE, + DECODE_RECORDOBT_HASH_UI_STEP_TOKEN_CODE, + DECODE_RECORDOBT_HASH_UI_STEP_STATUS, + DECODE_RECORDOBT_HASH_UI_STEP_OBT_ID, + DECODE_RECORDOBT_HASH_UI_STEP_HASH, + DECODE_RECORDOBT_HASH_UI_STEP_OFFLINE_URL, + DECODE_RECORDOBT_HASH_UI_STEP_CONFIRM, + DECODE_RECORDOBT_HASH_UI_STEP_RESPOND, + DECODE_RECORDOBT_HASH_UI_STEP_INVALID, +}; + +static void decodeRecordobtHash_ui_runStep() { + TRACE("UI step %d", ctx->ui_step); + ui_callback_fn_t* this_fn = decodeRecordobtHash_ui_runStep; + + UI_STEP_BEGIN(ctx->ui_step, this_fn); + + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1) { + ui_displayPaginatedText("Decode shared", "secret", this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE2) { + ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OUR_PATH) { + ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_THEIR_PUBKEY) { + ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYER_PUBLIC_ADDRESS) { + ui_displayAsciiBufferScreen("Payer public address", + parsedContent.payer_public_address->data, + parsedContent.payer_public_address->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_AMOUNT) { + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CHAIN_CODE) { + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_TOKEN_CODE) { + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_STATUS) { + ui_displayAsciiBufferScreen("Status", + parsedContent.status->data, + parsedContent.status->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OBT_ID) { + ui_displayAsciiBufferScreen("Obt ID", + parsedContent.obt_id->data, + parsedContent.obt_id->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_HASH) { + ASSERT(parsedContent.hash != NULL); + ui_displayAsciiBufferScreen("Hash", + parsedContent.hash->data, + parsedContent.hash->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OFFLINE_URL) { + ASSERT(parsedContent.offline_url != NULL); + ui_displayAsciiBufferScreen("Offline URL", + parsedContent.offline_url->data, + parsedContent.offline_url->length, + this_fn); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CONFIRM) { + ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); + } + UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_RESPOND) { + io_send_buf(SUCCESS, NULL, 0); + ui_displayBusy(); // needs to happen after I/O + ctx->stage = DECODE_STAGE_SEND_REST; + } + UI_STEP_END(DECODE_RECORDOBT_HASH_UI_STEP_INVALID); +} + +// Parse newfundsreq data +static void decodeRecordobtUIFlow() { + ASSERT(ctx->ui_step == UI_STEP_NONE); // make sure no ui state machine is running + + explicit_bzero(&parsedContent, SIZEOF(parsedContent)); + size_t read = 0; + readStringWithLength(&read, &parsedContent.payee_public_address); + readStringWithLength(&read, &parsedContent.payer_public_address); + readStringWithLength(&read, &parsedContent.amount); + readStringWithLength(&read, &parsedContent.chain_code); + readStringWithLength(&read, &parsedContent.token_code); + readStringWithLength(&read, &parsedContent.status); + readStringWithLength(&read, &parsedContent.obt_id); + readOptionalStringWithLength(&read, &parsedContent.memo); + readOptionalStringWithLength(&read, &parsedContent.hash); + readOptionalStringWithLength(&read, &parsedContent.offline_url); + VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); + + if (parsedContent.memo != NULL && parsedContent.hash == NULL && parsedContent.offline_url == NULL) { + ctx->ui_step = DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1; + decodeRecordobtMemo_ui_runStep(); + } + else if (parsedContent.memo == NULL && parsedContent.hash != NULL && parsedContent.offline_url != NULL) { + ctx->ui_step = DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1; + decodeRecordobtHash_ui_runStep(); + + } + else { + THROW(ERR_INVALID_DATA); + } + +} + +// ============================== MAIN HANDLER ============================== + +void decode_handleAPDU(uint8_t p1, + uint8_t p2, + uint8_t* wireDataBuffer, + size_t wireDataSize, + bool isNewCall) { + TRACE("P1 = 0x%x, P2 = 0x%x, isNewCall = %d", p1, p2, isNewCall); + + if (isNewCall) { + VALIDATE(p1 == DECODE_STAGE_RECEIVE_DATA, ERR_INVALID_STATE); + explicit_bzero(ctx, SIZEOF(*ctx)); + ctx->bufferLen = 0; + ctx->stage = DECODE_STAGE_RECEIVE_DATA; + } + + if (p1 == DECODE_STAGE_RECEIVE_DATA) { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + CHECK_STAGE(DECODE_STAGE_RECEIVE_DATA); + + //we just append data to the buffer + VALIDATE(wireDataSize + ctx->bufferLen <= SIZEOF(ctx->buffer), ERR_DATA_TOO_LARGE); + memcpy(ctx->buffer+ctx->bufferLen, wireDataBuffer, wireDataSize); + ctx->bufferLen += wireDataSize; + TRACE("Extending buffer by %d to %d", (int)wireDataSize, (int)ctx->bufferLen); + + //respond ok + io_send_buf(SUCCESS, NULL, 0); + ui_displayBusy(); // needs to happen after I/O + return; + } + else if (p1 == DECODE_STAGE_DECODE) { + CHECK_STAGE(DECODE_STAGE_RECEIVE_DATA); + ctx->stage = DECODE_STAGE_DECODE; + VALIDATE(p2 == P2_NEWFUNDSREQ || p2 == P2_RECORDOBT, ERR_INVALID_REQUEST_PARAMETERS); + + //parse other pubkey and derivation path + VALIDATE(wireDataSize >= PUBKEY_LENGTH + 1, ERR_INVALID_DATA); + { + cx_err_t err = cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, + wireDataBuffer, + PUBKEY_LENGTH, + &ctx->otherPubKey); + VALIDATE(err == CX_OK, ERR_INVALID_DATA); + } + size_t parsedSize = bip44_parseFromWire(&ctx->pathSpec, wireDataBuffer+PUBKEY_LENGTH, wireDataSize-PUBKEY_LENGTH); + VALIDATE(parsedSize == wireDataSize-PUBKEY_LENGTH, ERR_INVALID_DATA); + + // Security policy for DH decode + ENSURE_NOT_DENIED(policyForDecodeDHDecode(&ctx->pathSpec)); + + // Decode DH buffer inplace + TRACE("Decoding DH"); + ASSERT(ctx->bufferLen <= SIZEOF(ctx->buffer)); + TRACE_BUFFER(ctx->buffer, ctx->bufferLen); + ctx->messageDecodedMagic = DECODING_FINISHED_MAGIC; + ctx->bufferLen = dh_decode(&ctx->pathSpec, &ctx->otherPubKey, ctx->buffer, ctx->bufferLen); + ctx->bufferSentLen = 0; + TRACE_BUFFER(ctx->buffer, ctx->bufferLen); + + // Call parsing function + if (p2 == P2_NEWFUNDSREQ) { + decodeNewfundsreqUIFlow(); + return; + } + else if (p2 == P2_RECORDOBT) { + decodeRecordobtUIFlow(); + return; + } + + THROW(ERR_INVALID_REQUEST_PARAMETERS); + } + else if (p1 == DECODE_STAGE_SEND_REST) { + VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); + VALIDATE(wireDataSize == 0, ERR_INVALID_REQUEST_PARAMETERS); + + CHECK_STAGE(DECODE_STAGE_SEND_REST); + VALIDATE(ctx->messageDecodedMagic == DECODING_FINISHED_MAGIC, ERR_INVALID_STATE); + ASSERT(ctx->bufferLen <= SIZEOF(ctx->buffer)); + ASSERT(ctx->bufferSentLen <= ctx->bufferLen); + + uint16_t toSend = ctx->bufferLen-ctx->bufferSentLen; + uint16_t toSendTotal = ctx->bufferLen; + if (toSend > MAX_SEND_FIRST_MESSAGE) { + toSend = MAX_SEND_FIRST_MESSAGE; + } + + TRACE("Sent: %d, toSend: %d, Total %d",ctx->bufferSentLen, toSend, toSendTotal); + ASSERT(SIZEOF(G_io_apdu_buffer) >= SIZEOF(toSendTotal)+1+toSend); + memcpy(G_io_apdu_buffer, &toSendTotal, SIZEOF(toSendTotal)); + G_io_apdu_buffer[SIZEOF(toSendTotal)] = (uint8_t)toSend; + memmove(G_io_apdu_buffer+SIZEOF(toSendTotal)+1, ctx->buffer+ctx->bufferSentLen, toSend); + io_send_buf(SUCCESS, G_io_apdu_buffer, SIZEOF(toSendTotal)+1+toSend); + //We finish the apdu sequence + ui_displayBusy(); // needs to happen after I/O + ctx->bufferSentLen += toSend; + + if(ctx->bufferSentLen == ctx->bufferLen) { + ctx->stage = DECODE_STAGE_NONE; + ui_idle(); // we are done with this tx + } + return; + } + + THROW(ERR_INVALID_REQUEST_PARAMETERS); +} diff --git a/src/decodeDH.h b/src/decodeDH.h new file mode 100644 index 00000000..6ad3b795 --- /dev/null +++ b/src/decodeDH.h @@ -0,0 +1,33 @@ +#ifndef H_FIO_APP_DECODE_DH +#define H_FIO_APP_DECODE_DH + +#include "handlers.h" +#include "bip44.h" +#include "keyDerivation.h" + +#define MAX_MESSAGE_LENGTH 324 + +typedef enum { + DECODE_STAGE_NONE = 0, + DECODE_STAGE_RECEIVE_DATA = 1, + DECODE_STAGE_DECODE = 2, + DECODE_STAGE_SEND_REST = 3, +} decode_stage_t; + +typedef struct { + decode_stage_t stage; + + bip44_path_t pathSpec; + public_key_t otherPubKey; + uint16_t bufferLen; + uint16_t bufferSentLen; + uint8_t buffer[MAX_MESSAGE_LENGTH]; + + uint16_t messageDecodedMagic; + + int ui_step; +} ins_decode_context_t; + +handler_fn_t decode_handleAPDU; + +#endif // H_FIO_DECODE_DH diff --git a/src/handlers.c b/src/handlers.c index 8fed0165..d87d3eee 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -4,6 +4,7 @@ #include #include "handlers.h" +#include "decodeDH.h" #include "getVersion.h" #include "getSerial.h" #include "getPublicKey.h" @@ -28,6 +29,9 @@ handler_fn_t* lookupHandler(uint8_t ins) { // 0x2* - transaction related CASE(0x20, signTransaction_handleAPDU); + // 0x3* - transaction related + CASE(0x30, decode_handleAPDU); + #ifdef DEVEL // 0xF* - debug_mode related CASE(0xF0, handleRunTests); diff --git a/src/securityPolicy.c b/src/securityPolicy.c index df8f8b57..062632f4 100644 --- a/src/securityPolicy.c +++ b/src/securityPolicy.c @@ -62,3 +62,12 @@ security_policy_t policyDerivePrivateKey(const bip44_path_t* pathSpec) { ALLOW(); } + +security_policy_t policyForDecodeDHDecode(const bip44_path_t* pathSpec) { + DENY_UNLESS(bip44_hasValidFIOPrefix(pathSpec)); + DENY_UNLESS(bip44_containsAddress(pathSpec)); + DENY_IF(bip44_containsMoreThanAddress(pathSpec)); + + ALLOW(); +} + diff --git a/src/securityPolicy.h b/src/securityPolicy.h index 40b14180..c0d1108d 100644 --- a/src/securityPolicy.h +++ b/src/securityPolicy.h @@ -22,6 +22,8 @@ security_policy_t policyDerivePrivateKey(const bip44_path_t* pathSpec); security_policy_t policyForSignTxDHEnd(); security_policy_t policyForSignTxFinish(); +security_policy_t policyForDecodeDHDecode(const bip44_path_t* pathSpec); + static inline void ENSURE_NOT_DENIED(security_policy_t policy) { if (policy == POLICY_DENY) { THROW(ERR_REJECTED_BY_POLICY); diff --git a/src/state.h b/src/state.h index 035c5983..cfb2e9a2 100644 --- a/src/state.h +++ b/src/state.h @@ -1,6 +1,7 @@ #ifndef H_FIO_APP_STATE #define H_FIO_APP_STATE +#include "decodeDH.h" #include "getVersion.h" #include "getPublicKey.h" #include "signTransaction.h" @@ -14,6 +15,7 @@ typedef union { // Here should go states of all instructions ins_get_key_context_t getKeyContext; ins_sign_transaction_context_t signTransactionContext; + ins_decode_context_t decodeContext; } instructionState_t; // Note(instructions are uint8_t but we have a special INS_NONE value diff --git a/src/uiScreens.c b/src/uiScreens.c index 8fa12793..cc141d48 100644 --- a/src/uiScreens.c +++ b/src/uiScreens.c @@ -65,3 +65,22 @@ __noinline_due_to_stack__ void ui_displayPubkeyScreen(const char* screenHeader, ui_displayPaginatedText(screenHeader, buffer, callback); } + +__noinline_due_to_stack__ void ui_displayAsciiBufferScreen(const char* screenHeader, + const uint8_t* buffer, + size_t bufferSize, + ui_callback_fn_t callback) { + str_validateTextBuffer(buffer, bufferSize); + ASSERT(strlen(screenHeader) > 0); + ASSERT(strlen(screenHeader) < BUFFER_SIZE_PARANOIA); + ASSERT(bufferSize > 0); + char buffer2[200]; + ASSERT(bufferSize < SIZEOF(buffer2)); + explicit_bzero(buffer2, SIZEOF(buffer2)); + memcpy(buffer2, buffer, bufferSize); + buffer2[bufferSize] = 0; + + + + ui_displayPaginatedText(screenHeader, buffer2, callback); +} diff --git a/src/uiScreens.h b/src/uiScreens.h index a44b1e2f..879a559f 100644 --- a/src/uiScreens.h +++ b/src/uiScreens.h @@ -26,6 +26,12 @@ __noinline_due_to_stack__ void ui_displayPubkeyScreen(const char* screenHeader, const public_key_t* pubkey, ui_callback_fn_t callback); +__noinline_due_to_stack__ void ui_displayAsciiBufferScreen(const char* screenHeader, + const uint8_t* buffer, + size_t bufferSize, + ui_callback_fn_t callback); + + #ifdef DEVEL void run_uiScreens_test(); #endif // DEVEL diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js new file mode 100644 index 00000000..0a7f10a2 --- /dev/null +++ b/test-integration/decodeMessage.js @@ -0,0 +1,150 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, InvalidData, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" +import { fileURLToPath } from 'url'; +import { Ecc } from '@fioprotocol/fiojs' +import assert from 'assert/strict' +import { createSharedCipher } from "@fioprotocol/fiojs/dist/encryption-fio.js"; + +const PrivateKey = Ecc.PrivateKey; + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +const content1 = { + payee_public_address: "Payee public address", + amount: "Amount 100", + chain_code: "BTC1", + token_code: "BTC2", + memo: "My memo", + hash: undefined, + offline_url: undefined, +} + +const content2 = { + payee_public_address: "Payee public address", + amount: "Amount 100", + chain_code: "BTC1", + token_code: "BTC2", + memo: undefined, + hash: "My hash", + offline_url: "Offline URL", +} + +const content3 = { + payee_public_address: "Payee public address", + payer_public_address: "Payer public address", + amount: "Amount 100", + chain_code: "BTC1", + token_code: "BTC2", + status: "Status", + obt_id: "Obt ID", + memo: "My memo", + hash: undefined, + offline_url: undefined, +} + +const content4 = { + payee_public_address: "Payee public address is very long, long, long", + payer_public_address: "Payer public address is very long, long, long", + amount: "Amount 100", + chain_code: "BTC1", + token_code: "BTC2", + status: "Status", + obt_id: "Obt ID", + memo: undefined, + hash: "My hash is quite long too, too, too", + offline_url: "Offline URL is quite long too, too", +} + +const content5 = { + payee_public_address: "Payee public address", + amount: "Amount 100", + chain_code: "BTC1", + token_code: "BTC2", + memo: "My memo", + hash: "My hash", + offline_url: "Offline URL", +} + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: otherPublicKey.toString()}) +const encryptedContent1 = sharedCipher.encrypt('new_funds_content', content1) +const encryptedContent2 = sharedCipher.encrypt('new_funds_content', content2) +const encryptedContent3 = sharedCipher.encrypt('record_obt_data_content', content3) +const encryptedContent4 = sharedCipher.encrypt('record_obt_data_content', content4) +const encryptedContent5 = sharedCipher.encrypt('new_funds_content', content5) + +testStep(" - - -", "await app.decodeMessage() - newfundsreq memo"); +{ + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent1, context: "newfundsreq"}); + await device.review([1, 2, 1, 3, 2, 1, 1, 1, 1], "Review decode message"); + const decodeMessageResponse = await decodeMessagePromise; + assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433201074d79206d656d6f0000") +} + +testStep(" - - -", "await app.decodeMessage() - newfundsreq hash"); +{ + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent2, context: "newfundsreq"}); + await device.review([1, 2, 1, 3, 2, 1, 1, 1, 1, 1], "Review decode message"); + const decodeMessageResponse = await decodeMessagePromise; + assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e7420313030044254433104425443320001074d792068617368010b4f66666c696e652055524c") +} + +testStep(" - - -", "await app.decodeMessage() - recordobt memo"); +{ + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent3, context: "recordobt"}); + await device.review([1, 2, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1], "Review decode message"); + const decodeMessageResponse = await decodeMessagePromise; + assert.equal(decodeMessageResponse.message.toString("hex"), "145061796572207075626c69632061646472657373145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433206537461747573064f627420494401074d79206d656d6f0000") +} + +testStep(" - - -", "await app.decodeMessage() - recordobt hash"); +{ + console.log(encryptedContent4) + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent4, context: "recordobt"}); + await device.review([1, 2, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + const decodeMessageResponse = await decodeMessagePromise; + assert.equal(decodeMessageResponse.message.toString("hex"), "2d5061796572207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e672d5061796565207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e670a416d6f756e74203130300442544331044254433206537461747573064f62742049440001234d792068617368206973207175697465206c6f6e6720746f6f2c20746f6f2c20746f6f01224f66666c696e652055524c206973207175697465206c6f6e6720746f6f2c20746f6f") +} + +testStep(" - - -", "await app.decodeMessage() - newfundsreq invalid both memo and hash"); +{ + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent5, context: "newfundsreq"}); + await assert.rejects(decodeMessagePromise, DeviceStatusError); +} + +testStep(" - - -", "await app.decodeMessage() - newfundsreq rejected by user"); +{ + const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + message: encryptedContent1, context: "newfundsreq"}); + await device.reviewReject([1, 2, 1, 3, 2, 1, 1, 1, 1], "Review decode message"); + await assert.rejects(decodeMessagePromise, DeviceStatusError); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/decodeMessage/nanos.01.png b/test-integration/snapshots/decodeMessage/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIcsJC`gm|gJDdG0001hW}HWKwYBWLj6vdgoXNDK@P@)9E=1f!ASmE(&1k|9l+)pMg>(( zP5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0i4|wengH3SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.04.png b/test-integration/snapshots/decodeMessage/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..0a417247a7b9a9d367300888396923fcf52510a6 GIT binary patch literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(00008i%uhT;S+e9 zc5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zdft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivM zYw1|D=OT|5i$+`GvfTjXAR8ZSG;1OQ4Pf7n%>*)yHGnSa??WGqkfSY@+vQNP=b)Mj zyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k|C;dt7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.09.png b/test-integration/snapshots/decodeMessage/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 GIT binary patch literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.10.png b/test-integration/snapshots/decodeMessage/nanos.10.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d GIT binary patch literal 283 zcmV+$0p$LPP);6{Q`T6p++8A|fIn!Moruu8d;Q9>DBY?Ey52 zv*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+djAZI|2#GryqK(i?drT<}VDR0I< hWGFHGk(h`G#s)ZRkug|Tty=&9002ovPDHLkV1hi!clH1P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.11.png b/test-integration/snapshots/decodeMessage/nanos.11.png new file mode 100644 index 0000000000000000000000000000000000000000..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc GIT binary patch literal 329 zcmV-P0k-~$P)l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIcsJC`gm|gJDdG0001hW}HWKwYBWLj6vdgoXNDK@P@)9E=1f!ASmE(&1k|9l+)pMg>(( zP5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0i4|wengH3SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.15.png b/test-integration/snapshots/decodeMessage/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..0a417247a7b9a9d367300888396923fcf52510a6 GIT binary patch literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(00008i%uhT;S+e9 zc5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zdft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivM zYw1|D=OT|5i$+`GvfTjXAR8ZSG;1OQ4Pf7n%>*)yHGnSa??WGqkfSY@+vQNP=b)Mj zyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k|C;dt7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.20.png b/test-integration/snapshots/decodeMessage/nanos.20.png new file mode 100644 index 0000000000000000000000000000000000000000..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 GIT binary patch literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.21.png b/test-integration/snapshots/decodeMessage/nanos.21.png new file mode 100644 index 0000000000000000000000000000000000000000..10c212723b1b1c4ea34842762edf7eb40fb7ec27 GIT binary patch literal 319 zcmV-F0l@x=P)m;0?&NOLB{@U<<9`b`My#liYFWXYWn8H9*9n z2k<3GLpz~5tU?mr@@Ouo{&0SfljnM!A literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.22.png b/test-integration/snapshots/decodeMessage/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..22b41df9a0eb1a4086ca941f72538c9989038efd GIT binary patch literal 291 zcmV+;0o?wHP)SQ3a;7#@gnQ)`fz+RvPu0j@1e%680{#V z3)HX90ZCE65q}Ab`c0t*dZ>XC@ky|_8!G;-7k5MR!>X-_McmN*l+*>l4OLH|9=M@m pa6?B0H?;EjGq|Au0001!^8uJr+Oy_xZ43Ya002ovPDHLkV1nCqecJ#4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.23.png b/test-integration/snapshots/decodeMessage/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc GIT binary patch literal 329 zcmV-P0k-~$P)l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIcsJC`gm|gJDdG0001hW}HWKwYBWLj6vdgoXNDK@P@)9E=1f!ASmE(&1k|9l+)pMg>(( zP5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0i4|wengH3SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.27.png b/test-integration/snapshots/decodeMessage/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..0a417247a7b9a9d367300888396923fcf52510a6 GIT binary patch literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(0000>WHiu39dQ@i!CHig{?YOu2d+o%!FVa^%H(Ymq#Mmgs;vfx<*e6huF6&!hAG` z+PyY7vF-{=2+X&a{(th{pMbxg;09z4{K*`6vVQgB2&M5Q(!ukJ{{e+9gi`mw#*3p) z0P3v57fMCSWn_sI#cBsw2&IqqBTJ-m)F)t}Q0jB8|&j+`GfzE%Lk|arzgkxLxpSvf_pwd0w_!z#@ ziSzPrZ0p{RMp(ya#0h{LkH);TiK*Q>4eg?)8Vj%uEeNMk3-P-{4R&?49KB&Y>uQ|Z zzc46&i!`f9Run&6;u`={DqO?8Y#cFk20e)A8^F?E1K=RPt7z}C#Amr3Xtp$(F3m^l zN8?2KrxY#dw^1TMbuko0coLkWqX&FePHQGVQ@(Cv6OGYn;Gq4nMOe7ZG zlu+Dp!ZhE>Z@2+(*kg1u2mWLZJTZ=b9Er3LTqq?b>%IdXA(0k*-J|29O8~l3MJ|z| zBdEc~4s4@FB-0FqQpk|>kB~?iJJhsjLTM*PQiNV2buT1N4j9z{IM^$ZMkpaxLTL}y zH2_j|s|X>E$AAP}kVtva^jSh_L^K{hZ?}D<8tTm88j!Dlk|arBeofj&W;$bH^Z)<= M07*qoM6N<$f)_WjZ2$lO literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.31.png b/test-integration/snapshots/decodeMessage/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..e4da844413df4469d5044c9e87d1346d5970505a GIT binary patch literal 298 zcmV+_0oDGAP)7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.33.png b/test-integration/snapshots/decodeMessage/nanos.33.png new file mode 100644 index 0000000000000000000000000000000000000000..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 GIT binary patch literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.34.png b/test-integration/snapshots/decodeMessage/nanos.34.png new file mode 100644 index 0000000000000000000000000000000000000000..47045550f563e2928f113ee01b4e6353be5ef4f2 GIT binary patch literal 269 zcmV+o0rLKdP)ia*i3%f9(gdYoyW&X7xA6D6HWRXcx`C9E{fqpSSh9a9YM@6AlzNFZx}n;6{Q`T6p++8A|fIn!Moruu8d;Q9>DBY?Ey52 zv*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+djAZI|2#GryqK(i?drT<}VDR0I< hWGFHGk(h`G#s)ZRkug|Tty=&9002ovPDHLkV1hi!clH1P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.37.png b/test-integration/snapshots/decodeMessage/nanos.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc GIT binary patch literal 329 zcmV-P0k-~$P)l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIcsJC`gm|gJDdG0001hW}HWKwYBWLj6vdgoXNDK@P@)9E=1f!ASmE(&1k|9l+)pMg>(( zP5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0i4|wengH3SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.41.png b/test-integration/snapshots/decodeMessage/nanos.41.png new file mode 100644 index 0000000000000000000000000000000000000000..0a417247a7b9a9d367300888396923fcf52510a6 GIT binary patch literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(0000>WHiu39dQ@i!CHig{?YOu2d+o%!FVa^%H(Ymq#Mmgs;vfx<*e6huF6&!hAG` z+PyY7vF-{=2+X&a{(th{pMbxg;09z4{K*`6vVQgB2&M5Q(!ukJ{{e+9gi`mw#*3p) z0P3v57fMCSWn_sI#cBsw2&IqqBTJ-m)F)t}Q0jB8|&j+`GfzE%Lk|arzgkxLxpSvf_pwd0w_!z#@ ziSzPrZ0p{RMp(ya#0h{LkH);TiK*Q>4eg?)8Vj%uEeNMk3-P-{4R&?49KB&Y>uQ|Z zzc46&i!`f9Run&6;u`={DqO?8Y#cFk20e)A8^F?E1K=RPt7z}C#Amr3Xtp$(F3m^l zN8?2KrxY#dw^1TMbuko0coLkWqX&FePHQGVQ@(Cv6OGYn;Gq4nMOe7ZG zlu+Dp!ZhE>Z@2+(*kg1u2mWLZJTZ=b9Er3LTqq?b>%IdXA(0k*-J|29O8~l3MJ|z| zBdEc~4s4@FB-0FqQpk|>kB~?iJJhsjLTM*PQiNV2buT1N4j9z{IM^$ZMkpaxLTL}y zH2_j|s|X>E$AAP}kVtva^jSh_L^K{hZ?}D<8tTm88j!Dlk|arBeofj&W;$bH^Z)<= M07*qoM6N<$f)_WjZ2$lO literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.45.png b/test-integration/snapshots/decodeMessage/nanos.45.png new file mode 100644 index 0000000000000000000000000000000000000000..e4da844413df4469d5044c9e87d1346d5970505a GIT binary patch literal 298 zcmV+_0oDGAP)7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.47.png b/test-integration/snapshots/decodeMessage/nanos.47.png new file mode 100644 index 0000000000000000000000000000000000000000..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 GIT binary patch literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.48.png b/test-integration/snapshots/decodeMessage/nanos.48.png new file mode 100644 index 0000000000000000000000000000000000000000..47045550f563e2928f113ee01b4e6353be5ef4f2 GIT binary patch literal 269 zcmV+o0rLKdP)ia*i3%f9(gdYoyW&X7xA6D6HWRXcx`C9E{fqpSSh9a9YM@6AlzNFZx}n<+x0@9YjV zkq+=}zvP5uF~=n41t=~ixtA$(bXvx+2Id7weHYzbRK>QVIo$36+kSC(Nc!1(BW?vK z;!p$gOArTlLUp(b0kAyY7RD8U2J?Xi^MM948RGr(D4YmuT59W!Y^C^y>ds;+T<#*K zUX_Xxe3)e9MeNpU-U%UuNljtS*o0grZz7M}g&(1Ccs|xFFz|Yqc9Ba`X&j|F!oR{d znR+YPT+Vzn>BCqkLNUxaC^)LUHz)}ZXKVjE7iapv-fXj~uUU`5n{W`O-w|zLP7lFR zV@nVzg*iDZPLi6_?d_9;o3N|dF=(S>Yuy7JGWZ@qj;1OA0KASLI4-qQ%IKSI00000 LNkvXXu0mjfRu`9m literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.51.png b/test-integration/snapshots/decodeMessage/nanos.51.png new file mode 100644 index 0000000000000000000000000000000000000000..e55ef587cf27f2bed40a0ac3983155b52661901f GIT binary patch literal 332 zcmV-S0ki&zP)SIK zhO>BwFRWGBN$S6OPjvPPoD)hbF|%?Qv4t6Oefk3*>R~3GhUGZlz;*$~|Pr2oTic ztj>_sdN%IOI8BeU=PH?vdjZruPJVAuVO=+L%;QvdMz8IFl|0VQMAZR-5&}hE_ZAcc e2mk;8_hkpSo$A%0owLIL0000l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIcsJC`gm|gJDdG0001hW}HWKwYBWLj6vdgoXNDK@P@)9E=1f!ASmE(&1k|9l+)pMg>(( zP5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0i4|wengH3SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.56.png b/test-integration/snapshots/decodeMessage/nanos.56.png new file mode 100644 index 0000000000000000000000000000000000000000..0a417247a7b9a9d367300888396923fcf52510a6 GIT binary patch literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(00008i%uhT;S+e9 zc5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zdft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivM zYw1|D=OT|5i$+`GvfTjXAR8ZSG;1OQ4Pf7n%>*)yHGnSa??WGqkfSY@+vQNP=b)Mj zyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k|C;dt7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.61.png b/test-integration/snapshots/decodeMessage/nanos.61.png new file mode 100644 index 0000000000000000000000000000000000000000..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 GIT binary patch literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.62.png b/test-integration/snapshots/decodeMessage/nanos.62.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d GIT binary patch literal 283 zcmV+$0p$LPP);6{Q`T6p++8A|fIn!Moruu8d;Q9>DBY?Ey52 zv*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+djAZI|2#GryqK(i?drT<}VDR0I< hWGFHGk(h`G#s)ZRkug|Tty=&9002ovPDHLkV1hi!clH1P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanos.63.png b/test-integration/snapshots/decodeMessage/nanos.63.png new file mode 100644 index 0000000000000000000000000000000000000000..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc GIT binary patch literal 329 zcmV-P0k-~$P)l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Thu, 7 Jul 2022 11:23:26 +0200 Subject: [PATCH 33/83] Cleanup Make pubkey js interfaces the sme for sign tx (with dh) and decode --- doc/allowed_command_sequences.md | 3 + doc/ins_decrypt.md | 10 +- doc/ins_sign_tx.md | 276 +++++++------- doc/ins_sign_tx_commands.md | 75 ---- .../template_newfundsreq.ts | 2 +- .../template_recordobt.ts | 2 +- ledgerjs-fio/src/types/internal.ts | 4 +- ledgerjs-fio/src/types/public.ts | 5 +- ledgerjs-fio/src/utils/parseTxActions.ts | 29 +- .../device-self-test/runTestsDevice.test.ts | 18 - .../integration/__fixtures__/getPublicKey.ts | 21 -- .../test/integration/getPublicKey.test.ts | 86 ----- .../test/integration/getSerial.test.ts | 21 -- .../test/integration/getVersion.test.ts | 25 -- .../test/integration/signTransaction.test.ts | 231 ------------ ledgerjs-fio/test/test_utils.ts | 16 - ledgerjs-fio/test/tsconfig.json | 8 - ledgerjs-fio/test/unit/parse.test.ts | 158 -------- src/decodeDH.c | 338 +++++++++--------- src/diffieHellmann_test.c | 2 +- src/securityPolicy.c | 1 - src/uiScreens.c | 2 - src/uiScreens.h | 1 - .../signTransactionNewfundsreq.js | 12 +- test-integration/signTransactionRecordobt.js | 11 +- 25 files changed, 340 insertions(+), 1017 deletions(-) create mode 100644 doc/allowed_command_sequences.md delete mode 100644 doc/ins_sign_tx_commands.md delete mode 100644 ledgerjs-fio/test/device-self-test/runTestsDevice.test.ts delete mode 100644 ledgerjs-fio/test/integration/__fixtures__/getPublicKey.ts delete mode 100644 ledgerjs-fio/test/integration/getPublicKey.test.ts delete mode 100644 ledgerjs-fio/test/integration/getSerial.test.ts delete mode 100644 ledgerjs-fio/test/integration/getVersion.test.ts delete mode 100644 ledgerjs-fio/test/integration/signTransaction.test.ts delete mode 100644 ledgerjs-fio/test/test_utils.ts delete mode 100644 ledgerjs-fio/test/tsconfig.json delete mode 100644 ledgerjs-fio/test/unit/parse.test.ts diff --git a/doc/allowed_command_sequences.md b/doc/allowed_command_sequences.md new file mode 100644 index 00000000..3e9a061d --- /dev/null +++ b/doc/allowed_command_sequences.md @@ -0,0 +1,3 @@ +# Sign Transaction allowed commands sequences + +Here will be the list of allowed command sequences and the hashes stored in the app. This section will be updated before the release. diff --git a/doc/ins_decrypt.md b/doc/ins_decrypt.md index 5ff2a431..ac24a741 100644 --- a/doc/ins_decrypt.md +++ b/doc/ins_decrypt.md @@ -76,8 +76,8 @@ Sends remaining decoded data. You need to send this message even if the data - check P1 is valid - check P2 is valid - check data is valid: - - `Lc >= 66` (we have path_len) - - `1 + path_len * 4 == Lc` + - `Lc >= 66` (we have public key and path_len) + - `65 + 1 + path_len * 4 == Lc` - check if public key is valid - check derivation path is valid and within FIO BIP32 space - `path_len == 5` @@ -85,8 +85,8 @@ Sends remaining decoded data. You need to send this message even if the data - `path[1] == 235'` - `path[2] == 0'` - `path[3] == 0` - - Ledger might impose more restrictions, see implementation of `policyForGetPublicKey` in [src/securityPolicy.c](../src/securityPolicy.c) for details -- validate that decpoded message confirms to format imposed by newfundsreq/recordobt context structure + - Ledger might impose more restrictions, see implementation of `policyForDecodeDHDecode` in [src/securityPolicy.c](../src/securityPolicy.c) for details +- validate that decoded message confirms to format imposed by newfundsreq / recordobt content structure - display relevant decoded fields -- respond with decoded message +- after confirmation respond with decoded message diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index 3ae5226e..799d7920 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -1,15 +1,18 @@ # Sign Transaction -This is out of date at the moment. - **Description** Construct and sign a transaction (returns just the signature). -Due to Ledger constraints and potential security implications (parsing errors), FIO Ledger app uses a custom format for streaming the transaction to be signed. The main rationale behind is the following: -1) Serializing is easier than parsing. This is true especially if transaction chunks would not be aligned with processing (e.g., inputs/outputs arbitrarily split between multiple APDUs). This also allows a potentially smaller memory footprint on the device. -2) SignTx communication protocol is more extensible in the future. -3) Potential security improvement --- because SignTx does not output the serialized transaction, only the witnesses, the host app is responsible for serializing the transaction itself. Any serialization mismatch between host and Ledger would result in a transaction which is rejected by nodes. +For FIO app main use cases it is instrumental that the app is as small as possible, while we need to have >20 different workflows for various actions. To accomplish this we designed several commands to serialize transaction while displaying (or not) parts of it. Each command is divided into constant part and variable part. Constant parts of the commands are used to calculate integrity hash by contatenating integrity hash of the previous command with constant parts of current command to produce new integrity hash. This process creates a Merkle tree and at every critical step (signing transaction, finishing DH encryption) we compare the integrity hash to one stored in the app. This guarantees that to get ether a signature or encrypted message, the constant parts of theinstructions and the ordering of the instructions have to match exactly. + +For the list of allowed command sequences, see [List of allowed command sequences](allowed_command_sequences.md) + +The main rationale behind is the following: +1) This approach reduces app size. The app size is almost constant while we add new features. +2) Decreases memory footprint (and no need to use flash memory). We never store whole transaction on the device. The data arrives in natural chunks. +3) Communication protocol is easily extensible in the future. +4) Potential security improvement --- because SignTx does not output the serialized transaction, only the witnesses, the host app is responsible for serializing the transaction itself. Any serialization mismatch between host and Ledger would result in a transaction which is rejected by nodes. **SignTx Limitations** @@ -21,144 +24,137 @@ The communication protocol is designed to *ease* the Ledger App implementation ( Given these requirements in mind, here is how transaction signing works: -## Signing - -Transaction signing consists of an exchange of several APDUs. During this exchange, Ledger keeps track of its current internal state, so APDU messages have to be sent in the order of increasing P1 values, and the entities in the transaction body are serialized in the same order as the messages are received. The Ledger maintains an internal state and refuses to accept APDU messages that are out of place by aborting the transaction being signed. - -**General command** - -|Field|Value| -|-----|-----| -| CLA | `0xD7` | -| INS | `0x21` | -| P1 | signing phase | -| P2 | (specific for each subcall) | - -The phases must follow in sequence, each call exactly once. Ledger is computing the rolling hash of the serialized transaction. - -### Initialize signing - -Initializes signing request. +## General command structure **Command** -|Field|Value| -|-----|-----| -| P1 | `0x01` | -| P2 | unused | - -*Data* - -|Field| Length | Comments| -|------|-----|-----| -| chainId | 32 | | - -*Serialization* - -Serializes chainId as it is. - -### Transaction header - -|Field|Value| -|-----|-----| -| P1 | `0x02` | -| P2 | unused | - -*Data* - -|Field| Length | Comments| -|-----|--------|--------| -| Expiration | 4 | time_t, little endian | -| Ref block num | 2 | little endian | -| Ref block prefix | 4 | little endian | - -*Serialization* - -Converts all three integer to big endian for serialization. Then it adds 4 zero bytes which stand for `max_net_usage_words`, `max_cpu_usage_ms`, `delay_sec`, and number of context-free actions. - - -### Action header - -**Command** - -|Field|Value| -|-----|-----| -| P1 | `0x03` | -| P2 | unused | - -*Data* - -|Field| Length | Comments| -|-----|--------|--------| -| Contract, Account, Name | 16 | serialized as they go into the transaction | - -Ledger knows and recognizes the constant and asigns correct action to it. - -*Serialization* - -Adds one byte with value 1, this stands for one action. 16 bytes from APDU data follows. - - -### Action Authorization - -**Command (top-level output data)** - -|Field|Value| -|-----|-----| -| P1 | `0x04` | -| P2 | unused | - -*Data* - -|Field| Length | Comments| -|-----|--------|--------| -| Actor | 8 | Serialized as `name`| -| Permission | 8 | Serialized as `name`| - -*Serialization* - -Adds one byte with value 1, this stands for one authorization. Actor and Permission follow (8+8 bytes). - - -### Action Data - -As of now, only Transfer FIO tokens action is implemented. - -|Field|Value| -|-----|-----| -| P1 | `0x05` | -| P2 | unused | - -*Data* - -We add trailing zeroes to the string. Thus APDU data length will be Data length (as it goes to the transaction) +3. This is for two trailing 0's and data length field. - -|Field| Length | Comments| -|-----|--------|--------| -| Data length | 1 | Length of the action data in the transaction| -| Pubkey length | 1 | | -| Pubkey | Pubkey length | | -| 0 | 1 | Pubkey trailing `0` | -| Amount | 8 | little endian in SUFs | -| Fee | 8 | little endian in SUFs | -| Actor | 8 | Serialized as `name`, must match Action authorization `actor` | -| tpid length | 1 | | -| tpid | tpid length | | -| 0 | 1 | Tpid trailing `0` | - -For both pubkey and tpid we have both length and trailing 0. The reason for this is that it makes the code on ledger slightly easier, while it has very little impact on JS code. - -*Serialization* - -The data are serialized as in APDU, except: -- the two trailing 0's are omitted -- amount and fee are converted to big endian. -The Data length field must be equal to the length of the rest of serialized data. - -### Compute witnesses +| Field | Value | +| ----- | -------- | +| CLA | `0xD7` | +| INS | `0x20` | +| P1 | command | +| P2 | variable | +| Lc | variable | + +**Data** + +| Field | Length | Comments | +| ----------------------| -------- | ----------------------------------- | +| Constant data length | 1 | | +| Variable data length | 1 | | +| Constant data | variable | Length matches constant data length | +| Variable data | variable | Length matches variable data length | + +Ledger will will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). + +**Return value** + +FINISH command returns signature and serialized transaction hash. All other commands wither do return nothing, or return newly encoded Diffie-Hellman blocks if we are within DH-encoded sections + + +## List of commands + +### INIT + +| Field | Value | +| P1 | `0x01` | +| P2 | unused | + +**Constant data** +| Field | Length | Comments | +| --------------------------------- | -------| ----------------------------------- | +(none) + +**Variable data** +| Field | Length | Comments | +| --------------------------------- | -------| ----------------------------------- | +| Chain ID | 32 | Must be mainnet or testnet chainId | +| BIP32 path len | 1 | min 2, max 10 | +| First derivation index | 4 | Little endian. Must be 44' | +| Second derivation index | 4 | Little endian. Must be 235' | +| (optional) Third derivation index | 4 | Little endian | +| ... | ... | ... | +| (optional) Last derivation index | 4 | Little endian | +| (optional) No. of remaining keys | 4 | Little endian | + +**Ledger actions** +- Validate Chain Id +- Validate derivation path, ledger accepts only certain derivation paths (see [src/securityPolicy.c](../src/securityPolicy.c)) +- Appends Chain Id to the transaction +- Display chain to the user + +### APPEND_CONST_DATA + +| Field | Value | +| P1 | `0x01` | +| P2 | unused | + +**Constant data** +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Data to append to transaction | variable | | + +**Variable data** +| Field | Length | Comments | +| --------------------------------- | -------| ----------------------------------- | +(none) + +**Ledger actions** +- Appends data to the transaction + +### SHOW_MESSAGE +---------- +Key Len +Key +Value Len +Value +---------- +=================== +APPEND_DATA +---------- +ValueFormat: NAME, STRING, UINT64 (1b) +ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) +ValueValidationArg 1 (8b) +ValueValidationArg 2 (8b) +Policy + storage (1b) higher 4 bits storage, lower 4 bits policy +Key Len: +Key +---------- +Value +=================== +START_COUNTED_SECTION +---------- +ValueFormat: must be number format (1b) +ValueValidation: NONE, LENGTH (1b) +ValueValidationArg 1 (8b) +ValueValidationArg 2 (8b) +---------- +expected length +==================== +END_COUNTED_SECTION +---------- +---------- +==================== +STORE_VALUE +P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b +---------- +---------- +Value +==================== +Start DH encryprion +---------- +---------- +Encryption pubkey +==================== +End DH encryprion +---------- +---------- +==================== +FINISH +---------- +---------- +==================== -Given a valid BIP44 path, sign TxHash by Ledger. Return the hash and the signature. -The caller is responsible for assembling the actual witness. **Command** diff --git a/doc/ins_sign_tx_commands.md b/doc/ins_sign_tx_commands.md deleted file mode 100644 index fac3baa2..00000000 --- a/doc/ins_sign_tx_commands.md +++ /dev/null @@ -1,75 +0,0 @@ -STORED1 8b, -STORED2 8b, -STORED3 64b -STORED1_DECODENAME - - - - - -General APDU structure: constDataLen, varDataLen, constData, varData -=================== -INIT ----------- ----------- -chainId -Derivation path -=================== -APPEND_CONST_DATA ----------- -data_to_append ----------- -=================== -SHOW_MESSAGE ----------- -Key Len -Key -Value Len -Value ----------- -=================== -APPEND_DATA ----------- -ValueFormat: NAME, STRING, UINT64 (1b) -ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) -ValueValidationArg 1 (8b) -ValueValidationArg 2 (8b) -Policy + storage (1b) higher 4 bits storage, lower 4 bits policy -Key Len: -Key ----------- -Value -=================== -START_COUNTED_SECTION ----------- -ValueFormat: must be number format (1b) -ValueValidation: NONE, LENGTH (1b) -ValueValidationArg 1 (8b) -ValueValidationArg 2 (8b) ----------- -expected length -==================== -END_COUNTED_SECTION ----------- ----------- -==================== -STORE_VALUE -P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b ----------- ----------- -Value -==================== -Start DH encryprion ----------- ----------- -Encryption pubkey -==================== -End DH encryprion ----------- ----------- -==================== -FINISH ----------- ----------- -==================== - diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 6a85ddec..b2085c0e 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -87,7 +87,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_DH_ENCODE(actionData.payee_public_key, [ + ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.payee_public_address)), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 75954519..b408bc0c 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -91,7 +91,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_DH_ENCODE(actionData.payee_public_key, [ + ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Payer Public Addr.", Buffer.from(actionData.payer_public_address)), ]), diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index f216e0d8..4881947f 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -34,7 +34,7 @@ export type ParsedRequestFundsData = { tpid: VarlenAsciiString //we need this to start DH encryption - - payee_public_key: Buffer //fiojs PublicKey .toUncompressed().toBuffer() + payee_public_key: HexString //content payee_public_address: VarlenAsciiString amount: VarlenAsciiString @@ -54,7 +54,7 @@ export type ParsedRecordOtherBlockchainTransactionMetadata = { tpid: VarlenAsciiString //we need this to start DH encryption - payee_public_key: any + payee_public_key: HexString //content payee_public_address: VarlenAsciiString payer_public_address: VarlenAsciiString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 5afd552b..b283584f 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -157,8 +157,11 @@ export type TransferFIOTokensData = { actor: string tpid: string + /** + * Payee public key - needed for DH encryprion. in raw format as hex string. + */ //we need this to start DH encryption - payee_public_key: any + payee_public_key: string //content payee_public_address: string amount: string diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 814e7dfb..f8961b2c 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,6 +1,6 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata } from "fio"; import {InvalidDataReason} from "../errors" -import type { +import { _Uint64_bigint, _Uint64_num, HexString, @@ -8,8 +8,9 @@ import type { ParsedTransferFIOTokensData, ParsedRequestFundsData, ParsedRecordOtherBlockchainTransactionMetadata, + PUBLIC_KEY_LENGTH, } from "../types/internal" -import { parseAscii, parseNameString, parseUint64_str, validate } from "./parse"; +import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; export function parseActionDataTransferFIOToken(data: TransferFIOTokensData): ParsedTransferFIOTokensData { @@ -23,16 +24,7 @@ export function parseActionDataTransferFIOToken(data: TransferFIOTokensData): Pa } -export function parseActionDataRequestFunds(data: RequestFundsData): ParsedRequestFundsData { - let payee_public_key: Buffer - try { - payee_public_key = data.payee_public_key.toUncompressed().toBuffer() - } - catch { - validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) - } - validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) - +export function parseActionDataRequestFunds(data: RequestFundsData): ParsedRequestFundsData { return { payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS, 3, 64), @@ -40,7 +32,7 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), - payee_public_key: payee_public_key, + payee_public_key: parseHexString(data.payee_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), @@ -52,15 +44,6 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque } export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: RecordOtherBlockchainTransactionMetadata): ParsedRecordOtherBlockchainTransactionMetadata { - let payee_public_key: Buffer - try { - payee_public_key = data.payee_public_key.toUncompressed().toBuffer() - } - catch { - validate(false, InvalidDataReason.INVALID_PUBLIC_KEY) - } - validate(payee_public_key.length == 65, InvalidDataReason.INVALID_PUBLIC_KEY) - return { fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), @@ -69,7 +52,7 @@ export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: Re actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), - payee_public_key: payee_public_key, + payee_public_key: parseHexString(data.payee_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), payer_public_address: parseAscii(data.payer_public_address, InvalidDataReason.INVALID_PAYER_PUBLIC_ADDRESS), payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_PUBLIC_ADDRESS), amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), diff --git a/ledgerjs-fio/test/device-self-test/runTestsDevice.test.ts b/ledgerjs-fio/test/device-self-test/runTestsDevice.test.ts deleted file mode 100644 index e01b7ee9..00000000 --- a/ledgerjs-fio/test/device-self-test/runTestsDevice.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type Fio from "../../src/fio" -import {getFio} from "../test_utils" - -describe("runTestsDevice", async () => { - let fio: Fio = {} as Fio - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Should run device tests", async () => { - await fio.runTests() - }) -}) diff --git a/ledgerjs-fio/test/integration/__fixtures__/getPublicKey.ts b/ledgerjs-fio/test/integration/__fixtures__/getPublicKey.ts deleted file mode 100644 index 5bf68325..00000000 --- a/ledgerjs-fio/test/integration/__fixtures__/getPublicKey.ts +++ /dev/null @@ -1,21 +0,0 @@ -export type TestCase = { - path: string, - expected: { publicKey: string} -} - -export const testsPublicKey: TestCase[] = [ - { - path: "44'/235'/0'/0/0", - expected: { - publicKey: - "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab", - }, - }, - { - path: "44'/235'/0'/0/2000", - expected: { - publicKey: - "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca", - }, - }, -] diff --git a/ledgerjs-fio/test/integration/getPublicKey.test.ts b/ledgerjs-fio/test/integration/getPublicKey.test.ts deleted file mode 100644 index d429a767..00000000 --- a/ledgerjs-fio/test/integration/getPublicKey.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import chai, {expect} from "chai" -import chaiAsPromised from 'chai-as-promised' - -import type Fio from "../../src/fio" -import {DeviceStatusError} from "../../src/fio" -import {str_to_path} from "../../src/utils/address" -import {getFio} from "../test_utils" -import type {TestCase} from "./__fixtures__/getPublicKey" -import {testsPublicKey} from "./__fixtures__/getPublicKey" - -chai.use(chaiAsPromised) - -import {Ecc} from '@fioprotocol/fiojs' - -describe("getPublicKey", async () => { - let fio: Fio = {} as Fio - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - describe("Should successfully get a single extended public key", async () => { - const test = async (tests: TestCase[]) => { - for (const {path, expected} of tests) { - const response = await fio.getPublicKey( - {path: str_to_path(path), show_or_not: false} - ) - - expect(response.publicKeyHex).to.equal(expected.publicKey) - expect(Ecc.PublicKey(response.publicKeyWIF).toUncompressed().toBuffer().toString('hex')).to.equal(expected.publicKey) - } - } - - it('fio', async () => { - await test(testsPublicKey) - }) - }) - - describe("Should successfully show a single extended public key", async () => { - const test = async (tests: TestCase[]) => { - for (const {path, expected} of tests) { - const response = await fio.getPublicKey( - {path: str_to_path(path), show_or_not: true} - ) - - expect(response.publicKeyHex).to.equal(expected.publicKey) - } - } - - it('fio', async () => { - await test(testsPublicKey) - }) - }) - - describe("Should reject invalid paths", () => { - it('path shorter than 5 indexes', async () => { - const promise = fio.getPublicKey({path: str_to_path("44'/235'/0'/0"), show_or_not: false}) - await expect(promise).to.be.rejectedWith(DeviceStatusError, "Action rejected by Ledger's security policy") - }) - - it('path contains non-zero address', async () => { - const promise = fio.getPublicKey({path: str_to_path("44'/235'/1'/0/0"), show_or_not: false}) - await expect(promise).to.be.rejected - }) - - it('path contains non-hardened address', async () => { - const promise = fio.getPublicKey({path: str_to_path("44'/235'/0/0/0"), show_or_not: false}) - await expect(promise).to.be.rejected - }) - - it('path contains non-zero chain', async () => { - const promise = fio.getPublicKey({path: str_to_path("44'/235'/0'/1/0"), show_or_not: false}) - await expect(promise).to.be.rejected - }) - - it('path too long', async () => { - const promise = fio.getPublicKey({path: str_to_path("44'/235'/0'/0/0/0"), show_or_not: false}) - await expect(promise).to.be.rejected - }) - }) - -}) diff --git a/ledgerjs-fio/test/integration/getSerial.test.ts b/ledgerjs-fio/test/integration/getSerial.test.ts deleted file mode 100644 index 911e8004..00000000 --- a/ledgerjs-fio/test/integration/getSerial.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {expect} from "chai" - -import type Fio from "../../src/fio" -import {getFio} from "../test_utils" - -describe("getSerial", async () => { - let fio: Fio = {} as Fio - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Should correctly get the serial number of the device", async () => { - const response = await fio.getSerial() - expect(response.serial.length).to.equal(14) - }) -}) diff --git a/ledgerjs-fio/test/integration/getVersion.test.ts b/ledgerjs-fio/test/integration/getVersion.test.ts deleted file mode 100644 index 74b1f434..00000000 --- a/ledgerjs-fio/test/integration/getVersion.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {expect} from "chai" - -import type Fio from "../../src/fio" -import {getFio} from "../test_utils" - -describe("getVersion", async () => { - let fio: Fio = {} as Fio - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Should correctly get the semantic version of device", async () => { - const {version, compatibility} = await fio.getVersion() - - expect(version.major).to.equal(0) - expect(version.minor).to.equal(0) - expect(compatibility.isCompatible).to.be.true - expect(compatibility.recommendedVersion).to.be.null - }) -}) diff --git a/ledgerjs-fio/test/integration/signTransaction.test.ts b/ledgerjs-fio/test/integration/signTransaction.test.ts deleted file mode 100644 index 5502f603..00000000 --- a/ledgerjs-fio/test/integration/signTransaction.test.ts +++ /dev/null @@ -1,231 +0,0 @@ -import {expect} from "chai" -import {log} from "console" -import {type} from "os" -import type {HexString, Uint64_str} from "types/internal" -import {assert} from "utils/assert" - -import type {Fio} from "../../src/fio" -import {DeviceStatusError, HARDENED} from "../../src/fio" -import type {Transaction} from "../../src/types/public" -import {hex_to_buf, uint64_to_buf} from "../../src/utils/serialize" -import {getFio} from "../test_utils" - -// We initialize constants -const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] -const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" as HexString -const PrivateKey = require('@fioprotocol/fiojs/dist/ecc/key_private') -const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) -const publicKey = privateKey.toPublic() - -const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] -const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" as HexString -const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) -const otherPublicKey = otherPrivateKey.toPublic() - -const {TextEncoder, TextDecoder} = require('text-encoding') -const fetch = require('node-fetch') -const {base64ToBinary, arrayToHex} = require('@fioprotocol/fiojs/dist/chain-numeric') -const Signature = require('@fioprotocol/fiojs/dist/ecc/signature') -const crypto = require("crypto") -var ser = require("@fioprotocol/fiojs/dist/chain-serialize") -const textDecoder = new TextDecoder() -const textEncoder = new TextEncoder() -const {JsSignatureProvider} = require('@fioprotocol/fiojs/dist/chain-jssig') - -// To do this we must perform asynchronous calls, initialized in before method -const httpEndpointTestnet = 'http://testnet.fioprotocol.io' -const httpEndpointMainnet = 'https://fio.greymass.com' -var networkInfo: any - - -// Serializes and signs transaction using fiojs -async function buildTxAndSignatureFioJs(network: string, tx: Transaction, pubkey: any) { - // We serialize the transaction - // Get the addaddress action type - const actionAddaddress = networkInfo[network].typesFioAddress.get('trnsfiopubky') - - // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) - const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) - actionAddaddress.serialize(buffer, tx.actions[0].data) - const serializedData = arrayToHex(buffer.asUint8Array()) - - // Get the actions parameter from the transaction and replace the data field with the serialized data field - var serializedAction = tx.actions[0] as any - serializedAction = { - ...serializedAction, - data: serializedData, - } - - const rawTransaction = { - ...tx, - max_net_usage_words: 0x00, - max_cpu_usage_ms: 0x00, - delay_sec: 0x00, - context_free_actions: [], - actions: [serializedAction], //Actions have to be an array - transaction_extensions: [], - } - - // Get the transaction action type - const txnaction = networkInfo[network].typesTransaction.get('transaction') - - // Serialize the transaction - const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) - txnaction.serialize(buffer2, rawTransaction) - const serializedTransaction = buffer2.asUint8Array() - - //Lets compute hash in using Signature.sign - const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) - const hash = crypto.createHash('sha256').update(msg).digest('hex') - - //Now using signatureProvider.sign - const signatureProvider = new JsSignatureProvider([PrivateKey.fromHex(privateKeyDHex).toString(), - PrivateKey.fromHex(otherPrivateKeyDHex).toString()]) - const requiredKeys = [pubkey.toString()] - const serializedContextFreeData = null - - const signedTxn = await signatureProvider.sign({ - chainId: networkInfo[network].chainId, - requiredKeys: requiredKeys, - serializedTransaction: serializedTransaction, - serializedContextFreeData: serializedContextFreeData, - }) - - return { - serializedTx: serializedTransaction, - fullMsg: msg, - hash: crypto.createHash('sha256').update(msg).digest('hex'), - signature: signedTxn.signatures[0], - } -} - -const basicTx: Transaction = { - expiration: "2021-08-28T12:50:36.686", - ref_block_num: 0x1122, - ref_block_prefix: 0x33445566, - context_free_actions: [], - actions: [{ - account: "fio.token", - name: "trnsfiopubky", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - amount: "20", - max_fee: 0x11223344, - tpid: "rewards@wallet", - actor: "aftyershcu22", - }, - }], - transaction_extensions: [], -} - -describe("signTransaction", async () => { - let fio: Fio = {} as Fio - - before(async () => { - const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() - const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() - - const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { - body: `{"account_name": "fio.token"}`, - method: 'POST', - })).json() - const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { - body: `{"account_name": "eosio.msig"}`, - method: 'POST', - })).json() - const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { - body: `{"account_name": "fio.token"}`, - method: 'POST', - })).json() - const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { - body: `{"account_name": "eosio.msig"}`, - method: 'POST', - })).json() - - // Get a Map of all the types from fio.address - const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) - const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) - const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) - const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) - networkInfo = { - "TESTNET": { - chainId: infoTestnet.chain_id, - typesFioAddress: typesFioAddressTestnet, - typesTransaction: typesTransactionTestnet, - }, - "MAINNET": { - chainId: infoMainnet.chain_id, - typesFioAddress: typesFioAddressMainnet, - typesTransaction: typesTransactionMainnet, - }, - } - - }) - - beforeEach(async () => { - fio = await getFio() - }) - - afterEach(async () => { - await (fio as any).t.close() - }) - - it("Sign testnet transaction", async () => { - const network = "TESTNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerResponse = await fio.signTransaction({path, chainId, tx}) - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - expect(ledgerResponse.txHashHex).to.be.equal(hash) - expect(signatureLedger.verify(fullMsg, publicKey)).to.be.true - expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.false - }) - - it("Sign mainnet transaction", async () => { - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, otherPublicKey) - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerResponse = await fio.signTransaction({path: otherPath, chainId, tx}) - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - expect(ledgerResponse.txHashHex).to.be.equal(hash) - expect(signatureLedger.verify(fullMsg, otherPublicKey)).to.be.true - expect(signatureLedger.verify(fullMsg, publicKey)).to.be.false - }) - - it("Invalid transaction: actor dont match", async () => { - const network = "MAINNET" - const action = {...basicTx.actions[0], name: "name.error"} - const tx: Transaction = {...basicTx, actions: [action]} - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = fio.signTransaction({path, chainId, tx}) - await expect(promise).to.be.rejected - }) - - it("Path rejected by ledger", async () => { - const network = "MAINNET" - const tx = basicTx - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const promise = fio.signTransaction({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], chainId, tx}) - await expect(promise).to.be.rejectedWith(DeviceStatusError, "Action rejected by Ledger's security policy") - }) -}) diff --git a/ledgerjs-fio/test/test_utils.ts b/ledgerjs-fio/test/test_utils.ts deleted file mode 100644 index 51872509..00000000 --- a/ledgerjs-fio/test/test_utils.ts +++ /dev/null @@ -1,16 +0,0 @@ -// @ts-ignore -import TransportNodeHid from "@ledgerhq/hw-transport-node-hid" - -import Fio from "../src/fio" - -export async function getTransport() { - return await TransportNodeHid.create(1000) -} - -export async function getFio() { - const transport = await getTransport() - - const fio = new Fio(transport); - (fio as any).t = transport - return fio -} diff --git a/ledgerjs-fio/test/tsconfig.json b/ledgerjs-fio/test/tsconfig.json deleted file mode 100644 index 2f8c6f0c..00000000 --- a/ledgerjs-fio/test/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.base", - "compilerOptions": { - "lib": ["es2019"], - "outDir": "lib" - }, - "include": ["./**/*.ts", "../src/**/*.ts"] -} diff --git a/ledgerjs-fio/test/unit/parse.test.ts b/ledgerjs-fio/test/unit/parse.test.ts deleted file mode 100644 index ac7efeed..00000000 --- a/ledgerjs-fio/test/unit/parse.test.ts +++ /dev/null @@ -1,158 +0,0 @@ -import {expect} from "chai" - -import {InvalidDataReason} from "../../src/errors" -import type {Transaction} from "../../src/types/public" -import {parseTransaction} from "../../src/utils/parse" - -const chainId = "" //XXX - -const validTx: Transaction = { - expiration: "2021-08-28T12:50:36.686", - ref_block_num: 0x1122, - ref_block_prefix: 0x33445566, - context_free_actions: [], - actions: [{ - account: "fio.token", - name: "trnsfiopubky", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - amount: "20", - max_fee: 0x11223344, - tpid: "rewards@wallet", - actor: "aftyershcu22", - }, - }], - transaction_extensions: [], -} - -describe("parse", () => { - describe("parseTransaction", () => { - it("successfully parse valid transaction", () => { - expect(() => parseTransaction(chainId, validTx)).to.not.throw() - }) - - it("fail to parse incorrect expiration", () => { - const invalidExpiration = JSON.parse(JSON.stringify(validTx)) - invalidExpiration.expiration = null - expect(() => parseTransaction(chainId, invalidExpiration)) - .to.throw(InvalidDataReason.INVALID_EXPIRATION) - }) - - it("fail to parse incorrect ref_block_num", () => { - const invalidRefBlockNum = JSON.parse(JSON.stringify(validTx)) - invalidRefBlockNum.ref_block_num = null - expect(() => parseTransaction(chainId, invalidRefBlockNum)) - .to.throw(InvalidDataReason.INVALID_REF_BLOCK_NUM) - }) - - it("fail to parse incorrect ref_block_prefix", () => { - const invalidRefBlockPrefix = JSON.parse(JSON.stringify(validTx)) - invalidRefBlockPrefix.ref_block_prefix = null - expect(() => parseTransaction(chainId, invalidRefBlockPrefix)) - .to.throw(InvalidDataReason.INVALID_REF_BLOCK_PREFIX) - }) - - it("fail to parse when there are context free actions", () => { - const someContextFreeActions = JSON.parse(JSON.stringify(validTx)) - someContextFreeActions.context_free_actions = ["A", "B"] - expect(() => parseTransaction(chainId, someContextFreeActions)) - .to.throw(InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED) - }) - - it("fail to parse when there are no actions", () => { - const noActions = JSON.parse(JSON.stringify(validTx)) - noActions.actions = [] - expect(() => parseTransaction(chainId, noActions)) - .to.throw(InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED) - }) - - it("fail to parse when there is more than one action", () => { - const moreThanOneAction = JSON.parse(JSON.stringify(validTx)) - moreThanOneAction.actions.push(moreThanOneAction.actions[0]) - expect(() => parseTransaction(chainId, moreThanOneAction)) - .to.throw(InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED) - }) - - it("fail to parse invalid account", () => { - const invalidAccount = JSON.parse(JSON.stringify(validTx)) - invalidAccount.actions[0].account = null - expect(() => parseTransaction(chainId, invalidAccount)) - .to.throw(InvalidDataReason.INVALID_ACCOUNT) - }) - - it("fail to parse invalid name", () => { - const invalidName = JSON.parse(JSON.stringify(validTx)) - invalidName.actions[0].name = null - expect(() => parseTransaction(chainId, invalidName)) - .to.throw(InvalidDataReason.INVALID_NAME) - }) - - it("fail to parse when there is no authorization", () => { - const noAuthorization = JSON.parse(JSON.stringify(validTx)) - noAuthorization.actions[0].authorization = [] - expect(() => parseTransaction(chainId, noAuthorization)) - .to.throw(InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED) - }) - - it("fail to parse when there is more than one authorization", () => { - const moreThanOneAuthorization = JSON.parse(JSON.stringify(validTx)) - moreThanOneAuthorization.actions[0].authorization - .push(moreThanOneAuthorization.actions[0].authorization[0]) - expect(() => parseTransaction(chainId, moreThanOneAuthorization)) - .to.throw(InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED) - }) - - it("fail to parse invalid actor", () => { - const invalidActor = JSON.parse(JSON.stringify(validTx)) - invalidActor.actions[0].authorization[0].actor = null - expect(() => parseTransaction(chainId, invalidActor)) - .to.throw(InvalidDataReason.INVALID_ACTOR) - }) - - it("fail to parse invalid permission", () => { - const invalidPermission = JSON.parse(JSON.stringify(validTx)) - invalidPermission.actions[0].authorization[0].permission = null - expect(() => parseTransaction(chainId, invalidPermission)) - .to.throw(InvalidDataReason.INVALID_PERMISSION) - }) - - it("fail to parse invalid payee public key", () => { - const invalidPayeePublicKey = JSON.parse(JSON.stringify(validTx)) - invalidPayeePublicKey.actions[0].data.payee_public_key = null - expect(() => parseTransaction(chainId, invalidPayeePublicKey)) - .to.throw(InvalidDataReason.INVALID_PAYEE_PUBKEY) - }) - - it("fail to parse invalid amount", () => { - const invalidAmount = JSON.parse(JSON.stringify(validTx)) - invalidAmount.actions[0].data.amount = null - expect(() => parseTransaction(chainId, invalidAmount)) - .to.throw(InvalidDataReason.INVALID_AMOUNT) - }) - - it("fail to parse invalid max fee", () => { - const invalidMaxFee = JSON.parse(JSON.stringify(validTx)) - invalidMaxFee.actions[0].data.max_fee = null - expect(() => parseTransaction(chainId, invalidMaxFee)) - .to.throw(InvalidDataReason.INVALID_MAX_FEE) - }) - - it("fail to parse invalid tpid", () => { - const invalidTpid = JSON.parse(JSON.stringify(validTx)) - invalidTpid.actions[0].data.tpid = null - expect(() => parseTransaction(chainId, invalidTpid)) - .to.throw(InvalidDataReason.INVALID_TPID) - }) - - it("fail to parse invalid actor in action data", () => { - const invalidActionDataActor = JSON.parse(JSON.stringify(validTx)) - invalidActionDataActor.actions[0].data.actor = null - expect(() => parseTransaction(chainId, invalidActionDataActor)) - .to.throw(InvalidDataReason.INVALID_ACTOR) - }) - }) -}) diff --git a/src/decodeDH.c b/src/decodeDH.c index d3b54eb3..b38ebb57 100644 --- a/src/decodeDH.c +++ b/src/decodeDH.c @@ -6,10 +6,9 @@ #include "utils.h" #include "eos_utils.h" - static const int16_t DECODING_FINISHED_MAGIC = 23456; static const uint16_t MAX_SEND_FIRST_MESSAGE = 200; -static ins_decode_context_t* ctx = &(instructionState.decodeContext); +static ins_decode_context_t *ctx = &(instructionState.decodeContext); static inline void CHECK_STAGE(decode_stage_t expected) { VALIDATE(ctx->stage == expected, ERR_INVALID_STATE); @@ -17,10 +16,10 @@ static inline void CHECK_STAGE(decode_stage_t expected) { enum { P2_NEWFUNDSREQ = 1, - P2_RECORDOBT = 2, + P2_RECORDOBT = 2, }; -//we want to wipe out all confidental data on reject +// we want to wipe out all confidental data on reject static void dh_respond_with_user_reject() { explicit_bzero(G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); explicit_bzero(ctx->buffer, SIZEOF(ctx->buffer)); @@ -32,7 +31,6 @@ static void dh_respond_with_user_reject() { // it should be set to this value at the beginning and after a UI state machine is finished static int UI_STEP_NONE = 0; - typedef struct { uint8_t length; uint8_t data[]; @@ -53,22 +51,21 @@ static struct { static void readStringWithLength(size_t *read, string_with_length_t **result) { VALIDATE(ctx->bufferLen >= 1 + *read, ERR_INVALID_DATA); - *result = (string_with_length_t *)(ctx->buffer+*read); - *read += (*result)->length + 1; //+1 for actual length - TRACE("%d, %d" ,(*result)->length, *read); + *result = (string_with_length_t *) (ctx->buffer + *read); + *read += (*result)->length + 1; //+1 for actual length + TRACE("%d, %d", (*result)->length, *read); } static void readOptionalStringWithLength(size_t *read, string_with_length_t **result) { VALIDATE(ctx->bufferLen >= 1 + *read, ERR_INVALID_DATA); if (ctx->buffer[*read] == 1) { - *read += 1; // has memo or not + *read += 1; // has memo or not readStringWithLength(read, result); - } - else { + } else { VALIDATE(ctx->buffer[*read] == 0, ERR_INVALID_DATA); - *read += 1; // has memo or not + *read += 1; // has memo or not *result = NULL; - TRACE("Not present: %d" ,*read); + TRACE("Not present: %d", *read); } } @@ -91,7 +88,7 @@ enum { static void decodeNewfundsreqMemo_ui_runStep() { TRACE("UI step %d", ctx->ui_step); - ui_callback_fn_t* this_fn = decodeNewfundsreqMemo_ui_runStep; + ui_callback_fn_t *this_fn = decodeNewfundsreqMemo_ui_runStep; UI_STEP_BEGIN(ctx->ui_step, this_fn); @@ -108,42 +105,42 @@ static void decodeNewfundsreqMemo_ui_runStep() { ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_AMOUNT) { - ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, - this_fn); + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CHAIN_CODE) { - ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, - this_fn); + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_TOKEN_CODE) { - ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, - this_fn); + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MEMO) { ASSERT(parsedContent.memo != NULL); - ui_displayAsciiBufferScreen("Memo", - parsedContent.memo->data, - parsedContent.memo->length, - this_fn); + ui_displayAsciiBufferScreen("Memo", + parsedContent.memo->data, + parsedContent.memo->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CONFIRM) { ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_RESPOND) { io_send_buf(SUCCESS, NULL, 0); - ui_displayBusy(); // needs to happen after I/O + ui_displayBusy(); // needs to happen after I/O ctx->stage = DECODE_STAGE_SEND_REST; } UI_STEP_END(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_INVALID); @@ -167,7 +164,7 @@ enum { static void decodeNewfundsreqHash_ui_runStep() { TRACE("UI step %d", ctx->ui_step); - ui_callback_fn_t* this_fn = decodeNewfundsreqHash_ui_runStep; + ui_callback_fn_t *this_fn = decodeNewfundsreqHash_ui_runStep; UI_STEP_BEGIN(ctx->ui_step, this_fn); @@ -184,49 +181,49 @@ static void decodeNewfundsreqHash_ui_runStep() { ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_AMOUNT) { - ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, - this_fn); + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CHAIN_CODE) { - ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, - this_fn); + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_TOKEN_CODE) { - ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, - this_fn); + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_HASH) { ASSERT(parsedContent.hash != NULL); - ui_displayAsciiBufferScreen("Hash", - parsedContent.hash->data, - parsedContent.hash->length, - this_fn); + ui_displayAsciiBufferScreen("Hash", + parsedContent.hash->data, + parsedContent.hash->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OFFLINE_URL) { ASSERT(parsedContent.offline_url != NULL); - ui_displayAsciiBufferScreen("Offline URL", - parsedContent.offline_url->data, - parsedContent.offline_url->length, - this_fn); + ui_displayAsciiBufferScreen("Offline URL", + parsedContent.offline_url->data, + parsedContent.offline_url->length, + this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CONFIRM) { ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_RESPOND) { io_send_buf(SUCCESS, NULL, 0); - ui_displayBusy(); // needs to happen after I/O + ui_displayBusy(); // needs to happen after I/O ctx->stage = DECODE_STAGE_SEND_REST; } UI_STEP_END(DECODE_NEWFUNDSREQ_HASH_UI_STEP_INVALID); @@ -247,19 +244,18 @@ static void decodeNewfundsreqUIFlow() { readOptionalStringWithLength(&read, &parsedContent.offline_url); VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); - if (parsedContent.memo != NULL && parsedContent.hash == NULL && parsedContent.offline_url == NULL) { + if (parsedContent.memo != NULL && parsedContent.hash == NULL && + parsedContent.offline_url == NULL) { ctx->ui_step = DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1; decodeNewfundsreqMemo_ui_runStep(); - } - else if (parsedContent.memo == NULL && parsedContent.hash != NULL && parsedContent.offline_url != NULL) { + } else if (parsedContent.memo == NULL && parsedContent.hash != NULL && + parsedContent.offline_url != NULL) { ctx->ui_step = DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1; decodeNewfundsreqHash_ui_runStep(); - } - else { + } else { THROW(ERR_INVALID_DATA); } - } // ============================== RECORDOBT state machine ============================== @@ -284,7 +280,7 @@ enum { static void decodeRecordobtMemo_ui_runStep() { TRACE("UI step %d", ctx->ui_step); - ui_callback_fn_t* this_fn = decodeRecordobtMemo_ui_runStep; + ui_callback_fn_t *this_fn = decodeRecordobtMemo_ui_runStep; UI_STEP_BEGIN(ctx->ui_step, this_fn); @@ -301,60 +297,60 @@ static void decodeRecordobtMemo_ui_runStep() { ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYER_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payer public address", - parsedContent.payer_public_address->data, - parsedContent.payer_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payer public address", + parsedContent.payer_public_address->data, + parsedContent.payer_public_address->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_AMOUNT) { - ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, - this_fn); + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CHAIN_CODE) { - ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, - this_fn); + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_TOKEN_CODE) { - ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, - this_fn); + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_STATUS) { - ui_displayAsciiBufferScreen("Status", - parsedContent.status->data, - parsedContent.status->length, - this_fn); + ui_displayAsciiBufferScreen("Status", + parsedContent.status->data, + parsedContent.status->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OBT_ID) { - ui_displayAsciiBufferScreen("Obt ID", - parsedContent.obt_id->data, - parsedContent.obt_id->length, - this_fn); + ui_displayAsciiBufferScreen("Obt ID", + parsedContent.obt_id->data, + parsedContent.obt_id->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MEMO) { ASSERT(parsedContent.memo != NULL); - ui_displayAsciiBufferScreen("Memo", - parsedContent.memo->data, - parsedContent.memo->length, - this_fn); + ui_displayAsciiBufferScreen("Memo", + parsedContent.memo->data, + parsedContent.memo->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CONFIRM) { ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_RESPOND) { io_send_buf(SUCCESS, NULL, 0); - ui_displayBusy(); // needs to happen after I/O + ui_displayBusy(); // needs to happen after I/O ctx->stage = DECODE_STAGE_SEND_REST; } UI_STEP_END(DECODE_RECORDOBT_MEMO_UI_STEP_INVALID); @@ -381,7 +377,7 @@ enum { static void decodeRecordobtHash_ui_runStep() { TRACE("UI step %d", ctx->ui_step); - ui_callback_fn_t* this_fn = decodeRecordobtHash_ui_runStep; + ui_callback_fn_t *this_fn = decodeRecordobtHash_ui_runStep; UI_STEP_BEGIN(ctx->ui_step, this_fn); @@ -398,67 +394,67 @@ static void decodeRecordobtHash_ui_runStep() { ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payee public address", + parsedContent.payee_public_address->data, + parsedContent.payee_public_address->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYER_PUBLIC_ADDRESS) { - ui_displayAsciiBufferScreen("Payer public address", - parsedContent.payer_public_address->data, - parsedContent.payer_public_address->length, - this_fn); + ui_displayAsciiBufferScreen("Payer public address", + parsedContent.payer_public_address->data, + parsedContent.payer_public_address->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_AMOUNT) { - ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, - this_fn); + ui_displayAsciiBufferScreen("Amount", + parsedContent.amount->data, + parsedContent.amount->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CHAIN_CODE) { - ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, - this_fn); + ui_displayAsciiBufferScreen("Chain code", + parsedContent.chain_code->data, + parsedContent.chain_code->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_TOKEN_CODE) { - ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, - this_fn); + ui_displayAsciiBufferScreen("Token code", + parsedContent.token_code->data, + parsedContent.token_code->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_STATUS) { - ui_displayAsciiBufferScreen("Status", - parsedContent.status->data, - parsedContent.status->length, - this_fn); + ui_displayAsciiBufferScreen("Status", + parsedContent.status->data, + parsedContent.status->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OBT_ID) { - ui_displayAsciiBufferScreen("Obt ID", - parsedContent.obt_id->data, - parsedContent.obt_id->length, - this_fn); + ui_displayAsciiBufferScreen("Obt ID", + parsedContent.obt_id->data, + parsedContent.obt_id->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_HASH) { ASSERT(parsedContent.hash != NULL); - ui_displayAsciiBufferScreen("Hash", - parsedContent.hash->data, - parsedContent.hash->length, - this_fn); + ui_displayAsciiBufferScreen("Hash", + parsedContent.hash->data, + parsedContent.hash->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OFFLINE_URL) { ASSERT(parsedContent.offline_url != NULL); - ui_displayAsciiBufferScreen("Offline URL", - parsedContent.offline_url->data, - parsedContent.offline_url->length, - this_fn); + ui_displayAsciiBufferScreen("Offline URL", + parsedContent.offline_url->data, + parsedContent.offline_url->length, + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CONFIRM) { ui_displayPrompt("Confirm", "response", this_fn, dh_respond_with_user_reject); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_RESPOND) { io_send_buf(SUCCESS, NULL, 0); - ui_displayBusy(); // needs to happen after I/O + ui_displayBusy(); // needs to happen after I/O ctx->stage = DECODE_STAGE_SEND_REST; } UI_STEP_END(DECODE_RECORDOBT_HASH_UI_STEP_INVALID); @@ -482,28 +478,27 @@ static void decodeRecordobtUIFlow() { readOptionalStringWithLength(&read, &parsedContent.offline_url); VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); - if (parsedContent.memo != NULL && parsedContent.hash == NULL && parsedContent.offline_url == NULL) { + if (parsedContent.memo != NULL && parsedContent.hash == NULL && + parsedContent.offline_url == NULL) { ctx->ui_step = DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1; decodeRecordobtMemo_ui_runStep(); - } - else if (parsedContent.memo == NULL && parsedContent.hash != NULL && parsedContent.offline_url != NULL) { + } else if (parsedContent.memo == NULL && parsedContent.hash != NULL && + parsedContent.offline_url != NULL) { ctx->ui_step = DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1; decodeRecordobtHash_ui_runStep(); - } - else { + } else { THROW(ERR_INVALID_DATA); } - } // ============================== MAIN HANDLER ============================== void decode_handleAPDU(uint8_t p1, - uint8_t p2, - uint8_t* wireDataBuffer, - size_t wireDataSize, - bool isNewCall) { + uint8_t p2, + uint8_t *wireDataBuffer, + size_t wireDataSize, + bool isNewCall) { TRACE("P1 = 0x%x, P2 = 0x%x, isNewCall = %d", p1, p2, isNewCall); if (isNewCall) { @@ -517,23 +512,22 @@ void decode_handleAPDU(uint8_t p1, VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); CHECK_STAGE(DECODE_STAGE_RECEIVE_DATA); - //we just append data to the buffer + // we just append data to the buffer VALIDATE(wireDataSize + ctx->bufferLen <= SIZEOF(ctx->buffer), ERR_DATA_TOO_LARGE); - memcpy(ctx->buffer+ctx->bufferLen, wireDataBuffer, wireDataSize); + memcpy(ctx->buffer + ctx->bufferLen, wireDataBuffer, wireDataSize); ctx->bufferLen += wireDataSize; - TRACE("Extending buffer by %d to %d", (int)wireDataSize, (int)ctx->bufferLen); + TRACE("Extending buffer by %d to %d", (int) wireDataSize, (int) ctx->bufferLen); - //respond ok + // respond ok io_send_buf(SUCCESS, NULL, 0); ui_displayBusy(); // needs to happen after I/O return; - } - else if (p1 == DECODE_STAGE_DECODE) { + } else if (p1 == DECODE_STAGE_DECODE) { CHECK_STAGE(DECODE_STAGE_RECEIVE_DATA); ctx->stage = DECODE_STAGE_DECODE; VALIDATE(p2 == P2_NEWFUNDSREQ || p2 == P2_RECORDOBT, ERR_INVALID_REQUEST_PARAMETERS); - //parse other pubkey and derivation path + // parse other pubkey and derivation path VALIDATE(wireDataSize >= PUBKEY_LENGTH + 1, ERR_INVALID_DATA); { cx_err_t err = cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, @@ -542,8 +536,10 @@ void decode_handleAPDU(uint8_t p1, &ctx->otherPubKey); VALIDATE(err == CX_OK, ERR_INVALID_DATA); } - size_t parsedSize = bip44_parseFromWire(&ctx->pathSpec, wireDataBuffer+PUBKEY_LENGTH, wireDataSize-PUBKEY_LENGTH); - VALIDATE(parsedSize == wireDataSize-PUBKEY_LENGTH, ERR_INVALID_DATA); + size_t parsedSize = bip44_parseFromWire(&ctx->pathSpec, + wireDataBuffer + PUBKEY_LENGTH, + wireDataSize - PUBKEY_LENGTH); + VALIDATE(parsedSize == wireDataSize - PUBKEY_LENGTH, ERR_INVALID_DATA); // Security policy for DH decode ENSURE_NOT_DENIED(policyForDecodeDHDecode(&ctx->pathSpec)); @@ -561,15 +557,13 @@ void decode_handleAPDU(uint8_t p1, if (p2 == P2_NEWFUNDSREQ) { decodeNewfundsreqUIFlow(); return; - } - else if (p2 == P2_RECORDOBT) { + } else if (p2 == P2_RECORDOBT) { decodeRecordobtUIFlow(); return; } THROW(ERR_INVALID_REQUEST_PARAMETERS); - } - else if (p1 == DECODE_STAGE_SEND_REST) { + } else if (p1 == DECODE_STAGE_SEND_REST) { VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); VALIDATE(wireDataSize == 0, ERR_INVALID_REQUEST_PARAMETERS); @@ -578,25 +572,27 @@ void decode_handleAPDU(uint8_t p1, ASSERT(ctx->bufferLen <= SIZEOF(ctx->buffer)); ASSERT(ctx->bufferSentLen <= ctx->bufferLen); - uint16_t toSend = ctx->bufferLen-ctx->bufferSentLen; + uint16_t toSend = ctx->bufferLen - ctx->bufferSentLen; uint16_t toSendTotal = ctx->bufferLen; if (toSend > MAX_SEND_FIRST_MESSAGE) { toSend = MAX_SEND_FIRST_MESSAGE; } - TRACE("Sent: %d, toSend: %d, Total %d",ctx->bufferSentLen, toSend, toSendTotal); - ASSERT(SIZEOF(G_io_apdu_buffer) >= SIZEOF(toSendTotal)+1+toSend); + TRACE("Sent: %d, toSend: %d, Total %d", ctx->bufferSentLen, toSend, toSendTotal); + ASSERT(SIZEOF(G_io_apdu_buffer) >= SIZEOF(toSendTotal) + 1 + toSend); memcpy(G_io_apdu_buffer, &toSendTotal, SIZEOF(toSendTotal)); - G_io_apdu_buffer[SIZEOF(toSendTotal)] = (uint8_t)toSend; - memmove(G_io_apdu_buffer+SIZEOF(toSendTotal)+1, ctx->buffer+ctx->bufferSentLen, toSend); - io_send_buf(SUCCESS, G_io_apdu_buffer, SIZEOF(toSendTotal)+1+toSend); - //We finish the apdu sequence + G_io_apdu_buffer[SIZEOF(toSendTotal)] = (uint8_t) toSend; + memmove(G_io_apdu_buffer + SIZEOF(toSendTotal) + 1, + ctx->buffer + ctx->bufferSentLen, + toSend); + io_send_buf(SUCCESS, G_io_apdu_buffer, SIZEOF(toSendTotal) + 1 + toSend); + // We finish the apdu sequence ui_displayBusy(); // needs to happen after I/O ctx->bufferSentLen += toSend; - if(ctx->bufferSentLen == ctx->bufferLen) { + if (ctx->bufferSentLen == ctx->bufferLen) { ctx->stage = DECODE_STAGE_NONE; - ui_idle(); // we are done with this tx + ui_idle(); // we are done with this tx } return; } diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index b3f0bf4e..3b5bb816 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -313,7 +313,7 @@ __noinline_due_to_stack__ static void run_dh_decode_failed_hmac_tests() { TRACE_STACK_USAGE(); //"000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69be21718ab07bc639172663927cb075fa777797e0c1c4";we - //change first byte + // change first byte char* msgHex = "100102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a0" "05576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69" diff --git a/src/securityPolicy.c b/src/securityPolicy.c index 062632f4..85ac2273 100644 --- a/src/securityPolicy.c +++ b/src/securityPolicy.c @@ -70,4 +70,3 @@ security_policy_t policyForDecodeDHDecode(const bip44_path_t* pathSpec) { ALLOW(); } - diff --git a/src/uiScreens.c b/src/uiScreens.c index cc141d48..da61af6f 100644 --- a/src/uiScreens.c +++ b/src/uiScreens.c @@ -80,7 +80,5 @@ __noinline_due_to_stack__ void ui_displayAsciiBufferScreen(const char* screenHea memcpy(buffer2, buffer, bufferSize); buffer2[bufferSize] = 0; - - ui_displayPaginatedText(screenHeader, buffer2, callback); } diff --git a/src/uiScreens.h b/src/uiScreens.h index 879a559f..f8c2b387 100644 --- a/src/uiScreens.h +++ b/src/uiScreens.h @@ -31,7 +31,6 @@ __noinline_due_to_stack__ void ui_displayAsciiBufferScreen(const char* screenHea size_t bufferSize, ui_callback_fn_t callback); - #ifdef DEVEL void run_uiScreens_test(); #endif // DEVEL diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index 69440254..c9929ee3 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -15,9 +15,9 @@ import fiojs from '@fioprotocol/fiojs' const ser = fiojs.Serialize; const Ecc = fiojs.Ecc const PrivateKey = Ecc.PrivateKey; +const PublicKey = Ecc.PublicKey; const Signature = Ecc.Signature; const arrayToHex = fiojs.Numeric.arrayToHex; -import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" import { createSharedCipher } from "@fioprotocol/fiojs/dist/encryption-fio.js"; import { checkDecrypt } from "@fioprotocol/fiojs/dist/encryption-check.js"; @@ -127,7 +127,7 @@ const txMemo = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey, + payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payee_public_address: "My payee public address", amount: "amount 1000", chain_code: "BTC", @@ -156,7 +156,7 @@ const txHash = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey, + payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payee_public_address: "My payee public address", amount: "amount 1000", chain_code: "BTC", @@ -181,7 +181,8 @@ async function buildTxUsingFioJs(network, tx, iv) { offline_url: tx.actions[0].data.offline_url, } - const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const encryptedContent = sharedCipher.encrypt('new_funds_content', content, iv) const data = { @@ -253,7 +254,8 @@ async function runTxTest(network, tx, review1, review2) { console.log(serTx.toString("hex")) console.log(encContent) - const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) console.log(Buffer.from(plaintextFio).toString("hex")) diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 2997fda4..d02cee8d 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -15,6 +15,7 @@ import fiojs from '@fioprotocol/fiojs' const ser = fiojs.Serialize; const Ecc = fiojs.Ecc const PrivateKey = Ecc.PrivateKey; +const PublicKey = Ecc.PublicKey; const Signature = Ecc.Signature; const arrayToHex = fiojs.Numeric.arrayToHex; import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" @@ -123,7 +124,7 @@ const txMemo = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey, + payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payer_public_address: "My payer public address", payee_public_address: "My payee public address", amount: "amount 1000", @@ -156,7 +157,7 @@ const txHash = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey, + payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payer_public_address: "My payer public address", payee_public_address: "My payee public address", amount: "amount 1000", @@ -186,7 +187,8 @@ async function buildTxUsingFioJs(network, tx, iv) { offline_url: tx.actions[0].data.offline_url, } - const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const encryptedContent = sharedCipher.encrypt('record_obt_data_content', content, iv) const data = { @@ -259,7 +261,8 @@ async function runTxTest(network, tx, review1, review2) { console.log(serTx.toString("hex")) console.log(encContent) - const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: tx.actions[0].data.payee_public_key.toString()}) + const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) console.log(Buffer.from(plaintextFio).toString("hex")) From 2426707f7f019ca4a75cc94e7361d47a46456a38 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Thu, 7 Jul 2022 14:02:19 +0200 Subject: [PATCH 34/83] Addaddress transaction --- MakefileTest.mk | 1 + ledgerjs-fio/src/errors/invalidDataReason.ts | 3 + .../template_addaddress.ts | 273 +++++++++++ .../transactionTemplates/template_all.ts | 4 +- ledgerjs-fio/src/types/internal.ts | 19 +- ledgerjs-fio/src/types/public.ts | 40 +- ledgerjs-fio/src/utils/parse.ts | 7 +- ledgerjs-fio/src/utils/parseTxActions.ts | 29 +- test-integration/signTransactionAddaddress.js | 435 ++++++++++++++++++ .../signTransactionAddaddress/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionAddaddress/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionAddaddress/nanos.03.png | Bin 0 -> 365 bytes .../signTransactionAddaddress/nanos.04.png | Bin 0 -> 470 bytes .../signTransactionAddaddress/nanos.05.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.06.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.07.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.08.png | Bin 0 -> 393 bytes .../signTransactionAddaddress/nanos.09.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.10.png | Bin 0 -> 356 bytes .../signTransactionAddaddress/nanos.11.png | Bin 0 -> 426 bytes .../signTransactionAddaddress/nanos.12.png | Bin 0 -> 314 bytes .../signTransactionAddaddress/nanos.13.png | Bin 0 -> 365 bytes .../signTransactionAddaddress/nanos.14.png | Bin 0 -> 470 bytes .../signTransactionAddaddress/nanos.15.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.16.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.17.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.18.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.19.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.20.png | Bin 0 -> 440 bytes .../signTransactionAddaddress/nanos.21.png | Bin 0 -> 393 bytes .../signTransactionAddaddress/nanos.22.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.23.png | Bin 0 -> 356 bytes .../signTransactionAddaddress/nanos.24.png | Bin 0 -> 426 bytes .../signTransactionAddaddress/nanos.25.png | Bin 0 -> 314 bytes .../signTransactionAddaddress/nanos.26.png | Bin 0 -> 365 bytes .../signTransactionAddaddress/nanos.27.png | Bin 0 -> 470 bytes .../signTransactionAddaddress/nanos.28.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.29.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.30.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.31.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.32.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.33.png | Bin 0 -> 440 bytes .../signTransactionAddaddress/nanos.34.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.35.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.36.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.37.png | Bin 0 -> 393 bytes .../signTransactionAddaddress/nanos.38.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.39.png | Bin 0 -> 356 bytes .../signTransactionAddaddress/nanos.40.png | Bin 0 -> 426 bytes .../signTransactionAddaddress/nanos.41.png | Bin 0 -> 314 bytes .../signTransactionAddaddress/nanos.42.png | Bin 0 -> 365 bytes .../signTransactionAddaddress/nanos.43.png | Bin 0 -> 470 bytes .../signTransactionAddaddress/nanos.44.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.45.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.46.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.47.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.48.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.49.png | Bin 0 -> 440 bytes .../signTransactionAddaddress/nanos.50.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.51.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.52.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.53.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.54.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.55.png | Bin 0 -> 436 bytes .../signTransactionAddaddress/nanos.56.png | Bin 0 -> 393 bytes .../signTransactionAddaddress/nanos.57.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.58.png | Bin 0 -> 356 bytes .../signTransactionAddaddress/nanos.59.png | Bin 0 -> 426 bytes .../signTransactionAddaddress/nanos.60.png | Bin 0 -> 314 bytes .../signTransactionAddaddress/nanos.61.png | Bin 0 -> 365 bytes .../signTransactionAddaddress/nanos.62.png | Bin 0 -> 470 bytes .../signTransactionAddaddress/nanos.63.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.64.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.65.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.66.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.67.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.68.png | Bin 0 -> 440 bytes .../signTransactionAddaddress/nanos.69.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.70.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.71.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.72.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.73.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.74.png | Bin 0 -> 436 bytes .../signTransactionAddaddress/nanos.75.png | Bin 0 -> 317 bytes .../signTransactionAddaddress/nanos.76.png | Bin 0 -> 325 bytes .../signTransactionAddaddress/nanos.77.png | Bin 0 -> 435 bytes .../signTransactionAddaddress/nanos.78.png | Bin 0 -> 393 bytes .../signTransactionAddaddress/nanos.79.png | Bin 0 -> 424 bytes .../signTransactionAddaddress/nanos.80.png | Bin 0 -> 356 bytes .../signTransactionAddaddress/nanos.81.png | Bin 0 -> 426 bytes 90 files changed, 800 insertions(+), 11 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts create mode 100644 test-integration/signTransactionAddaddress.js create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.47.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.51.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.52.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.53.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.54.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.55.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.56.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.57.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.58.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.59.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.60.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.61.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.62.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.63.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.64.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.65.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.66.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.67.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.68.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.69.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.70.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.71.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.72.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.73.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.74.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.75.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.76.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.77.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.78.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.79.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.80.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.81.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 3e8581c5..b9533988 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -37,6 +37,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionTrnsfiopubky.js) $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) + $(call run_nodejs_test,5001,40001,signTransactionAddaddress.js) $(call run_nodejs_test,5001,40001,decodeMessage.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index b6624e80..4b6af641 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -26,8 +26,10 @@ export enum InvalidDataReason { UNEXPECTED_ERROR = "Unexpected error", INVALID_PAYER_FIO_ADDRESS = "invalid payer fio address", INVALID_PAYEE_FIO_ADDRESS = "invalid payer fio address", + INVALID_FIO_ADDRESS = "invalid fio address", INVALID_PAYER_PUBLIC_ADDRESS = "invalid payer public address", INVALID_PAYEE_PUBLIC_ADDRESS = "invalid payer public address", + INVALID_PUBLIC_ADDRESS = "invalid public address", INVALID_CHAIN_CODE = "invalid chain code", INVALID_TOKEN_CODE = "invalid token code", INVALID_PUBLIC_KEY = "invalid public key", @@ -39,4 +41,5 @@ export enum InvalidDataReason { INVALID_OBT_ID = "invalid opt id", INVALID_MESSAGE = "invalid message", INVALID_CONTEXT = "invalid context", + INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES = "incorrect number of public addresses", } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts new file mode 100644 index 00000000..89c8c972 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -0,0 +1,273 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("addaddress", InvalidDataReason.UNEXPECTED_ERROR); + + +function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 1) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), + ]), + ] +} + +function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 2) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("02" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), + ]), + ] +} + +function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 3) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("03" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), + ]), + ] +} + +function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 4) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("04" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[3].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[3].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[3].public_address)), + ]), + ] +} + + +function template5(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 5) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("05" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[3].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[3].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[3].public_address)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[4].chain_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[4].token_code), 1, 10), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[4].public_address)), + ]), + ] +} + +export function template_addaddress(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const addressesCommands: Array = templateAlternative([template1, template2, template3, template4, template5])(chainId, tx, parsedPath) + validate(addressesCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Map blockchain public address"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Address", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...addressesCommands, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 691cd9ed..fd7440b9 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -6,6 +6,7 @@ import { InvalidDataReason } from "../../errors"; import { template_trnsfiopubky } from "./template_trnsfiopubky"; import { template_newfundsreq } from "./template_newfundsreq"; import { template_recordopt } from "./template_recordobt"; +import { template_addaddress } from "./template_addaddress"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -17,6 +18,7 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_trnsfiopubky, template_newfundsreq, template_recordopt, + template_addaddress, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; @@ -32,4 +34,4 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa COMMAND_APPEND_CONST_DATA("000000000000000000000000000000000000000000000000000000000000000000" as HexString), COMMAND_FINISH(parsedPath), ]; -} +} \ No newline at end of file diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 4881947f..79213292 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -68,13 +68,30 @@ export type ParsedRecordOtherBlockchainTransactionMetadata = { offline_url?: VarlenAsciiString } +export type ParsedPublicAddress = { + chain_code: VarlenAsciiString + token_code: VarlenAsciiString + public_address: VarlenAsciiString +} + +export type ParsedMapBlockchainPublicAddress = { + fio_address: VarlenAsciiString + public_addresses: Array + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} export type ParsedActionAuthorisation = { actor: NameString permission: NameString } -export type ParsedActionData = ParsedTransferFIOTokensData | ParsedRequestFundsData +export type ParsedActionData = + ParsedTransferFIOTokensData | + ParsedRequestFundsData | + ParsedRecordOtherBlockchainTransactionMetadata | + ParsedMapBlockchainPublicAddress export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index b283584f..bb25407e 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -1,4 +1,5 @@ import fiojs from "@fioprotocol/fiojs" +import { PublicKeyInput } from "crypto" /** * Type for 64-bit integers. * @@ -158,9 +159,8 @@ export type TransferFIOTokensData = { tpid: string /** - * Payee public key - needed for DH encryprion. in raw format as hex string. + * Payee public key - needed for DH encryprion. In uncomressed format as hex string. */ - //we need this to start DH encryption payee_public_key: string //content payee_public_address: string @@ -185,8 +185,10 @@ export type TransferFIOTokensData = { actor: string tpid: string - //we need this to start DH encryption - payee_public_key: any + /** + * Payee public key - needed for DH encryprion. In uncomressed format as hex string. + */ + payee_public_key: string //content payee_public_address: string payer_public_address: string @@ -200,6 +202,30 @@ export type TransferFIOTokensData = { offline_url?: string } +/** + * Represents Public addresses . + * @category Basic types + * @see [[Action]] + */ + export type PublicAddress = { + chain_code: string + token_code: string + public_address: string + } + +/** + * Represents Map blockchain public address data. + * @category Basic types + * @see [[Action]] + */ + export type MapBlockchainPublicAddress = { + fio_address: string + public_addresses: Array + max_fee: bigint_like + actor: string + tpid: string +} + /** * Represents authorisation in transaction Actions. @@ -221,7 +247,11 @@ export type Action = { account: string name: string authorization: Array - data: TransferFIOTokensData | RequestFundsData + data: + TransferFIOTokensData | + RequestFundsData | + RecordOtherBlockchainTransactionMetadata | + MapBlockchainPublicAddress } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 80f204be..5fe3c2fd 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -221,6 +221,9 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.reqobt" && action.name === "recordobt") { parsedActionData = parseActionDataRecordOtherBlockchainTransactionMetadata(action.data as RecordOtherBlockchainTransactionMetadata) } + else if (action.account === "fio.address" && action.name === "addaddress") { + parsedActionData = parseMapBlockchainPublicAddress(action.data as MapBlockchainPublicAddress) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index f8961b2c..fb752529 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,6 @@ -import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata } from "fio"; -import {InvalidDataReason} from "../errors" +import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, + PublicAddress } from "fio"; +import { InvalidDataReason } from "../errors" import { _Uint64_bigint, _Uint64_num, @@ -9,6 +10,8 @@ import { ParsedRequestFundsData, ParsedRecordOtherBlockchainTransactionMetadata, PUBLIC_KEY_LENGTH, + ParsedMapBlockchainPublicAddress, + ParsedPublicAddress, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -66,3 +69,25 @@ export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: Re } } +function parsePublicAddress(a: PublicAddress): ParsedPublicAddress { + return { + chain_code: parseAscii(a.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + token_code: parseAscii(a.token_code, InvalidDataReason.INVALID_TOKEN_CODE, 1, 10), + public_address: parseAscii(a.public_address, InvalidDataReason.INVALID_TOKEN_CODE, 3, 64), + } +} + +function parsePublicAddsesses(a: Array): Array { + validate(1 <= a.length && a.length <= 5, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + return a.map( e => parsePublicAddress(e)) +} + +export function parseMapBlockchainPublicAddress(data: MapBlockchainPublicAddress): ParsedMapBlockchainPublicAddress { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + public_addresses: parsePublicAddsesses(data.public_addresses), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} \ No newline at end of file diff --git a/test-integration/signTransactionAddaddress.js b/test-integration/signTransactionAddaddress.js new file mode 100644 index 00000000..5501338b --- /dev/null +++ b/test-integration/signTransactionAddaddress.js @@ -0,0 +1,435 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the addaddress action type + const actionAddaddress = networkInfo[network].typesTransaction2.get('addaddress') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddaddress.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.address", + name: "addaddress", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - two addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - three addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - four addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fourth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - five addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fourth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fifth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.01.png b/test-integration/snapshots/signTransactionAddaddress/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.03.png b/test-integration/snapshots/signTransactionAddaddress/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ea17ae975c78239e012201de4a31fb160ca42a GIT binary patch literal 365 zcmV-z0h0cSP)@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.04.png b/test-integration/snapshots/signTransactionAddaddress/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..0478a4729b8c50bbd76751d13fd887b1f5129279 GIT binary patch literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.07.png b/test-integration/snapshots/signTransactionAddaddress/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..cdff310f891f2f913217dce7431c9f72a6bc3b91 GIT binary patch literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.08.png b/test-integration/snapshots/signTransactionAddaddress/nanos.08.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.09.png b/test-integration/snapshots/signTransactionAddaddress/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.14.png b/test-integration/snapshots/signTransactionAddaddress/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..0478a4729b8c50bbd76751d13fd887b1f5129279 GIT binary patch literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.17.png b/test-integration/snapshots/signTransactionAddaddress/nanos.17.png new file mode 100644 index 0000000000000000000000000000000000000000..cdff310f891f2f913217dce7431c9f72a6bc3b91 GIT binary patch literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.18.png b/test-integration/snapshots/signTransactionAddaddress/nanos.18.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb GIT binary patch literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.20.png b/test-integration/snapshots/signTransactionAddaddress/nanos.20.png new file mode 100644 index 0000000000000000000000000000000000000000..079d3770d0ed83875521b9af36415c3fde49006b GIT binary patch literal 440 zcmV;p0Z0CcP)<}8kAenBw zeFI|O78o z1HU)(+;4irdl57uwJ6U3nfG?28Nh60a3Isdco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7 zQT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+ zWgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X_kL+r=qis?Z^BNE`u$*l8d{ScdHE=j zPA|PMc0eJvcz3JWZ(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.22.png b/test-integration/snapshots/signTransactionAddaddress/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.27.png b/test-integration/snapshots/signTransactionAddaddress/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..0478a4729b8c50bbd76751d13fd887b1f5129279 GIT binary patch literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.30.png b/test-integration/snapshots/signTransactionAddaddress/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..cdff310f891f2f913217dce7431c9f72a6bc3b91 GIT binary patch literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.31.png b/test-integration/snapshots/signTransactionAddaddress/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb GIT binary patch literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.33.png b/test-integration/snapshots/signTransactionAddaddress/nanos.33.png new file mode 100644 index 0000000000000000000000000000000000000000..079d3770d0ed83875521b9af36415c3fde49006b GIT binary patch literal 440 zcmV;p0Z0CcP)<}8kAenBw zeFI|O78o z1HU)(+;4irdl57uwJ6U3nfG?28Nh60a3Isdco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7 zQT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+ zWgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X_kL+r=qis?Z^BNE`u$*l8d{ScdHE=j zPA|PMc0eJvcz3JWZo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.36.png b/test-integration/snapshots/signTransactionAddaddress/nanos.36.png new file mode 100644 index 0000000000000000000000000000000000000000..a43877ffb6c67a62d3847106d73c741c3468e805 GIT binary patch literal 424 zcmV;Z0ayNsP)t4M#TmXh&hhYb~&2%U^52!bF8I{0kA*AuL;6Os^gQkW*| zHz2n?&kx+n^$pr5x0cKdz~ z`E1s?-}Oeeq7WjrsLlYL^?tM&ARJ_Hp&${g%pj#mow)PS27vXlC^Fze;S1lk7j{q7 zanFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^iL6oqzikg$EP(GQ}(DLnBr_J)mvJYO? z4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=Elbu=Hs>~8B-3e`GGegmM^Kt!`{!oq#0 z7y`TS>`fK#xw6-^mi{Z<))sSbXF>+ZElIGeDv#<~t*3tCLYr==74`*pFx~<{+MerE zaTtICM?F^#(*PjN#Wb@PB5LKR;Q9^zcQgmD(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.38.png b/test-integration/snapshots/signTransactionAddaddress/nanos.38.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.43.png b/test-integration/snapshots/signTransactionAddaddress/nanos.43.png new file mode 100644 index 0000000000000000000000000000000000000000..0478a4729b8c50bbd76751d13fd887b1f5129279 GIT binary patch literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.46.png b/test-integration/snapshots/signTransactionAddaddress/nanos.46.png new file mode 100644 index 0000000000000000000000000000000000000000..cdff310f891f2f913217dce7431c9f72a6bc3b91 GIT binary patch literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.47.png b/test-integration/snapshots/signTransactionAddaddress/nanos.47.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb GIT binary patch literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.49.png b/test-integration/snapshots/signTransactionAddaddress/nanos.49.png new file mode 100644 index 0000000000000000000000000000000000000000..079d3770d0ed83875521b9af36415c3fde49006b GIT binary patch literal 440 zcmV;p0Z0CcP)<}8kAenBw zeFI|O78o z1HU)(+;4irdl57uwJ6U3nfG?28Nh60a3Isdco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7 zQT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+ zWgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X_kL+r=qis?Z^BNE`u$*l8d{ScdHE=j zPA|PMc0eJvcz3JWZo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.52.png b/test-integration/snapshots/signTransactionAddaddress/nanos.52.png new file mode 100644 index 0000000000000000000000000000000000000000..a43877ffb6c67a62d3847106d73c741c3468e805 GIT binary patch literal 424 zcmV;Z0ayNsP)t4M#TmXh&hhYb~&2%U^52!bF8I{0kA*AuL;6Os^gQkW*| zHz2n?&kx+n^$pr5x0cKdz~ z`E1s?-}Oeeq7WjrsLlYL^?tM&ARJ_Hp&${g%pj#mow)PS27vXlC^Fze;S1lk7j{q7 zanFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^iL6oqzikg$EP(GQ}(DLnBr_J)mvJYO? z4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=Elbu=Hs>~8B-3e`GGegmM^Kt!`{!oq#0 z7y`TS>`fK#xw6-^mi{Z<))sSbXF>+ZElIGeDv#<~t*3tCLYr==74`*pFx~<{+MerE zaTtICM?F^#(*PjN#Wb@PB5LKR;Q9^zcQgmDo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.55.png b/test-integration/snapshots/signTransactionAddaddress/nanos.55.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb80a65d4c76f45ccc3c1e6b1efea32cabc4789 GIT binary patch literal 436 zcmV;l0ZaagP)F)8jbSrn;7FtU^kRycI4b{bI6v?!K z_RTi-MHjRdMI$E{wGp7xE=L;ygd;Nt5-o%l4@!u%f$NWU0#GYIk_>Yo@xYh8i?|il zZVhNT915;Xj#{K~Y=`Lte6_wz3BW1p>lU3Bju2GWN6sl(sP2qP=-D=xw?%H2*Weay zz<&_nh~DSq<;b@YPtHL+IR}wgzWusXX(e|R@6greIvobi0VW&X={C+j^dHmbAl55b zqP2?pv`iN@3+Ta>UxG!o^yEv6uPF9TW?sA`u0?lsmDh3mwfS=(0#KK^7(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.57.png b/test-integration/snapshots/signTransactionAddaddress/nanos.57.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.62.png b/test-integration/snapshots/signTransactionAddaddress/nanos.62.png new file mode 100644 index 0000000000000000000000000000000000000000..0478a4729b8c50bbd76751d13fd887b1f5129279 GIT binary patch literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.65.png b/test-integration/snapshots/signTransactionAddaddress/nanos.65.png new file mode 100644 index 0000000000000000000000000000000000000000..cdff310f891f2f913217dce7431c9f72a6bc3b91 GIT binary patch literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.66.png b/test-integration/snapshots/signTransactionAddaddress/nanos.66.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb GIT binary patch literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.68.png b/test-integration/snapshots/signTransactionAddaddress/nanos.68.png new file mode 100644 index 0000000000000000000000000000000000000000..079d3770d0ed83875521b9af36415c3fde49006b GIT binary patch literal 440 zcmV;p0Z0CcP)<}8kAenBw zeFI|O78o z1HU)(+;4irdl57uwJ6U3nfG?28Nh60a3Isdco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7 zQT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+ zWgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X_kL+r=qis?Z^BNE`u$*l8d{ScdHE=j zPA|PMc0eJvcz3JWZo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.71.png b/test-integration/snapshots/signTransactionAddaddress/nanos.71.png new file mode 100644 index 0000000000000000000000000000000000000000..a43877ffb6c67a62d3847106d73c741c3468e805 GIT binary patch literal 424 zcmV;Z0ayNsP)t4M#TmXh&hhYb~&2%U^52!bF8I{0kA*AuL;6Os^gQkW*| zHz2n?&kx+n^$pr5x0cKdz~ z`E1s?-}Oeeq7WjrsLlYL^?tM&ARJ_Hp&${g%pj#mow)PS27vXlC^Fze;S1lk7j{q7 zanFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^iL6oqzikg$EP(GQ}(DLnBr_J)mvJYO? z4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=Elbu=Hs>~8B-3e`GGegmM^Kt!`{!oq#0 z7y`TS>`fK#xw6-^mi{Z<))sSbXF>+ZElIGeDv#<~t*3tCLYr==74`*pFx~<{+MerE zaTtICM?F^#(*PjN#Wb@PB5LKR;Q9^zcQgmDo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.74.png b/test-integration/snapshots/signTransactionAddaddress/nanos.74.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb80a65d4c76f45ccc3c1e6b1efea32cabc4789 GIT binary patch literal 436 zcmV;l0ZaagP)F)8jbSrn;7FtU^kRycI4b{bI6v?!K z_RTi-MHjRdMI$E{wGp7xE=L;ygd;Nt5-o%l4@!u%f$NWU0#GYIk_>Yo@xYh8i?|il zZVhNT915;Xj#{K~Y=`Lte6_wz3BW1p>lU3Bju2GWN6sl(sP2qP=-D=xw?%H2*Weay zz<&_nh~DSq<;b@YPtHL+IR}wgzWusXX(e|R@6greIvobi0VW&X={C+j^dHmbAl55b zqP2?pv`iN@3+Ta>UxG!o^yEv6uPF9TW?sA`u0?lsmDh3mwfS=(0#KK^7o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.77.png b/test-integration/snapshots/signTransactionAddaddress/nanos.77.png new file mode 100644 index 0000000000000000000000000000000000000000..c0301ece0bf8b6a1800e06546e08fb5e8d874ac8 GIT binary patch literal 435 zcmV;k0ZjghP)Taf|-(Tp!Utd@ck(fSV{Ns=T<1ibg}XND-KL1|=mk}#wF z2T;fM>jyu|?*nug_a5;~z|+JFz_~-)3*I|yuhZS*vY3^-Z3`WxevspYX@UxM zK+ny#_C;UlD2hhTTGUp6F1j3T1rQUN`5@6kMDd`MNL#r6XcK_;^0LSYG^NkJUv~sRkV>QxS~;d{(q5L34Bjy96_|bWJ;<`|56duTx!)~Q~~IOGDj`A zPK;3kh6x}#!F6Ih)zASfB)E1Mo&f%M-EN*Je0i1cKj2TtaJ=8Ir`ab`4Gm`HJz(+G dKS`1#oDb8~OX5ehY~26=002ovPDHLkV1mqW$u9r^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.78.png b/test-integration/snapshots/signTransactionAddaddress/nanos.78.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.79.png b/test-integration/snapshots/signTransactionAddaddress/nanos.79.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Fri, 8 Jul 2022 19:55:43 +0200 Subject: [PATCH 35/83] APPEND_DATA mode for memo hash offline url --- .../transactionTemplates/commands.ts | 47 ++++++++++++++- .../template_newfundsreq.ts | 55 +----------------- .../template_recordobt.ts | 55 +----------------- src/signTransactionParse.c | 32 ++++++++++ src/signTransactionParse.h | 3 + .../signTransactionNewfundsreq.js | 23 ++------ test-integration/signTransactionRecordobt.js | 11 ++-- .../signTransactionNewfundsreq/nanos.12.png | Bin 288 -> 447 bytes .../signTransactionNewfundsreq/nanos.13.png | Bin 447 -> 377 bytes .../signTransactionNewfundsreq/nanos.14.png | Bin 377 -> 393 bytes .../signTransactionNewfundsreq/nanos.15.png | Bin 393 -> 424 bytes .../signTransactionNewfundsreq/nanos.16.png | Bin 424 -> 356 bytes .../signTransactionNewfundsreq/nanos.17.png | Bin 356 -> 426 bytes .../signTransactionNewfundsreq/nanos.18.png | Bin 426 -> 314 bytes .../signTransactionNewfundsreq/nanos.19.png | Bin 314 -> 377 bytes .../signTransactionNewfundsreq/nanos.20.png | Bin 377 -> 463 bytes .../signTransactionNewfundsreq/nanos.21.png | Bin 463 -> 468 bytes .../signTransactionNewfundsreq/nanos.22.png | Bin 468 -> 414 bytes .../signTransactionNewfundsreq/nanos.23.png | Bin 414 -> 455 bytes .../signTransactionNewfundsreq/nanos.24.png | Bin 455 -> 429 bytes .../signTransactionNewfundsreq/nanos.25.png | Bin 429 -> 382 bytes .../signTransactionNewfundsreq/nanos.26.png | Bin 382 -> 317 bytes .../signTransactionNewfundsreq/nanos.27.png | Bin 317 -> 325 bytes .../signTransactionNewfundsreq/nanos.28.png | Bin 325 -> 447 bytes .../signTransactionNewfundsreq/nanos.29.png | Bin 288 -> 377 bytes .../signTransactionNewfundsreq/nanos.30.png | Bin 447 -> 393 bytes .../signTransactionNewfundsreq/nanos.31.png | Bin 377 -> 424 bytes .../signTransactionNewfundsreq/nanos.32.png | Bin 393 -> 356 bytes .../signTransactionNewfundsreq/nanos.33.png | Bin 424 -> 426 bytes .../signTransactionNewfundsreq/nanos.34.png | Bin 356 -> 322 bytes .../signTransactionNewfundsreq/nanos.35.png | Bin 426 -> 377 bytes .../signTransactionNewfundsreq/nanos.36.png | Bin 322 -> 463 bytes .../signTransactionNewfundsreq/nanos.37.png | Bin 377 -> 468 bytes .../signTransactionNewfundsreq/nanos.38.png | Bin 463 -> 414 bytes .../signTransactionNewfundsreq/nanos.39.png | Bin 468 -> 455 bytes .../signTransactionNewfundsreq/nanos.40.png | Bin 414 -> 429 bytes .../signTransactionNewfundsreq/nanos.41.png | Bin 455 -> 382 bytes .../signTransactionNewfundsreq/nanos.42.png | Bin 429 -> 317 bytes .../signTransactionNewfundsreq/nanos.43.png | Bin 382 -> 325 bytes .../signTransactionNewfundsreq/nanos.44.png | Bin 317 -> 447 bytes .../signTransactionNewfundsreq/nanos.45.png | Bin 325 -> 377 bytes .../signTransactionNewfundsreq/nanos.46.png | Bin 319 -> 393 bytes .../signTransactionNewfundsreq/nanos.47.png | Bin 323 -> 424 bytes .../signTransactionNewfundsreq/nanos.48.png | Bin 447 -> 356 bytes .../signTransactionNewfundsreq/nanos.49.png | Bin 377 -> 426 bytes .../signTransactionNewfundsreq/nanos.50.png | Bin 393 -> 314 bytes .../signTransactionNewfundsreq/nanos.51.png | Bin 424 -> 377 bytes .../signTransactionNewfundsreq/nanos.52.png | Bin 356 -> 463 bytes .../signTransactionNewfundsreq/nanos.53.png | Bin 426 -> 468 bytes .../signTransactionNewfundsreq/nanos.54.png | Bin 314 -> 414 bytes .../signTransactionNewfundsreq/nanos.55.png | Bin 377 -> 455 bytes .../signTransactionNewfundsreq/nanos.56.png | Bin 463 -> 429 bytes .../signTransactionNewfundsreq/nanos.57.png | Bin 468 -> 382 bytes .../signTransactionNewfundsreq/nanos.58.png | Bin 414 -> 317 bytes .../signTransactionNewfundsreq/nanos.59.png | Bin 455 -> 325 bytes .../signTransactionNewfundsreq/nanos.60.png | Bin 429 -> 447 bytes .../signTransactionNewfundsreq/nanos.61.png | Bin 382 -> 377 bytes .../signTransactionNewfundsreq/nanos.62.png | Bin 317 -> 393 bytes .../signTransactionNewfundsreq/nanos.63.png | Bin 325 -> 424 bytes .../signTransactionNewfundsreq/nanos.64.png | Bin 319 -> 356 bytes .../signTransactionNewfundsreq/nanos.65.png | Bin 323 -> 426 bytes .../signTransactionNewfundsreq/nanos.66.png | Bin 447 -> 0 bytes .../signTransactionNewfundsreq/nanos.67.png | Bin 377 -> 0 bytes .../signTransactionNewfundsreq/nanos.68.png | Bin 393 -> 0 bytes .../signTransactionNewfundsreq/nanos.69.png | Bin 424 -> 0 bytes .../signTransactionNewfundsreq/nanos.70.png | Bin 356 -> 0 bytes .../signTransactionNewfundsreq/nanos.71.png | Bin 426 -> 0 bytes .../signTransactionRecordobt/nanos.16.png | Bin 288 -> 447 bytes .../signTransactionRecordobt/nanos.17.png | Bin 447 -> 377 bytes .../signTransactionRecordobt/nanos.18.png | Bin 377 -> 393 bytes .../signTransactionRecordobt/nanos.19.png | Bin 393 -> 424 bytes .../signTransactionRecordobt/nanos.20.png | Bin 424 -> 356 bytes .../signTransactionRecordobt/nanos.21.png | Bin 356 -> 426 bytes .../signTransactionRecordobt/nanos.22.png | Bin 426 -> 314 bytes .../signTransactionRecordobt/nanos.23.png | Bin 314 -> 341 bytes .../signTransactionRecordobt/nanos.24.png | Bin 341 -> 390 bytes .../signTransactionRecordobt/nanos.25.png | Bin 390 -> 463 bytes .../signTransactionRecordobt/nanos.26.png | Bin 463 -> 468 bytes .../signTransactionRecordobt/nanos.27.png | Bin 468 -> 414 bytes .../signTransactionRecordobt/nanos.28.png | Bin 414 -> 455 bytes .../signTransactionRecordobt/nanos.29.png | Bin 455 -> 436 bytes .../signTransactionRecordobt/nanos.30.png | Bin 436 -> 429 bytes .../signTransactionRecordobt/nanos.31.png | Bin 429 -> 382 bytes .../signTransactionRecordobt/nanos.32.png | Bin 382 -> 317 bytes .../signTransactionRecordobt/nanos.33.png | Bin 317 -> 325 bytes .../signTransactionRecordobt/nanos.34.png | Bin 325 -> 290 bytes .../signTransactionRecordobt/nanos.35.png | Bin 290 -> 278 bytes .../signTransactionRecordobt/nanos.36.png | Bin 278 -> 447 bytes .../signTransactionRecordobt/nanos.37.png | Bin 288 -> 377 bytes .../signTransactionRecordobt/nanos.38.png | Bin 447 -> 393 bytes .../signTransactionRecordobt/nanos.39.png | Bin 377 -> 424 bytes .../signTransactionRecordobt/nanos.40.png | Bin 393 -> 356 bytes .../signTransactionRecordobt/nanos.41.png | Bin 424 -> 426 bytes .../signTransactionRecordobt/nanos.42.png | Bin 356 -> 322 bytes .../signTransactionRecordobt/nanos.43.png | Bin 426 -> 341 bytes .../signTransactionRecordobt/nanos.44.png | Bin 322 -> 390 bytes .../signTransactionRecordobt/nanos.45.png | Bin 341 -> 463 bytes .../signTransactionRecordobt/nanos.46.png | Bin 390 -> 468 bytes .../signTransactionRecordobt/nanos.47.png | Bin 463 -> 414 bytes .../signTransactionRecordobt/nanos.48.png | Bin 468 -> 455 bytes .../signTransactionRecordobt/nanos.49.png | Bin 414 -> 436 bytes .../signTransactionRecordobt/nanos.50.png | Bin 455 -> 429 bytes .../signTransactionRecordobt/nanos.51.png | Bin 436 -> 382 bytes .../signTransactionRecordobt/nanos.52.png | Bin 429 -> 317 bytes .../signTransactionRecordobt/nanos.53.png | Bin 382 -> 325 bytes .../signTransactionRecordobt/nanos.54.png | Bin 317 -> 290 bytes .../signTransactionRecordobt/nanos.55.png | Bin 325 -> 278 bytes .../signTransactionRecordobt/nanos.56.png | Bin 290 -> 447 bytes .../signTransactionRecordobt/nanos.57.png | Bin 278 -> 377 bytes .../signTransactionRecordobt/nanos.58.png | Bin 319 -> 393 bytes .../signTransactionRecordobt/nanos.59.png | Bin 323 -> 424 bytes .../signTransactionRecordobt/nanos.60.png | Bin 447 -> 356 bytes .../signTransactionRecordobt/nanos.61.png | Bin 377 -> 426 bytes .../signTransactionRecordobt/nanos.62.png | Bin 393 -> 314 bytes .../signTransactionRecordobt/nanos.63.png | Bin 424 -> 341 bytes .../signTransactionRecordobt/nanos.64.png | Bin 356 -> 390 bytes .../signTransactionRecordobt/nanos.65.png | Bin 426 -> 463 bytes .../signTransactionRecordobt/nanos.66.png | Bin 314 -> 468 bytes .../signTransactionRecordobt/nanos.67.png | Bin 341 -> 414 bytes .../signTransactionRecordobt/nanos.68.png | Bin 390 -> 455 bytes .../signTransactionRecordobt/nanos.69.png | Bin 463 -> 436 bytes .../signTransactionRecordobt/nanos.70.png | Bin 468 -> 429 bytes .../signTransactionRecordobt/nanos.71.png | Bin 414 -> 382 bytes .../signTransactionRecordobt/nanos.72.png | Bin 455 -> 317 bytes .../signTransactionRecordobt/nanos.73.png | Bin 436 -> 325 bytes .../signTransactionRecordobt/nanos.74.png | Bin 429 -> 290 bytes .../signTransactionRecordobt/nanos.75.png | Bin 382 -> 278 bytes .../signTransactionRecordobt/nanos.76.png | Bin 317 -> 447 bytes .../signTransactionRecordobt/nanos.77.png | Bin 325 -> 377 bytes .../signTransactionRecordobt/nanos.78.png | Bin 290 -> 393 bytes .../signTransactionRecordobt/nanos.79.png | Bin 278 -> 424 bytes .../signTransactionRecordobt/nanos.80.png | Bin 319 -> 356 bytes .../signTransactionRecordobt/nanos.81.png | Bin 323 -> 426 bytes .../signTransactionRecordobt/nanos.82.png | Bin 447 -> 0 bytes .../signTransactionRecordobt/nanos.83.png | Bin 377 -> 0 bytes .../signTransactionRecordobt/nanos.84.png | Bin 393 -> 0 bytes .../signTransactionRecordobt/nanos.85.png | Bin 424 -> 0 bytes .../signTransactionRecordobt/nanos.86.png | Bin 356 -> 0 bytes .../signTransactionRecordobt/nanos.87.png | Bin 426 -> 0 bytes 139 files changed, 93 insertions(+), 133 deletions(-) delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.66.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.67.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.68.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.69.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.70.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.71.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.82.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.83.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.84.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.85.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.86.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.87.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 0e735c5d..3fcf135d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -1,9 +1,10 @@ import { assert } from "console"; -import { InvalidDataReason } from "errors" -import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path } from "types/internal" -import { buf_to_hex, path_to_buf, varuint32_to_buf } from "../../utils/serialize"; +import { InvalidDataReason } from "../../errors" +import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path, VarlenAsciiString } from "types/internal" +import { buf_to_hex, path_to_buf, uint8_to_buf, varuint32_to_buf } from "../../utils/serialize"; import type { SignedTransactionData } from "../../types/public"; import { chunkBy } from "../../utils/ioHelpers" +import { validate } from "../../utils/parse"; export const enum COMMAND { NONE = 0x00, @@ -27,6 +28,8 @@ export const enum VALUE_FORMAT { VALUE_FORMAT_FIO_AMOUNT = 0x10, VALUE_FORMAT_UINT64 = 0x14, VALUE_FORMAT_VARUINT32 = 0x17, + + VALUE_FORMAT_MEMO_HASH = 0x20, } export const enum VALUE_VALIDATION { @@ -336,3 +339,41 @@ export function ADD_STORAGE_CHECK(check: VALUE_STORAGE_COMPARE, c: Command): Com } } +export function COMMAND_MEMO_HASH(memo?: VarlenAsciiString, hash?: VarlenAsciiString, offline_url?: VarlenAsciiString): Command { + var varData: Buffer = Buffer.from(""); + if (memo === undefined) { + validate(hash !== undefined, InvalidDataReason.INVALID_HASH); + validate(offline_url !== undefined, InvalidDataReason.INVALID_OFFLINE_URL); + varData = Buffer.concat([ + Buffer.from("0001", "hex"), + uint8_to_buf(hash.length as Uint8_t), + Buffer.from(hash), + Buffer.from("01", "hex"), + uint8_to_buf(offline_url.length as Uint8_t), + Buffer.from(offline_url), + ]) + } + else { + validate(hash === undefined, InvalidDataReason.INVALID_HASH); + validate(hash === undefined, InvalidDataReason.INVALID_OFFLINE_URL); + varData = Buffer.concat([ + Buffer.from("01", "hex"), + uint8_to_buf(memo.length as Uint8_t), + Buffer.from(memo), + Buffer.from("0000", "hex"), + ]) + } + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_MEMO_HASH, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: varData, + txLen: varData.length, + } +} \ No newline at end of file diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index b2085c0e..ea6876fa 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMANDS_DH_ENCODE, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE } from "./commands" + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE, COMMAND_MEMO_HASH } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -9,54 +9,6 @@ import { InvalidDataReason } from "../../errors"; const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); const CONTRACT_NAME = parseNameString("newfundsreq", InvalidDataReason.UNEXPECTED_ERROR); -function template_newfundsreq_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); - validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); - - const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; - - //Matching template - if (!actionData.memo) { - return [] - } - validate(!actionData.hash, InvalidDataReason.INVALID_HASH) - validate(!actionData.offline_url, InvalidDataReason.INVALID_OFFLINE_URL) - - return [ - COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo as string)), - ]), - COMMAND_APPEND_CONST_DATA("0000" as HexString), - ] -} - -function template_newfundsreq_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); - validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); - - const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; - - //Matching template - if (!actionData.hash || !actionData.offline_url) { - return [] - } - validate(!actionData.memo, InvalidDataReason.INVALID_MEMO) - - return [ - COMMAND_APPEND_CONST_DATA("0001" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Hash", Buffer.from(actionData.hash)), - ], 0, 0xFFFFFFFFFFFF), - COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Offline url", Buffer.from(actionData.offline_url)), - ], 0, 0xFFFFFFFFFFFF), - ] -} - export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { // Validate template expectations validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); @@ -69,9 +21,6 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; - const memoAndHash: Array = templateAlternative([template_newfundsreq_memo, template_newfundsreq_hash])(chainId, tx, parsedPath) - validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) - return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Request Funds"), @@ -100,7 +49,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), ]), - ...memoAndHash, + COMMAND_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 296), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index b408bc0c..14e6589f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_MEMO_HASH } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -9,54 +9,6 @@ import { InvalidDataReason } from "../../errors"; const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); const CONTRACT_NAME = parseNameString("recordobt", InvalidDataReason.UNEXPECTED_ERROR); -function template_recordopt_memo(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); - validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); - - const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; - - //Matching template - if (!actionData.memo) { - return [] - } - validate(!actionData.hash, InvalidDataReason.INVALID_HASH) - validate(!actionData.offline_url, InvalidDataReason.INVALID_OFFLINE_URL) - - return [ - COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Memo", Buffer.from(actionData.memo as string)), - ]), - COMMAND_APPEND_CONST_DATA("0000" as HexString), - ] -} - -function template_recordopt_hash(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); - validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); - - const actionData: ParsedRequestFundsData = tx.actions[0].data as ParsedRequestFundsData; - - //Matching template - if (!actionData.hash || !actionData.offline_url) { - return [] - } - validate(!actionData.memo, InvalidDataReason.INVALID_MEMO) - - return [ - COMMAND_APPEND_CONST_DATA("0001" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Hash", Buffer.from(actionData.hash)), - ], 0, 0xFFFFFFFFFFFF), - COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Offline url", Buffer.from(actionData.offline_url)), - ], 0, 0xFFFFFFFFFFFF), - ] -} - export function template_recordopt(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { // Validate template expectations validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); @@ -70,9 +22,6 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa const actionData: ParsedRecordOtherBlockchainTransactionMetadata = tx.actions[0].data as ParsedRecordOtherBlockchainTransactionMetadata; const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; - const memoAndHash: Array = templateAlternative([template_recordopt_memo, template_recordopt_hash])(chainId, tx, parsedPath) - validate(memoAndHash.length !== 0, InvalidDataReason.INVALID_MEMO) - return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), COMMAND_SHOW_MESSAGE("Action", "Record other blockchain transaction metadata"), @@ -113,7 +62,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Obt ID", Buffer.from(actionData.obt_id)), ]), - ...memoAndHash, + COMMAND_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 432), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index fc99fcf4..9036d061 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -74,6 +74,34 @@ static void displayName(const uint8_t *value, MAX_DISPLAY_VALUE_LENGTH); // null terminated, no return vallue } +static void displayMemoHash(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + TRACE_BUFFER(value, valueLen); + VALIDATE(valueLen >= 1, ERR_INVALID_DATA); + if (value[0] == 1) { // has memo + VALIDATE(valueLen >= 2, ERR_INVALID_DATA); + size_t memoLen = value[1]; + VALIDATE(valueLen == memoLen + 4, + ERR_INVALID_DATA); // has memo, memo length, memo, no hash, no url + VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); + VALIDATE(value[3 + memoLen] == 0, ERR_INVALID_DATA); + } else if (value[0] == 0) { // no memo + TRACE("No memo"); + VALIDATE(valueLen >= 3, ERR_INVALID_DATA); + VALIDATE(value[1] == 1, ERR_INVALID_DATA); // has hash + size_t hashLen = value[2]; + VALIDATE(valueLen >= hashLen + 5, ERR_INVALID_DATA); + VALIDATE(value[hashLen + 3] == 1, ERR_INVALID_DATA); // has url + size_t urlLen = value[hashLen + 4]; + VALIDATE(valueLen == hashLen + urlLen + 5, ERR_INVALID_DATA); + } else { + VALIDATE(false, ERR_INVALID_DATA); + } + // These data are not meant to e displayed at themoement + snprintf(display, MAX_DISPLAY_VALUE_LENGTH, "NOT IMPLEMENTED"); +} + //-------------------- NUMBER PARSING FUNCTIONS ---------------------- static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { @@ -220,6 +248,10 @@ void parseValueToDisplay(value_format_t format, displayNumber(number, display); break; } + case VALUE_FORMAT_MEMO_HASH: { + displayMemoHash(value, valueLen, display); + break; + } default: THROW(ERR_INVALID_DATA); #undef CASE diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index f95d072f..0cbe5737 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -15,6 +15,9 @@ typedef enum { VALUE_FORMAT_FIO_AMOUNT = 0x10, VALUE_FORMAT_UINT64 = 0x14, VALUE_FORMAT_VARUINT32 = 0x17, + + // Special + VALUE_FORMAT_MEMO_HASH = 0x20, } value_format_t; typedef enum { diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index c9929ee3..e16ff224 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -68,18 +68,6 @@ const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), ab const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtTestnet.abi) -/*console.log(typesFioAddressMainnet) -console.log(typesFioAddressMainnet) -console.log(typesTransactionMainnet) -console.log(typesTransaction2Mainnet) -console.log(typesTransactionMainnet.get('transaction')) -console.log(typesTransactionMainnet.get('transaction_header')) -console.log(typesTransactionMainnet.get('action')) -console.log(typesTransactionMainnet.get('permission_level')) -console.log(typesFioAddressMainnet.get('trnsfiopubky')) -console.log(typesTransaction2Mainnet.get('newfundsreq'))*/ - - const networkInfo = { "TESTNET": { chainId: infoTestnet.chain_id, @@ -272,28 +260,27 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence1 = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 3]; -const longSequence2 = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 3]; +const longSequence = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3]; const secondSequence = [1, 3] testStep(" - - -", "Sign testnet transaction - memo"); { - await runTxTest("TESTNET", txMemo, longSequence1, secondSequence) + await runTxTest("TESTNET", txMemo, longSequence, secondSequence) } testStep(" - - -", "Sign testnet mainnet - memo"); { - await runTxTest("MAINNET", txMemo, longSequence1, secondSequence) + await runTxTest("MAINNET", txMemo, longSequence, secondSequence) } testStep(" - - -", "Sign testnet transaction - hash"); { - await runTxTest("TESTNET", txHash, longSequence2, secondSequence) + await runTxTest("TESTNET", txHash, longSequence, secondSequence) } testStep(" - - -", "Sign testnet mainnet - hash"); { - await runTxTest("MAINNET", txHash, longSequence2, secondSequence) + await runTxTest("MAINNET", txHash, longSequence, secondSequence) } await transport.close() diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index d02cee8d..387313fc 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -279,28 +279,27 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence1 = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3]; -const longSequence2 = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3]; +const longSequence = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3]; const secondSequence = [1, 3] testStep(" - - -", "Sign testnet transaction - memo"); { - await runTxTest("TESTNET", txMemo, longSequence1, secondSequence) + await runTxTest("TESTNET", txMemo, longSequence, secondSequence) } testStep(" - - -", "Sign testnet mainnet - memo"); { - await runTxTest("MAINNET", txMemo, longSequence1, secondSequence) + await runTxTest("MAINNET", txMemo, longSequence, secondSequence) } testStep(" - - -", "Sign testnet transaction - hash"); { - await runTxTest("TESTNET", txHash, longSequence2, secondSequence) + await runTxTest("TESTNET", txHash, longSequence, secondSequence) } testStep(" - - -", "Sign testnet mainnet - hash"); { - await runTxTest("MAINNET", txHash, longSequence2, secondSequence) + await runTxTest("MAINNET", txHash, longSequence, secondSequence) } await transport.close() diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png index d46659f7e6a6db71477a4300cc8603ce5c4760ed..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z_0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g0_*!tN;K2 delta 261 zcmV+g0s8*G1E2zsBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjf8qs)D diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipiC1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeHq)$ delta 421 zcmV;W0b2g~0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfMsvvo diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.14.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.14.png index f26fb07e66f049995a83eb93b725e472eda6d16c..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Xs0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ;WtL;wH) delta 350 zcmV-k0iphh1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.17.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.17.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png index 06140342c291c111e9c068e5607f9a041bc53592..f6f4aeaaab9a2b581ed0187deea1319daa46cafc 100644 GIT binary patch delta 350 zcmV-k0ipi70{H@vB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f*tUv`Tzg` delta 287 zcmV+)0pR}m0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1idog17(x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..b1fbe22ce3eb57a0a62a8e33766658e822f72279 100644 GIT binary patch delta 437 zcmV;m0ZRV)0?z}GB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjf)gIiZ delta 350 zcmV-k0ipiS1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f;-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f-x=6Pyhe` delta 437 zcmV;m0ZRVV1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfm#N%? diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png index 8524d356e7311bd4f4a905c37048883fe3cae241..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?{1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nVvvE={& delta 442 zcmV;r0Y(0v1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g4~499{>OV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.23.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.23.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE^+1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfiT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mvfvDg3r diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%q1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1oTez#aeq delta 429 zcmV;e0aE_01IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfq`1#$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png index bafc0e320244351797fec5739b9a6d9029cf45e8..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D=1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g0c Bro{jN delta 403 zcmV;E0c`&M0<8m(B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1iOvz*GPL diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.26.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.26.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf@ZiYM delta 298 zcmV+_0oDG$1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g5U~+7ytkO diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png index d46659f7e6a6db71477a4300cc8603ce5c4760ed..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 351 zcmV-l0igb%0{H@vBYy!vNklfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1n63uFC)b delta 261 zcmV+g0s8*=0-yqrBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjfRPT6< diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.30.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.30.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfkJ!kS diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.31.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.31.png index f26fb07e66f049995a83eb93b725e472eda6d16c..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1m49f`|YB delta 329 zcmV-P0k;0a0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m9 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..f6f4aeaaab9a2b581ed0187deea1319daa46cafc 100644 GIT binary patch delta 350 zcmV-k0iph?1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f(dP?>i_@% delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png index 076a821e03587e469d3c6332c0b098513e95630d..b1fbe22ce3eb57a0a62a8e33766658e822f72279 100644 GIT binary patch delta 437 zcmV;m0ZRVD0?z}GB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfcRSp0 delta 295 zcmV+?0oeY}1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1lJwf^+}? diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(1#0@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f_M1Oc>n+a delta 350 zcmV-k0ipiX1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$fT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1n8@vETpz delta 437 zcmV;m0ZRU!1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfJA2$s diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png index 8524d356e7311bd4f4a905c37048883fe3cae241..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_d1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf<`d74 delta 442 zcmV;r0Y(1D1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f+JneNB{r; diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%B1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1m57zx4nB delta 387 zcmV-}0et?g1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lO9vAzHR diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6EF1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hO3 Brr!Vn delta 429 zcmV;e0aE_{0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfD%j7s diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png index bafc0e320244351797fec5739b9a6d9029cf45e8..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$s1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1n!Sz!Lxf diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.43.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.43.png index 119eb22fc2111523375a127e32bc66252e40bfbb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDHg0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f+$9VRsaA1 delta 355 zcmV-p0i6ED0{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hBi BrrZDk diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 421 zcmV;W0b2gO0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe+?*IS* delta 298 zcmV+_0oDHb0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f+BQ-Q2+n{ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qA7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfBkIWS diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.49.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.49.png index f26fb07e66f049995a83eb93b725e472eda6d16c..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ delta 350 zcmV-k0iph?1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1nArf=K`X delta 366 zcmV-!0g?W?0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ<+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f(Egu=>Px# delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|?dH delta 329 zcmV-P0k;0n1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mFAnc diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(0*1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g7G}hD*ylh delta 400 zcmV;B0dM})1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY`55Eim diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.54.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.54.png index 06140342c291c111e9c068e5607f9a041bc53592..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?t0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1l^$vC04d delta 287 zcmV+)0pR|g1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1n{jf?fas diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_?0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfB6rWT delta 350 zcmV-k0ipiK1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f-w`R2mk;8 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%y1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1fzmz$O3y delta 437 zcmV;m0ZRU@1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfRTkV_ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png index 8524d356e7311bd4f4a905c37048883fe3cae241..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6ES1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1h^S BrtAO! delta 442 zcmV;r0Y(1)0@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f`FROegFUf diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$d1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqvH$=8 delta 387 zcmV-}0et?w0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m7ZvCRMg diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.59.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.59.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG;1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g6Ud=AOHXW delta 429 zcmV;e0aE_O0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf%S6wA diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png index bafc0e320244351797fec5739b9a6d9029cf45e8..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 421 zcmV;W0b2g81HS{1B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf%M8f5 delta 403 zcmV;E0c`%i1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1n?kz!m@i diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.61.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.61.png index 119eb22fc2111523375a127e32bc66252e40bfbb..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipi>0{H@vB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe)%kC;$Ke delta 355 zcmV-p0i6E%0{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1jwx Brw{-D diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.62.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.62.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W_0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png index fadc23a161829705363042782e217be337d6b7af..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAt0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2hCG0RR91 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.64.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.64.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0X0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1)~B!31;L_t(|ob8yw5`!QNM6px<|ATv|2c`@bl14@*8@lgQEJodp zL6Q<7gb;$r`=t%-Cj#^EzJY(|>3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qA4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYp@V@#0 delta 296 zcmV+@0oVSj1H%H4B!3D?L_t(|ob8#>4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.69.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.69.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g0_*!tN;K2 delta 261 zcmV+g0s8*G1E2zsBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjf8qs)D diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.17.png b/test-integration/snapshots/signTransactionRecordobt/nanos.17.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipiC1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeHq)$ delta 421 zcmV;W0b2g~0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfMsvvo diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.18.png b/test-integration/snapshots/signTransactionRecordobt/nanos.18.png index f26fb07e66f049995a83eb93b725e472eda6d16c..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Xs0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ;WtL;wH) delta 350 zcmV-k0iphh1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.21.png b/test-integration/snapshots/signTransactionRecordobt/nanos.21.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.23.png b/test-integration/snapshots/signTransactionRecordobt/nanos.23.png index 06140342c291c111e9c068e5607f9a041bc53592..c0150041dd070cf4bc71a173bba9b4fb4ff7d507 100644 GIT binary patch delta 314 zcmV-A0mc5h0@VVLB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1h33f|LLN diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.24.png b/test-integration/snapshots/signTransactionRecordobt/nanos.24.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..f23e034602c291e3ffec78d647ca8792429e4b2b 100644 GIT binary patch delta 363 zcmV-x0hIpL0)_*SB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1ko9uS);` delta 314 zcmV-A0mc4?1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|={lcj{pDw diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.25.png b/test-integration/snapshots/signTransactionRecordobt/nanos.25.png index f23e034602c291e3ffec78d647ca8792429e4b2b..b1fbe22ce3eb57a0a62a8e33766658e822f72279 100644 GIT binary patch delta 437 zcmV;m0ZRUc1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjf5`)|| delta 363 zcmV-x0hIpF1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1kS#uSNg> diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.26.png b/test-integration/snapshots/signTransactionRecordobt/nanos.26.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(1L1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f-x=6Pyhe` delta 437 zcmV;m0ZRVV1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfm#N%? diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.27.png b/test-integration/snapshots/signTransactionRecordobt/nanos.27.png index 8524d356e7311bd4f4a905c37048883fe3cae241..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?{1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nVvvE={& delta 442 zcmV;r0Y(0v1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g4~499{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.28.png b/test-integration/snapshots/signTransactionRecordobt/nanos.28.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE^+1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfiT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mvfvDg3r diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.29.png b/test-integration/snapshots/signTransactionRecordobt/nanos.29.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 100644 GIT binary patch delta 410 zcmV;L0cHNj1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ EfO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfuyfCE diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.30.png b/test-integration/snapshots/signTransactionRecordobt/nanos.30.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%X1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1nOXzzYBX delta 410 zcmV;L0cHNJ1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*MiFM*si- diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.31.png b/test-integration/snapshots/signTransactionRecordobt/nanos.31.png index bafc0e320244351797fec5739b9a6d9029cf45e8..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D=1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g0c Bro{jN delta 403 zcmV;E0c`&M0<8m(B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1iOvz*GPL diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.32.png b/test-integration/snapshots/signTransactionRecordobt/nanos.32.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.33.png b/test-integration/snapshots/signTransactionRecordobt/nanos.33.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=~v3jil delta 299 zcmV+`0o4AY0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mFrg8Kjf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.35.png b/test-integration/snapshots/signTransactionRecordobt/nanos.35.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<0N~Gg0owtf_$7FZu>b%7 M07*qoM6N<$f*KEcegFUf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.36.png b/test-integration/snapshots/signTransactionRecordobt/nanos.36.png index c0236f40e1f682660f35f989589a0948eac7ab57..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z*0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$f~FP7q5uE@ delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1nyo BcBudW diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.37.png b/test-integration/snapshots/signTransactionRecordobt/nanos.37.png index d46659f7e6a6db71477a4300cc8603ce5c4760ed..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 351 zcmV-l0igb%0{H@vBYy!vNklfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1n63uFC)b delta 261 zcmV+g0s8*=0-yqrBYyzrNklCQy**THu@~5klZL zE$I~j003~ry2!c|{*1!Y`T(=@vOYi)AsZg=pW*)JFdMIj0=r&8wd64QQ9tX3&NHBY z90wp2lelgSR7rS*jd7d-Ig-!ph3j1~P?7Br)W4h)lA``iRDKDI`nN(1>>&o0*t`Vs zR&xf}?A8Q8v@07mVv1oYpVsNSX$r$!OLf)|{j-5;*#PPppv+dL%qq1`N`00000 LNkvXXu0mjfRPT6< diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.38.png b/test-integration/snapshots/signTransactionRecordobt/nanos.38.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfkJ!kS diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.39.png b/test-integration/snapshots/signTransactionRecordobt/nanos.39.png index f26fb07e66f049995a83eb93b725e472eda6d16c..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1m49f`|YB delta 329 zcmV-P0k;0a0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m9 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.43.png b/test-integration/snapshots/signTransactionRecordobt/nanos.43.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..c0150041dd070cf4bc71a173bba9b4fb4ff7d507 100644 GIT binary patch delta 314 zcmV-A0mc5R1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY`5Wfrn diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.44.png b/test-integration/snapshots/signTransactionRecordobt/nanos.44.png index 076a821e03587e469d3c6332c0b098513e95630d..f23e034602c291e3ffec78d647ca8792429e4b2b 100644 GIT binary patch delta 363 zcmV-x0hIp20)_*SB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1jr|uQ&hz delta 295 zcmV+?0oeYA1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1iLSf-3+3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..b1fbe22ce3eb57a0a62a8e33766658e822f72279 100644 GIT binary patch delta 437 zcmV;m0ZRVW0?z}GB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfm#W-@ delta 314 zcmV-A0mc5$1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g0mFQ2LJ#7 delta 363 zcmV-x0hIpK1BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1ko8uS);` diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.47.png b/test-integration/snapshots/signTransactionRecordobt/nanos.47.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et??1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1n8@vETpz delta 437 zcmV;m0ZRU!1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfJA2$s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.48.png b/test-integration/snapshots/signTransactionRecordobt/nanos.48.png index 8524d356e7311bd4f4a905c37048883fe3cae241..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_d1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf<`d74 delta 442 zcmV;r0Y(1D1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f+JneNB{r; diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.49.png b/test-integration/snapshots/signTransactionRecordobt/nanos.49.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 100644 GIT binary patch delta 410 zcmV;L0cHN41GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef&xp+H~;_u delta 387 zcmV-}0et?n1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lt}vBdxY diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.50.png b/test-integration/snapshots/signTransactionRecordobt/nanos.50.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%q1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1oTez#aeq delta 429 zcmV;e0aE_01IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfq`1#$ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.51.png b/test-integration/snapshots/signTransactionRecordobt/nanos.51.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D{1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1gTw Brpy2U delta 410 zcmV;L0cHOF0<;5=B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef|_#6mjD0& diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.52.png b/test-integration/snapshots/signTransactionRecordobt/nanos.52.png index bafc0e320244351797fec5739b9a6d9029cf45e8..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$s1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1n!Sz!Lxf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.53.png b/test-integration/snapshots/signTransactionRecordobt/nanos.53.png index 119eb22fc2111523375a127e32bc66252e40bfbb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDHg0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f+$9VRsaA1 delta 355 zcmV-p0i6ED0{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hBi BrrZDk diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.54.png b/test-integration/snapshots/signTransactionRecordobt/nanos.54.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&pB0-^$tBYyztNklNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=?aeAcy delta 291 zcmV+;0o?wg0=)u|BYyz|Nklo5G z5s6>5+zS4+s|IDIYP4sJ`9|5IBt8QgQ7O$DPOS#O6$M1hqkk-iv_tJxhc#qpfInXg zP(I_vLKR%Z>+H6)p*kvqJklR~!HU0001>#2;?$iBbo!yWRi*002ovPDHLkV1jeFf3^Ss diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.55.png b/test-integration/snapshots/signTransactionRecordobt/nanos.55.png index fadc23a161829705363042782e217be337d6b7af..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1n>V BcCG*b delta 299 zcmV+`0o4AM0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1lwZg6{wT diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.56.png b/test-integration/snapshots/signTransactionRecordobt/nanos.56.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z{0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g1Ozut^fc4 delta 264 zcmV+j0r&pD1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=_hfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1mn#uE78R delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1gr7 BcH#g4 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.58.png b/test-integration/snapshots/signTransactionRecordobt/nanos.58.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qA7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfBkIWS diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.61.png b/test-integration/snapshots/signTransactionRecordobt/nanos.61.png index f26fb07e66f049995a83eb93b725e472eda6d16c..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ delta 350 zcmV-k0iph?1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1nArf=K`X delta 366 zcmV-!0g?W?0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=b%7 delta 398 zcmV;90dfA-0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kATL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1lTEuUY^A delta 329 zcmV-P0k-~z1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfPxste delta 400 zcmV;B0dM}#1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY;Kfeb6 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.66.png b/test-integration/snapshots/signTransactionRecordobt/nanos.66.png index 06140342c291c111e9c068e5607f9a041bc53592..8524d356e7311bd4f4a905c37048883fe3cae241 100644 GIT binary patch delta 442 zcmV;r0Y(100@MSLB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f(tUwIsgCw delta 287 zcmV+)0pR}B1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1h32f|LLN diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.67.png b/test-integration/snapshots/signTransactionRecordobt/nanos.67.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..7c579f5ef126a25a4a5b6bf7715b13e1c46c540a 100644 GIT binary patch delta 387 zcmV-}0et?|0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nVwvE={& delta 314 zcmV-A0mc5F1JweMB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=O1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfV_nZd delta 363 zcmV-x0hIp71BL^TB!5jwL_t(|ob8#x4#OY_hV8Px{{#2X9ZU=pX{Z&D%6C|{wI~SK z`7fm)2!dc$Hjz=!TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1j_nuRZ_( diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.69.png b/test-integration/snapshots/signTransactionRecordobt/nanos.69.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58 100644 GIT binary patch delta 410 zcmV;L0cHNr1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef>6cFX#fBK delta 437 zcmV;m0ZRU~1J47HB!8AkL_t(|ob8#*j>0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfVF}!0 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.70.png b/test-integration/snapshots/signTransactionRecordobt/nanos.70.png index 8524d356e7311bd4f4a905c37048883fe3cae241..bafc0e320244351797fec5739b9a6d9029cf45e8 100644 GIT binary patch delta 403 zcmV;E0c`%%1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1g0Nz$*X% delta 442 zcmV;r0Y(0;1JnbMB!8PpL_t(|ob8#xvcez?MWdtt|G_SFQ3shML?Aci@yr<)Efh#Y z0_94SBuSF|Dwml?&qvk49c79&$}!OM@fl9mwmKQAGM@iK)GyB*5i|-bF{)%?%R-~c ziQHg4v9w^JRBp>-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$g7#|9E&u=k diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.71.png b/test-integration/snapshots/signTransactionRecordobt/nanos.71.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6Dx1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1oSs BrnUe8 delta 387 zcmV-}0et@c0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1ggivJL)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfz1+`t diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.73.png b/test-integration/snapshots/signTransactionRecordobt/nanos.73.png index 8637a32a1f1f816d998c6eb7a3b5d5a45bd00e58..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDGr1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g3~;M4FCWD delta 410 zcmV;L0cHNh0<;5=B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ EfNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=y_K?^z|4GN89rt$I}$aUM9MlBolKHp|$r`on8!7?k9qGJgWvwAa%b0n9-bE@Va+ zEf%B@DFfG@RtKO~o|24kA@jh)_QLOts`m~k*$)(qOpdM8#<3o%4!E>Fxdh-4_4!Df z7Ksp4*D2?uER;`1B~Z5A>$G`(EYHEq+kj`_a1gEQ@= zrIXsMD87O&(0}@qmca`!W`e-H$LJ70*vNGw!lnhj_G0000oOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1g(; BcIN;9 delta 356 zcmV-q0h|7o0{#M!BYy!!Nkl~5 z_mR}4sknMts1y7IM4$OXd1E_8NiIW3P1Xr;v2z88AC&_s34cRAHnFa%@t&K4CcJ@5 z;vg8y^HnV&#v^mww!eQ1u%Cb+E|gg)dM%Uv1w#_z^Gn;u8~Ir2n!RF9DOALS z8K#6ETh5P}t6=zw3#I8oJXX(kkL|T!}=s%{H;}> zbQ!9OVMJ838eMuT94&TsD4Ndjxh~t#*a3;kFvWILDi_~Q?!HlH*lr6QPXLIKTa44Q ze9f+m_6`6^8mAyKW}((a(?G>_)3g8p0001hdb|Lenh4sAjtpP`00001;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe+?*IS* delta 298 zcmV+_0oDHb0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f+BQ-Q2+n{ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.78.png b/test-integration/snapshots/signTransactionRecordobt/nanos.78.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 367 zcmV-#0g(Qp0*M2VBYy!(^bU?%60&Z9AMXSKk5XD9G9=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#^0FK>f$*kQC|_)VNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=N*m`mR diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.79.png b/test-integration/snapshots/signTransactionRecordobt/nanos.79.png index c0236f40e1f682660f35f989589a0948eac7ab57..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 399 zcmV;A0dW470;mI!BYy#JNkl?3;%h4x(i>&+7iw%Yd zq%8z?KE5Sc0qXqX{l%q5LRV|(Y618pu6hh#y(hqL{b3(ZSAWc4F#wab_1@P9_2KEN z0NMH85hT}kcWSuE{6q$b0V}|tA=h#m83?!jNtq`sJ(oxO(n&BKj0O_}$W#o@u>?

Ag|UPjXORE@Lw1*fByo2u*XuHWCqoC>di zTK1K-0P^3M0&2;rg1G$Vsfet!rO>%e`corTn3#h6ARI(FfN*TMU_D*D5VxYho4bwZ tX;enPzov=1Q0}ZLpfjcb!!YLO3*+@TcC{fEO#lD@00>D%PDHLkV1iT7!bkuB delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1m@v Bc9H-9 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.80.png b/test-integration/snapshots/signTransactionRecordobt/nanos.80.png index e15f75d57e7822f4f4f5079a0ded4c024c86bdec..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0X0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1)~B!31;L_t(|ob8yw5`!QNM6px<|ATv|2c`@bl14@*8@lgQEJodp zL6Q<7gb;$r`=t%-Cj#^EzJY(|>3su3)Cs=rrz3gTJpu{50o`KKs+=03>p8$4z#C9& zSLE)xf-ST}*fn6=PjcsBoVB+Q)_^VnJ%BGk64DoHz$(-uT7Mp`1=YWu3zAa(NtlGC z`ct6?{?G$Y{8xfD?2HSI#hjgXLVRH(w#e5s404+UU?Zk9GSg>s`_&PWI-vHL`kdSI z4<(`X5~TcV`7s>Ra@I5e-hdY4^Iwt)wSfw0Kx(RlGG{nu8M=B9q#K%7f*E3YH&9XE qfS;n&!Wmszyd8l`2qA4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYp@V@#0 delta 296 zcmV+@0oVSj1H%H4B!3D?L_t(|ob8#>4#FS|MXS;O|6m{VfrMZ?N|%h%vU_68K-R&% zgGomO0002E^8NgMp&5NvMscH3U+tm8r ziHAX0V;3SBP(-gPu%dESp%qlxV+`U>Bm*ua&r-gr0qgGQvwu8Sci`@H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.85.png b/test-integration/snapshots/signTransactionRecordobt/nanos.85.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 10:44:29 +0200 Subject: [PATCH 36/83] Chain code Token code public addr instruction --- MakefileTest.mk | 2 +- .../transactionTemplates/commands.ts | 34 +++- .../template_addaddress.ts | 168 ++++-------------- .../template_newfundsreq.ts | 4 +- .../template_recordobt.ts | 4 +- src/signTransactionParse.c | 49 +++++ src/signTransactionParse.h | 1 + test-integration/signTransactionAddaddress.js | 10 +- .../signTransactionAddaddress/nanos.05.png | Bin 317 -> 416 bytes .../signTransactionAddaddress/nanos.06.png | Bin 325 -> 393 bytes .../signTransactionAddaddress/nanos.07.png | Bin 435 -> 424 bytes .../signTransactionAddaddress/nanos.08.png | Bin 393 -> 356 bytes .../signTransactionAddaddress/nanos.09.png | Bin 424 -> 426 bytes .../signTransactionAddaddress/nanos.10.png | Bin 356 -> 314 bytes .../signTransactionAddaddress/nanos.11.png | Bin 426 -> 365 bytes .../signTransactionAddaddress/nanos.12.png | Bin 314 -> 470 bytes .../signTransactionAddaddress/nanos.13.png | Bin 365 -> 416 bytes .../signTransactionAddaddress/nanos.14.png | Bin 470 -> 409 bytes .../signTransactionAddaddress/nanos.15.png | Bin 317 -> 393 bytes .../signTransactionAddaddress/nanos.16.png | Bin 325 -> 424 bytes .../signTransactionAddaddress/nanos.17.png | Bin 435 -> 356 bytes .../signTransactionAddaddress/nanos.18.png | Bin 317 -> 426 bytes .../signTransactionAddaddress/nanos.19.png | Bin 325 -> 314 bytes .../signTransactionAddaddress/nanos.20.png | Bin 440 -> 365 bytes .../signTransactionAddaddress/nanos.21.png | Bin 393 -> 470 bytes .../signTransactionAddaddress/nanos.22.png | Bin 424 -> 416 bytes .../signTransactionAddaddress/nanos.23.png | Bin 356 -> 409 bytes .../signTransactionAddaddress/nanos.24.png | Bin 426 -> 407 bytes .../signTransactionAddaddress/nanos.25.png | Bin 314 -> 393 bytes .../signTransactionAddaddress/nanos.26.png | Bin 365 -> 424 bytes .../signTransactionAddaddress/nanos.27.png | Bin 470 -> 356 bytes .../signTransactionAddaddress/nanos.28.png | Bin 317 -> 426 bytes .../signTransactionAddaddress/nanos.29.png | Bin 325 -> 314 bytes .../signTransactionAddaddress/nanos.30.png | Bin 435 -> 365 bytes .../signTransactionAddaddress/nanos.31.png | Bin 317 -> 470 bytes .../signTransactionAddaddress/nanos.32.png | Bin 325 -> 416 bytes .../signTransactionAddaddress/nanos.33.png | Bin 440 -> 409 bytes .../signTransactionAddaddress/nanos.34.png | Bin 317 -> 407 bytes .../signTransactionAddaddress/nanos.35.png | Bin 325 -> 403 bytes .../signTransactionAddaddress/nanos.36.png | Bin 424 -> 393 bytes .../signTransactionAddaddress/nanos.37.png | Bin 393 -> 424 bytes .../signTransactionAddaddress/nanos.38.png | Bin 424 -> 356 bytes .../signTransactionAddaddress/nanos.39.png | Bin 356 -> 426 bytes .../signTransactionAddaddress/nanos.40.png | Bin 426 -> 314 bytes .../signTransactionAddaddress/nanos.41.png | Bin 314 -> 365 bytes .../signTransactionAddaddress/nanos.42.png | Bin 365 -> 470 bytes .../signTransactionAddaddress/nanos.43.png | Bin 470 -> 416 bytes .../signTransactionAddaddress/nanos.44.png | Bin 317 -> 409 bytes .../signTransactionAddaddress/nanos.45.png | Bin 325 -> 407 bytes .../signTransactionAddaddress/nanos.46.png | Bin 435 -> 403 bytes .../signTransactionAddaddress/nanos.47.png | Bin 317 -> 413 bytes .../signTransactionAddaddress/nanos.48.png | Bin 325 -> 393 bytes .../signTransactionAddaddress/nanos.49.png | Bin 440 -> 424 bytes .../signTransactionAddaddress/nanos.50.png | Bin 317 -> 356 bytes .../signTransactionAddaddress/nanos.51.png | Bin 325 -> 426 bytes .../signTransactionAddaddress/nanos.52.png | Bin 424 -> 0 bytes .../signTransactionAddaddress/nanos.53.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.54.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.55.png | Bin 436 -> 0 bytes .../signTransactionAddaddress/nanos.56.png | Bin 393 -> 0 bytes .../signTransactionAddaddress/nanos.57.png | Bin 424 -> 0 bytes .../signTransactionAddaddress/nanos.58.png | Bin 356 -> 0 bytes .../signTransactionAddaddress/nanos.59.png | Bin 426 -> 0 bytes .../signTransactionAddaddress/nanos.60.png | Bin 314 -> 0 bytes .../signTransactionAddaddress/nanos.61.png | Bin 365 -> 0 bytes .../signTransactionAddaddress/nanos.62.png | Bin 470 -> 0 bytes .../signTransactionAddaddress/nanos.63.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.64.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.65.png | Bin 435 -> 0 bytes .../signTransactionAddaddress/nanos.66.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.67.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.68.png | Bin 440 -> 0 bytes .../signTransactionAddaddress/nanos.69.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.70.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.71.png | Bin 424 -> 0 bytes .../signTransactionAddaddress/nanos.72.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.73.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.74.png | Bin 436 -> 0 bytes .../signTransactionAddaddress/nanos.75.png | Bin 317 -> 0 bytes .../signTransactionAddaddress/nanos.76.png | Bin 325 -> 0 bytes .../signTransactionAddaddress/nanos.77.png | Bin 435 -> 0 bytes .../signTransactionAddaddress/nanos.78.png | Bin 393 -> 0 bytes .../signTransactionAddaddress/nanos.79.png | Bin 424 -> 0 bytes .../signTransactionAddaddress/nanos.80.png | Bin 356 -> 0 bytes .../signTransactionAddaddress/nanos.81.png | Bin 426 -> 0 bytes 85 files changed, 122 insertions(+), 150 deletions(-) delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.52.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.53.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.54.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.55.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.56.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.57.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.58.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.59.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.60.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.61.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.62.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.63.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.64.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.65.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.66.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.67.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.68.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.69.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.70.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.71.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.72.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.73.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.74.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.75.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.76.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.77.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.78.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.79.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.80.png delete mode 100644 test-integration/snapshots/signTransactionAddaddress/nanos.81.png diff --git a/MakefileTest.mk b/MakefileTest.mk index b9533988..00cd89c4 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -34,11 +34,11 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,getVersion.js) $(call run_nodejs_test,5001,40001,getSerial.js) $(call run_nodejs_test,5001,40001,getPublicKey.js) + $(call run_nodejs_test,5001,40001,decodeMessage.js) $(call run_nodejs_test,5001,40001,signTransactionTrnsfiopubky.js) $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) $(call run_nodejs_test,5001,40001,signTransactionAddaddress.js) - $(call run_nodejs_test,5001,40001,decodeMessage.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 3fcf135d..d31d0398 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -30,6 +30,7 @@ export const enum VALUE_FORMAT { VALUE_FORMAT_VARUINT32 = 0x17, VALUE_FORMAT_MEMO_HASH = 0x20, + VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, } export const enum VALUE_VALIDATION { @@ -339,17 +340,17 @@ export function ADD_STORAGE_CHECK(check: VALUE_STORAGE_COMPARE, c: Command): Com } } -export function COMMAND_MEMO_HASH(memo?: VarlenAsciiString, hash?: VarlenAsciiString, offline_url?: VarlenAsciiString): Command { +export function COMMAND_APPEND_DATA_MEMO_HASH(memo?: VarlenAsciiString, hash?: VarlenAsciiString, offline_url?: VarlenAsciiString): Command { var varData: Buffer = Buffer.from(""); if (memo === undefined) { validate(hash !== undefined, InvalidDataReason.INVALID_HASH); validate(offline_url !== undefined, InvalidDataReason.INVALID_OFFLINE_URL); varData = Buffer.concat([ Buffer.from("0001", "hex"), - uint8_to_buf(hash.length as Uint8_t), + varuint32_to_buf(hash.length), Buffer.from(hash), Buffer.from("01", "hex"), - uint8_to_buf(offline_url.length as Uint8_t), + varuint32_to_buf(offline_url.length), Buffer.from(offline_url), ]) } @@ -358,7 +359,7 @@ export function COMMAND_MEMO_HASH(memo?: VarlenAsciiString, hash?: VarlenAsciiSt validate(hash === undefined, InvalidDataReason.INVALID_OFFLINE_URL); varData = Buffer.concat([ Buffer.from("01", "hex"), - uint8_to_buf(memo.length as Uint8_t), + varuint32_to_buf(memo.length), Buffer.from(memo), Buffer.from("0000", "hex"), ]) @@ -376,4 +377,29 @@ export function COMMAND_MEMO_HASH(memo?: VarlenAsciiString, hash?: VarlenAsciiSt varData: varData, txLen: varData.length, } +} + + +export function COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW(key: string, chainCode: VarlenAsciiString, tokenCode: VarlenAsciiString, publicAddr: VarlenAsciiString): Command { + const varData: Buffer = Buffer.concat([ + varuint32_to_buf(chainCode.length), + Buffer.from(chainCode), + varuint32_to_buf(tokenCode.length), + Buffer.from(tokenCode), + varuint32_to_buf(publicAddr.length), + Buffer.from(publicAddr), + ]) + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: varData, + txLen: varData.length, + } } \ No newline at end of file diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts index 89c8c972..600896b2 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -3,7 +3,8 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, - templateAlternative} from "./commands" + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -26,15 +27,8 @@ function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), - ]), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), ] } @@ -52,24 +46,10 @@ function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("02" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), - ]), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), ] } @@ -87,33 +67,12 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("03" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), - ]), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), ] } @@ -131,42 +90,14 @@ function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("04" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[3].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[3].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[3].public_address)), - ]), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 4", actionData.public_addresses[3].chain_code, + actionData.public_addresses[3].token_code, actionData.public_addresses[3].public_address), ] } @@ -185,51 +116,16 @@ function template5(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("05" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[0].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[0].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[0].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[1].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[1].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[1].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[2].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[2].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[2].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[3].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[3].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[3].public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.public_addresses[4].chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.public_addresses[4].token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.public_addresses[4].public_address)), - ]), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 4", actionData.public_addresses[3].chain_code, + actionData.public_addresses[3].token_code, actionData.public_addresses[3].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 5", actionData.public_addresses[4].chain_code, + actionData.public_addresses[4].token_code, actionData.public_addresses[4].public_address), ] } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index ea6876fa..c04c03e1 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMANDS_DH_ENCODE, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE, COMMAND_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -49,7 +49,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), ]), - COMMAND_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), + COMMAND_APPEND_DATA_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 296), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 14e6589f..ffce1192 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -62,7 +62,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_SHOW("Obt ID", Buffer.from(actionData.obt_id)), ]), - COMMAND_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), + COMMAND_APPEND_DATA_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 432), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index 9036d061..62a28a73 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -77,11 +77,16 @@ static void displayName(const uint8_t *value, static void displayMemoHash(const uint8_t *value, uint8_t valueLen, char display[MAX_DISPLAY_VALUE_LENGTH]) { + // data format: + // hasMemo(0x00/0x01), if yes then memolength (1b, < 127) and memo + // then hash and offline url in the same manner + // Either memo is present, or both hash and offline url. TRACE_BUFFER(value, valueLen); VALIDATE(valueLen >= 1, ERR_INVALID_DATA); if (value[0] == 1) { // has memo VALIDATE(valueLen >= 2, ERR_INVALID_DATA); size_t memoLen = value[1]; + VALIDATE(memoLen < 127, ERR_INVALID_DATA); VALIDATE(valueLen == memoLen + 4, ERR_INVALID_DATA); // has memo, memo length, memo, no hash, no url VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); @@ -91,9 +96,11 @@ static void displayMemoHash(const uint8_t *value, VALIDATE(valueLen >= 3, ERR_INVALID_DATA); VALIDATE(value[1] == 1, ERR_INVALID_DATA); // has hash size_t hashLen = value[2]; + VALIDATE(hashLen < 127, ERR_INVALID_DATA); VALIDATE(valueLen >= hashLen + 5, ERR_INVALID_DATA); VALIDATE(value[hashLen + 3] == 1, ERR_INVALID_DATA); // has url size_t urlLen = value[hashLen + 4]; + VALIDATE(urlLen < 127, ERR_INVALID_DATA); VALIDATE(valueLen == hashLen + urlLen + 5, ERR_INVALID_DATA); } else { VALIDATE(false, ERR_INVALID_DATA); @@ -102,6 +109,44 @@ static void displayMemoHash(const uint8_t *value, snprintf(display, MAX_DISPLAY_VALUE_LENGTH, "NOT IMPLEMENTED"); } +static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + // Format: chain code length(varUINT), chain code, token code lenth (varUINT), token code, + // publicAddrLen (varUINT), publicAddr + TRACE_BUFFER(value, valueLen); + VALIDATE(valueLen >= 1, ERR_INVALID_DATA); + size_t chainCodeLen = value[0]; // always just one byte as it needs to be <=10 + VALIDATE(1 <= chainCodeLen && chainCodeLen <= 10, ERR_INVALID_DATA); + VALIDATE(valueLen >= chainCodeLen + 2, ERR_INVALID_DATA); + size_t tokenCodeLen = value[chainCodeLen + 1]; // always just one byte as it needs to be <=10 + VALIDATE(1 <= tokenCodeLen && tokenCodeLen <= 10, ERR_INVALID_DATA); + VALIDATE(valueLen >= chainCodeLen + tokenCodeLen + 3, ERR_INVALID_DATA); + uint64_t publicAddrLen = 0; + size_t publicAddrLenLen = getNumberFromVarUInt(value + chainCodeLen + tokenCodeLen + 2, + valueLen - (chainCodeLen + tokenCodeLen + 2), + &publicAddrLen); + size_t publicAddrStart = chainCodeLen + tokenCodeLen + 2 + publicAddrLenLen; + VALIDATE(1 <= publicAddrLen && publicAddrLen <= 128, ERR_INVALID_DATA); + VALIDATE(valueLen == publicAddrStart + publicAddrLen, ERR_INVALID_DATA); + + str_validateTextBuffer(value + 1, chainCodeLen); + str_validateTextBuffer(value + chainCodeLen + 2, tokenCodeLen); + str_validateTextBuffer(value + publicAddrStart, publicAddrLen); + + // prepare to display + ASSERT(chainCodeLen + 1 + tokenCodeLen + 1 + publicAddrLen < MAX_DISPLAY_VALUE_LENGTH); + snprintf(display, + MAX_DISPLAY_VALUE_LENGTH, + "%.*s:%.*s:%.*s", + chainCodeLen, + value + 1, + tokenCodeLen, + value + chainCodeLen + 2, + (int) publicAddrLen, + value + publicAddrStart); +} + //-------------------- NUMBER PARSING FUNCTIONS ---------------------- static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { @@ -252,6 +297,10 @@ void parseValueToDisplay(value_format_t format, displayMemoHash(value, valueLen, display); break; } + case VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR: { + displayChainCodeTokenCodePublicAddr(value, valueLen, display); + break; + } default: THROW(ERR_INVALID_DATA); #undef CASE diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index 0cbe5737..6a1bc769 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -18,6 +18,7 @@ typedef enum { // Special VALUE_FORMAT_MEMO_HASH = 0x20, + VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, } value_format_t; typedef enum { diff --git a/test-integration/signTransactionAddaddress.js b/test-integration/signTransactionAddaddress.js index 5501338b..3347596d 100644 --- a/test-integration/signTransactionAddaddress.js +++ b/test-integration/signTransactionAddaddress.js @@ -218,7 +218,7 @@ testStep(" - - -", "Sign testnet transaction"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -262,7 +262,7 @@ testStep(" - - -", "Sign mainnet transaction - two addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -310,7 +310,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -363,7 +363,7 @@ testStep(" - - -", "Sign mainnet transaction - four addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -421,7 +421,7 @@ testStep(" - - -", "Sign mainnet transaction - five addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.05.png b/test-integration/snapshots/signTransactionAddaddress/nanos.05.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..715b32c5edd39f0e303ad1652dd481152e30ed4d 100644 GIT binary patch delta 389 zcmV;00eb$u0-ytsB!6c~L_t(|ob8#x5`-WKhHYni{|D~S9^7$CkO)DU;=5_`}j`TmE!msW~aazVv@Neouf6$ z`;*9yDDJ3+)z7L&%t`)JbjN}C&VUy%F96H>_ccs^SVpvH?SD8Ae;HtkC)a0O27ovZ zjvhoOnachm;TW_Q-7Qe?=HY{9-2>dxjlm5cRW z7vnQP>rD~s7YfVBLmjc({xEdfWJgB}w00000NkvXXu0mjf|2Ds8 delta 290 zcmV+-0p0$f1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f}t*g;s5{u diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.07.png b/test-integration/snapshots/signTransactionAddaddress/nanos.07.png index cdff310f891f2f913217dce7431c9f72a6bc3b91..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAb1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA{j5Qy>uv z0D>S0f}n$a`~RMx1)Y!vnMM-RX!#E0y6x=XYZ>35V{&VWr31byQUJ~dEi3FBEbHm+ zahay2yY&dIC11!9!kmWc;tY1l)PX*mb?kTjp|uDGIk~8g0DqbGexwmV9AxG~Vua9Q zK?;#NaP5&g0JXA6GR%d<1K+k6es5I0cR(WM`T(! zLQq{r&PiD)pNvXq+4ii{=J~Na2On<(-hsnGw62qWHrR3ZhW_qJMAK2R4;(s}-6q6KDy_Z>FO4S4+Nn8x>WAVp5$I9YpjJu+Xz;re4Z7 zYNIkIw6W|3bs=u1I-+6Bumco3Zn9>oFC3dm%pzdiF%vaY2XIP3m+v$be(RJkU))9| zWIlzKaeSj?kN4DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1hrwf};Qc delta 329 zcmV-P0k;0S0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mV31MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaer4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZWkiR4V diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.12.png b/test-integration/snapshots/signTransactionAddaddress/nanos.12.png index 06140342c291c111e9c068e5607f9a041bc53592..0478a4729b8c50bbd76751d13fd887b1f5129279 100644 GIT binary patch delta 444 zcmV;t0Ym<}0@eeNB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}IJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1h9&f|dXP diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.13.png b/test-integration/snapshots/signTransactionAddaddress/nanos.13.png index b5ea17ae975c78239e012201de4a31fb160ca42a..715b32c5edd39f0e303ad1652dd481152e30ed4d 100644 GIT binary patch delta 389 zcmV;00eb%J0-ytsB!6c~L_t(|ob8#x5`-WKhHYni{|D~S9^7$CkO)DU;=5_`}j`TmE!msW~aazVv@Neouf6$ z`;*9yDDJ3+)z7L&%t`)JbjN}C&VUy%F96H>_ccs^SVpvH?SD8Ae;HtkC)a0O27ovZ zjvhoOnachm;TW_Q-7Qe?=HY{9-2>dxjlm5cRW z7vnQP>rD~s7YfVBLmjc({xEdfWJgB}w00000NkvXXu0mjfNHxEg delta 338 zcmV-Y0j>U^1MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerjLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>eDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}IJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.16.png b/test-integration/snapshots/signTransactionAddaddress/nanos.16.png index fadc23a161829705363042782e217be337d6b7af..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAt0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2hCG0RR91 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.17.png b/test-integration/snapshots/signTransactionAddaddress/nanos.17.png index cdff310f891f2f913217dce7431c9f72a6bc3b91..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0L1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m0{j5Qy>uv z0D>S0f}n$a`~RMx1)Y!vnMM-RX!#E0y6x=XYZ>35V{&VWr31byQUJ~dEi3FBEbHm+ zahay2yY&dIC11!9!kmWc;tY1l)PX*mb?kTjp|uDGIk~8g0DqbGexwmV9AxG~Vua9Q zK?;#NaP5&g0JXA6GR%d<1K+k6es5I0cR(WM`T(! zLQq{r&PiD)pNvXq+4ii{=J~Na2On<(-hsnGw62qWHrR3ZhW_qJMAK2R4;(s}-6q6KDy_Z>FO4S4+Nn8x>WAVp5$I9YpjJu+Xz;re4Z7 zYNIkIw6W|3bs=u1I-+6Bumco3Zn9>oFC3dm%pzdiF%vaY2XIP3m+v$be(RJkU))9| zWIlzKaeSj?kN44#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYgkiPT) delta 290 zcmV+-0p0$p1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gY1f`kA7 delta 298 zcmV+_0oDGx0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4qv)5&!@I diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.20.png b/test-integration/snapshots/signTransactionAddaddress/nanos.20.png index 079d3770d0ed83875521b9af36415c3fde49006b..b5ea17ae975c78239e012201de4a31fb160ca42a 100644 GIT binary patch delta 338 zcmV-Y0j>VH1MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerFbJ&@DX8TX-+=K*R{xt>_DBY_h2Xzc=&TZ+gRf5i}yTD1XlYnfG?28Nh60a3Isd zco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7QT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt z^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+WgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X z_kL+r=qis?Z-2s0jr#pyfErqp9(nmFkxnnYFm^y8ws?1|*>9C#6O{LBUVJX4$4+UJ zw}XTMilbT*EQ}}v;vHnCq8x~Y*a_$;L5VP8dn(9;*a;Y^h8pr5Ay%{iyi8b>IdRn! zQ5U^hg5&ZaTgqOz9&pZE&&w}>Hq)$07*qo IM6N<$g6Ji}IRF3v diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.21.png b/test-integration/snapshots/signTransactionAddaddress/nanos.21.png index b42d7b08612d408956ed509afd4d555a52e6af02..0478a4729b8c50bbd76751d13fd887b1f5129279 100644 GIT binary patch delta 444 zcmV;t0YmDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}IJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ`}j`TmE!msW~aazVv@Neouf6$ z`;*9yDDJ3+)z7L&%t`)JbjN}C&VUy%F96H>_ccs^SVpvH?SD8Ae;HtkC)a0O27ovZ zjvhoOnachm;TW_Q-7Qe?=HY{9-2>dxjlm5cRW z7vnQP>rD~s7YfVBLmjc({xEdfWJgB}w00000NkvXXu0mjf;L*QR delta 398 zcmV;90dfAI1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAjLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>eDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mL_t(|ob8#x4#OY_hILur|ABkx4lc%sQU+L9+dO! zsP5>BU9;{Hv6B9@Z59%gl0e6W)UC6N1m)xFYxu%YMzolXXn%*l9k3Knt}nO@0CFC* z9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvb zcxl2jHqY3Bf_tmNOJ!Qk_%O{fD%2Wrud~2DnGsr^86VmR4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX*zrN1^ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.25.png b/test-integration/snapshots/signTransactionAddaddress/nanos.25.png index 06140342c291c111e9c068e5607f9a041bc53592..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W?0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1nArf=K`X diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.26.png b/test-integration/snapshots/signTransactionAddaddress/nanos.26.png index b5ea17ae975c78239e012201de4a31fb160ca42a..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBA0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAV11MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mdr delta 444 zcmV;t0Ym=e0@eeNB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYgkiPT) delta 290 zcmV+-0p0$p1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gY1f`kA7 delta 298 zcmV+_0oDGx0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4qv)5&!@I diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.30.png b/test-integration/snapshots/signTransactionAddaddress/nanos.30.png index cdff310f891f2f913217dce7431c9f72a6bc3b91..b5ea17ae975c78239e012201de4a31fb160ca42a 100644 GIT binary patch delta 338 zcmV-Y0j>VC1MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaer{j5Qy>uv z0D>S0f}n$a`~RMx1)Y!vnMM-RX!#E0y6x=XYZ>35V{&VWr31byQUJ~dEi3FBEbHm+ zahay2yY&dIC11!9!kmWc;tY1l)PX*mb?kTjp|uDGIk~8g0DqbGexwmV9AxG~Vua9Q zK?;#NaP5&g0JXA6GR%d<1K+k6es5I0cR(WM`T(! zLQq{r&PiD)pNvXq+4ii{=J~Na2On<(-hsnGw62qWHrR3ZhW_qJMAK2R4;(s}-6q6KDy_Z>FO4S4+Nn8x>WAVp5$I9YpjJu+Xz;re4Z7 zYNIkIw6W|3bs=u1I-+6Bumco3Zn9>oFC3dm%pzdiF%vaY2XIP3m+v$be(RJkU))9| zWIlzKaeSj?kN4Dtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqHq)$ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.32.png b/test-integration/snapshots/signTransactionAddaddress/nanos.32.png index fadc23a161829705363042782e217be337d6b7af..715b32c5edd39f0e303ad1652dd481152e30ed4d 100644 GIT binary patch delta 389 zcmV;00eb$$0-ytsB!6c~L_t(|ob8#x5`-WKhHYni{|D~S9^7$CkO)DU;=5_`}j`TmE!msW~aazVv@Neouf6$ z`;*9yDDJ3+)z7L&%t`)JbjN}C&VUy%F96H>_ccs^SVpvH?SD8Ae;HtkC)a0O27ovZ zjvhoOnachm;TW_Q-7Qe?=HY{9-2>dxjlm5cRW z7vnQP>rD~s7YfVBLmjc({xEdfWJgB}w00000NkvXXu0mjf3vIt| delta 298 zcmV+_0oDGX1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g1hvB`2YX_ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.33.png b/test-integration/snapshots/signTransactionAddaddress/nanos.33.png index 079d3770d0ed83875521b9af36415c3fde49006b..2186765f89e20913fce79bf21715cd44f4a19afa 100644 GIT binary patch delta 382 zcmV-^0fGLw1DOMmB!6H@L_t(|ob8#-5`-WKfNf`c{|D~S9^7#p`AG@H-S}>jLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>eFbJ&@DX8TX-+=K*R{xt>_DBY_h2Xzc=&TZ+gRf5i}yTD1XlYnfG?28Nh60a3Isd zco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7QT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt z^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+WgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X z_kL+r=qis?Z-2s0jr#pyfErqp9(nmFkxnnYFm^y8ws?1|*>9C#6O{LBUVJX4$4+UJ zw}XTMilbT*EQ}}v;vHnCq8x~Y*a_$;L5VP8dn(9;*a;Y^h8pr5Ay%{iyi8b>IdRn! zQ5U^hg5&ZaTgqOz9&pZE&&w}>Hq)$07*qo IM6N<$f??{x<^TWy diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.34.png b/test-integration/snapshots/signTransactionAddaddress/nanos.34.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..d8ba46d5d8862452eb5528ef75095f1ca8f4ba11 100644 GIT binary patch delta 380 zcmV-?0fYX%0+$1jB!6B>L_t(|ob8#x4#OY_hILur|ABkx4lc%sQU+L9+dO! zsP5>BU9;{Hv6B9@Z59%gl0e6W)UC6N1m)xFYxu%YMzolXXn%*l9k3Knt}nO@0CFC* z9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvb zcxl2jHqY3Bf_tmNOJ!Qk_%O{fD%2Wrud~2DnGsr^86VmR)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqBkGb$ z7gS$at-RDG2XXYIl%3futAk)|eX4^->I$@1s(YW&%r|rZ00004`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f~?Yl>;M1& diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.36.png b/test-integration/snapshots/signTransactionAddaddress/nanos.36.png index a43877ffb6c67a62d3847106d73c741c3468e805..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Ww1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQR#B!6#7L_t(|ob8#x4#OY_hUv1t{{#219hx|+NPnr8lJRAS4HcLO zos1|5f*=Sw_-wz|6RfZkk`Q!Km?rBtAh$iw58TT24caHSmdp&mdx#dIqeII|pN*FF zFuH$C)6!@yk*(wl5hdU>))pe{(m4kCY}UEo^+vX$5F)jx&VK-%^?tM&ARJ_Hp&${g z%pj#mow)PS27vXlC^Fze;S1lk7j{q7anFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^i zL6oqzikg$EP(GQ}(DLnBr_J)mvJYO?4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=El zbu=Hs>~8B-3V+o)OMU~O)<8tFZo80XIb&(%K&g20?F%2Pw=Ye*@}00000Ne4wvM6N<$f>&9;jQ{`u diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.37.png b/test-integration/snapshots/signTransactionAddaddress/nanos.37.png index b42d7b08612d408956ed509afd4d555a52e6af02..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90df9`1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.39.png b/test-integration/snapshots/signTransactionAddaddress/nanos.39.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.41.png b/test-integration/snapshots/signTransactionAddaddress/nanos.41.png index 06140342c291c111e9c068e5607f9a041bc53592..b5ea17ae975c78239e012201de4a31fb160ca42a 100644 GIT binary patch delta 338 zcmV-Y0j>VJ0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1h~6f~)`l diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.42.png b/test-integration/snapshots/signTransactionAddaddress/nanos.42.png index b5ea17ae975c78239e012201de4a31fb160ca42a..0478a4729b8c50bbd76751d13fd887b1f5129279 100644 GIT binary patch delta 444 zcmV;t0Ym=n0@eeNB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}IVl1MLEkB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaer`}j`TmE!msW~aazVv@Neouf6$ z`;*9yDDJ3+)z7L&%t`)JbjN}C&VUy%F96H>_ccs^SVpvH?SD8Ae;HtkC)a0O27ovZ zjvhoOnachm;TW_Q-7Qe?=HY{9-2>dxjlm5cRW z7vnQP>rD~s7YfVBLmjc({xEdfWJgB}w00000NkvXXu0mjfCdR*k delta 444 zcmV;t0YmDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}IjLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>e)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqL_t(|ob8#x4#OY_hILur|ABkx4lc%sQU+L9+dO! zsP5>BU9;{Hv6B9@Z59%gl0e6W)UC6N1m)xFYxu%YMzolXXn%*l9k3Knt}nO@0CFC* z9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvb zcxl2jHqY3Bf_tmNOJ!Qk_%O{fD%2Wrud~2DnGsr^86VmR4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g0Xsn@Bjb+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.46.png b/test-integration/snapshots/signTransactionAddaddress/nanos.46.png index cdff310f891f2f913217dce7431c9f72a6bc3b91..1a791b106cfdaa25a038d6ec49d92226ebdbdffc 100644 GIT binary patch delta 376 zcmV-;0f+vx1Cs-gB!5~-L_t(|ob8#*5`!QNMPsM^{||Oy7tA;|FA+#cHD@Q_1(P9= z2#_R6k|a)SD{SjYOS5tikt@8M=QCva^eVVp9{}F|Q)(PdPz*|2l*YBkGb$ z7gS$at-RDG2XXYIl%3futAk)|eX4^->I$@1s(YW&%r|rZ0000{j5Qy>uv z0D>S0f}n$a`~RMx1)Y!vnMM-RX!#E0y6x=XYZ>35V{&VWr31byQUJ~dEi3FBEbHm+ zahay2yY&dIC11!9!kmWc;tY1l)PX*mb?kTjp|uDGIk~8g0DqbGexwmV9AxG~Vua9Q zK?;#NaP5&g0JXA6GR%d<1K+k6es5I0cR(WM`T(! zLQq{r&PiD)pNvXq+4ii{=J~Na2On<(-hsnGw62qWHrR3ZhW_qJMAK2R4;(s}-6q6KDy_Z>FO4S4+Nn8x>WAVp5$I9YpjJu+Xz;re4Z7 zYNIkIw6W|3bs=u1I-+6Bumco3Zn9>oFC3dm%pzdiF%vaY2XIP3m+v$be(RJkU))9| zWIlzKaeSj?kN4$ zQh=f;isG&u0ds!d0075}>sgk(CZsK(vA>KfJUu5fXGeFwdPnjZVBCz;?MZbCUx6@< zC!i?;)zLM($GRb5r+gH9@aIcz4{(F>5_{qdaJ#%1NXro|Sj$@rax9DazI(GGedmt*L3>siY=*Z9zQ zT@(LPSB-JB>w6SlFZBJ4DIZ?C@+iuodW0UpFF+!HX;*FB1I8+RtQ?MoW$y`BwqH3R~DBSM-KSsu~*1A0^=s g@_pkhilUJ71)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqb%7 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.48.png b/test-integration/snapshots/signTransactionAddaddress/nanos.48.png index fadc23a161829705363042782e217be337d6b7af..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?X20*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f}t*g;s5{u diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.49.png b/test-integration/snapshots/signTransactionAddaddress/nanos.49.png index 079d3770d0ed83875521b9af36415c3fde49006b..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAg1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAFbJ&@DX8TX-+=K*R{xt>_DBY_h2Xzc=&TZ+gRf5i}yTD1XlYnfG?28Nh60a3Isd zco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7QT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt z^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+WgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X z_kL+r=qis?Z-2s0jr#pyfErqp9(nmFkxnnYFm^y8ws?1|*>9C#6O{LBUVJX4$4+UJ zw}XTMilbT*EQ}}v;vHnCq8x~Y*a_$;L5VP8dn(9;*a;Y^h8pr5Ay%{iyi8b>IdRn! zQ5U^hg5&ZaTgqOz9&pZE&&w}>Hq)$07*qo IM6N<$f_f~$^#A|> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.50.png b/test-integration/snapshots/signTransactionAddaddress/nanos.50.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0V0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYt5Wf5X delta 298 zcmV+_0oDGh1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2$MH0{{R3 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.52.png b/test-integration/snapshots/signTransactionAddaddress/nanos.52.png deleted file mode 100644 index a43877ffb6c67a62d3847106d73c741c3468e805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)t4M#TmXh&hhYb~&2%U^52!bF8I{0kA*AuL;6Os^gQkW*| zHz2n?&kx+n^$pr5x0cKdz~ z`E1s?-}Oeeq7WjrsLlYL^?tM&ARJ_Hp&${g%pj#mow)PS27vXlC^Fze;S1lk7j{q7 zanFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^iL6oqzikg$EP(GQ}(DLnBr_J)mvJYO? z4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=Elbu=Hs>~8B-3e`GGegmM^Kt!`{!oq#0 z7y`TS>`fK#xw6-^mi{Z<))sSbXF>+ZElIGeDv#<~t*3tCLYr==74`*pFx~<{+MerE zaTtICM?F^#(*PjN#Wb@PB5LKR;Q9^zcQgmDo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.55.png b/test-integration/snapshots/signTransactionAddaddress/nanos.55.png deleted file mode 100644 index 8bb80a65d4c76f45ccc3c1e6b1efea32cabc4789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)F)8jbSrn;7FtU^kRycI4b{bI6v?!K z_RTi-MHjRdMI$E{wGp7xE=L;ygd;Nt5-o%l4@!u%f$NWU0#GYIk_>Yo@xYh8i?|il zZVhNT915;Xj#{K~Y=`Lte6_wz3BW1p>lU3Bju2GWN6sl(sP2qP=-D=xw?%H2*Weay zz<&_nh~DSq<;b@YPtHL+IR}wgzWusXX(e|R@6greIvobi0VW&X={C+j^dHmbAl55b zqP2?pv`iN@3+Ta>UxG!o^yEv6uPF9TW?sA`u0?lsmDh3mwfS=(0#KK^7(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.57.png b/test-integration/snapshots/signTransactionAddaddress/nanos.57.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI@*eku)da8=+#~i9 zkayIO_1L@|MT69YiE(ZN05E{}Liz-dgZ&@}`#}zNGAH`i$*2OuOS2QZR%;q7S6lsT zR@OHuMQmZ|xq%#RGG-sdO6jpFM#@Jg_G)dgrip4K(llLmn7vAFUCx@BU7}OggnOkJ zDeIR_b(3{Kqnq~LROv7~MP%g;xQ+S-m!{ZYv-+uW@X~}I`_I7w zHB_jZy-k=^H=B~DQWO3C)tP-SFo#{whM4_xyp*8Ff&>5n!2j|Ei7m?Ujz*0E00000 LNkvXXu0mjfD#fSu diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.62.png b/test-integration/snapshots/signTransactionAddaddress/nanos.62.png deleted file mode 100644 index 0478a4729b8c50bbd76751d13fd887b1f5129279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmV;{0V)28P)lePK1djL9wdQXzeAi7>B^T`W9Ir5OiK)J09l|t_Ke2u{`fIC`%l5PKc=CxlqB^NtbAO_&6 z7FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8Vh!#m*5FPk?YFX_!&%I$sF@WYzvah+ zFG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{c7#2W5|d2osBc-|B8DNaLU>f=2XAnlWN-VrQ-t)~VmRMdn@7)xqWi*tN; z*cw_07Qkv-k?oLsgq#MM@t5={v?M*n2?a!|TO%9FJNJ|a&C|tzCXDAVY223nz7#Ql z$zp0^02AL#5H_wK!|aKC551>hQo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.65.png b/test-integration/snapshots/signTransactionAddaddress/nanos.65.png deleted file mode 100644 index cdff310f891f2f913217dce7431c9f72a6bc3b91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmV;k0ZjghP)os`O_2~Ga^lS%Hd7!G3IKv22!f!4ef$5Opaq?f2AM_@(`fk) z1}!V>8!YST?s1u>rMvYAttDT`5yG5?>f#J`$<%>9 zn|17W{h_r8206K?jsThVexwmV9AxG~Vua9QK?;#NaP5&g0JXA6GR%d<1K+k6es5I0 zcR(WM`T(!LQq{r&PiD)pNvXq+4ii{=J~Na2On<( z-hsnGw62qWHrR3ZhW_qHos+HkELz6`C#+XbH-1 zrlR#%OTKy=6;*^{Qk@kYMD!A{(6eZ!UdlIWqcSJ7vFrtPA#SERqG8Oi0~9-MvSz9; z9GgkZB4FGx6E#x@a7sa!?=%#C>y$5F+(sp2K82QXe4}NL_vlS2i8{a;vpN9Aa`y|e de-H$LJ3qj7LM#Sl+L-_V002ovPDHLkV1horz;6Hm diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.66.png b/test-integration/snapshots/signTransactionAddaddress/nanos.66.png deleted file mode 100644 index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.68.png b/test-integration/snapshots/signTransactionAddaddress/nanos.68.png deleted file mode 100644 index 079d3770d0ed83875521b9af36415c3fde49006b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)<}8kAenBw zeFI|O78o z1HU)(+;4irdl57uwJ6U3nfG?28Nh60a3Isdco{)Rkvwt7BVB-Elu3~R2Qpvywz;r7 zQT5J%oP9&loyAc~YaZ*Nx&W8ahb198WqsTt^MV*D`bug}s6uh)qJ>&)bL}?EAIs0+ zWgWnOV6YKK-;*DQ&xSp|2KM+GSfV!j_o$&X_kL+r=qis?Z^BNE`u$*l8d{ScdHE=j zPA|PMc0eJvcz3JWZo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.71.png b/test-integration/snapshots/signTransactionAddaddress/nanos.71.png deleted file mode 100644 index a43877ffb6c67a62d3847106d73c741c3468e805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)t4M#TmXh&hhYb~&2%U^52!bF8I{0kA*AuL;6Os^gQkW*| zHz2n?&kx+n^$pr5x0cKdz~ z`E1s?-}Oeeq7WjrsLlYL^?tM&ARJ_Hp&${g%pj#mow)PS27vXlC^Fze;S1lk7j{q7 zanFF7{Xo&3#ZgOd9*<*a08YJ6At5?seJ;^iL6oqzikg$EP(GQ}(DLnBr_J)mvJYO? z4*UlO2XXd2*&VSP_CyTqi5OTie)sc+rF=Elbu=Hs>~8B-3e`GGegmM^Kt!`{!oq#0 z7y`TS>`fK#xw6-^mi{Z<))sSbXF>+ZElIGeDv#<~t*3tCLYr==74`*pFx~<{+MerE zaTtICM?F^#(*PjN#Wb@PB5LKR;Q9^zcQgmDo5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.74.png b/test-integration/snapshots/signTransactionAddaddress/nanos.74.png deleted file mode 100644 index 8bb80a65d4c76f45ccc3c1e6b1efea32cabc4789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)F)8jbSrn;7FtU^kRycI4b{bI6v?!K z_RTi-MHjRdMI$E{wGp7xE=L;ygd;Nt5-o%l4@!u%f$NWU0#GYIk_>Yo@xYh8i?|il zZVhNT915;Xj#{K~Y=`Lte6_wz3BW1p>lU3Bju2GWN6sl(sP2qP=-D=xw?%H2*Weay zz<&_nh~DSq<;b@YPtHL+IR}wgzWusXX(e|R@6greIvobi0VW&X={C+j^dHmbAl55b zqP2?pv`iN@3+Ta>UxG!o^yEv6uPF9TW?sA`u0?lsmDh3mwfS=(0#KK^7o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.77.png b/test-integration/snapshots/signTransactionAddaddress/nanos.77.png deleted file mode 100644 index c0301ece0bf8b6a1800e06546e08fb5e8d874ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmV;k0ZjghP)Taf|-(Tp!Utd@ck(fSV{Ns=T<1ibg}XND-KL1|=mk}#wF z2T;fM>jyu|?*nug_a5;~z|+JFz_~-)3*I|yuhZS*vY3^-Z3`WxevspYX@UxM zK+ny#_C;UlD2hhTTGUp6F1j3T1rQUN`5@6kMDd`MNL#r6XcK_;^0LSYG^NkJUv~sRkV>QxS~;d{(q5L34Bjy96_|bWJ;<`|56duTx!)~Q~~IOGDj`A zPK;3kh6x}#!F6Ih)zASfB)E1Mo&f%M-EN*Je0i1cKj2TtaJ=8Ir`ab`4Gm`HJz(+G dKS`1#oDb8~OX5ehY~26=002ovPDHLkV1mqW$u9r^ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.78.png b/test-integration/snapshots/signTransactionAddaddress/nanos.78.png deleted file mode 100644 index b42d7b08612d408956ed509afd4d555a52e6af02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.79.png b/test-integration/snapshots/signTransactionAddaddress/nanos.79.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 11:05:29 +0200 Subject: [PATCH 37/83] Remaddress --- MakefileTest.mk | 1 + .../template_addaddress.ts | 4 +- .../transactionTemplates/template_all.ts | 2 + .../template_newfundsreq.ts | 4 +- .../template_recordobt.ts | 6 +- .../template_remaddress.ts | 169 +++++++ ledgerjs-fio/src/types/internal.ts | 11 +- ledgerjs-fio/src/types/public.ts | 15 +- ledgerjs-fio/src/utils/parse.ts | 7 +- ledgerjs-fio/src/utils/parseTxActions.ts | 13 +- test-integration/signTransactionRemaddress.js | 435 ++++++++++++++++++ .../signTransactionAddaddress/nanos.03.png | Bin 365 -> 360 bytes .../signTransactionAddaddress/nanos.04.png | Bin 470 -> 508 bytes .../signTransactionAddaddress/nanos.11.png | Bin 365 -> 360 bytes .../signTransactionAddaddress/nanos.12.png | Bin 470 -> 508 bytes .../signTransactionAddaddress/nanos.20.png | Bin 365 -> 360 bytes .../signTransactionAddaddress/nanos.21.png | Bin 470 -> 508 bytes .../signTransactionAddaddress/nanos.30.png | Bin 365 -> 360 bytes .../signTransactionAddaddress/nanos.31.png | Bin 470 -> 508 bytes .../signTransactionAddaddress/nanos.41.png | Bin 365 -> 360 bytes .../signTransactionAddaddress/nanos.42.png | Bin 470 -> 508 bytes .../signTransactionRemaddress/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionRemaddress/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionRemaddress/nanos.03.png | Bin 0 -> 363 bytes .../signTransactionRemaddress/nanos.04.png | Bin 0 -> 508 bytes .../signTransactionRemaddress/nanos.05.png | Bin 0 -> 416 bytes .../signTransactionRemaddress/nanos.06.png | Bin 0 -> 393 bytes .../signTransactionRemaddress/nanos.07.png | Bin 0 -> 424 bytes .../signTransactionRemaddress/nanos.08.png | Bin 0 -> 356 bytes .../signTransactionRemaddress/nanos.09.png | Bin 0 -> 426 bytes .../signTransactionRemaddress/nanos.10.png | Bin 0 -> 314 bytes .../signTransactionRemaddress/nanos.11.png | Bin 0 -> 363 bytes .../signTransactionRemaddress/nanos.12.png | Bin 0 -> 508 bytes .../signTransactionRemaddress/nanos.13.png | Bin 0 -> 416 bytes .../signTransactionRemaddress/nanos.14.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanos.15.png | Bin 0 -> 393 bytes .../signTransactionRemaddress/nanos.16.png | Bin 0 -> 424 bytes .../signTransactionRemaddress/nanos.17.png | Bin 0 -> 356 bytes .../signTransactionRemaddress/nanos.18.png | Bin 0 -> 426 bytes .../signTransactionRemaddress/nanos.19.png | Bin 0 -> 314 bytes .../signTransactionRemaddress/nanos.20.png | Bin 0 -> 363 bytes .../signTransactionRemaddress/nanos.21.png | Bin 0 -> 508 bytes .../signTransactionRemaddress/nanos.22.png | Bin 0 -> 416 bytes .../signTransactionRemaddress/nanos.23.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanos.24.png | Bin 0 -> 407 bytes .../signTransactionRemaddress/nanos.25.png | Bin 0 -> 393 bytes .../signTransactionRemaddress/nanos.26.png | Bin 0 -> 424 bytes .../signTransactionRemaddress/nanos.27.png | Bin 0 -> 356 bytes .../signTransactionRemaddress/nanos.28.png | Bin 0 -> 426 bytes .../signTransactionRemaddress/nanos.29.png | Bin 0 -> 314 bytes .../signTransactionRemaddress/nanos.30.png | Bin 0 -> 363 bytes .../signTransactionRemaddress/nanos.31.png | Bin 0 -> 508 bytes .../signTransactionRemaddress/nanos.32.png | Bin 0 -> 416 bytes .../signTransactionRemaddress/nanos.33.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanos.34.png | Bin 0 -> 407 bytes .../signTransactionRemaddress/nanos.35.png | Bin 0 -> 403 bytes .../signTransactionRemaddress/nanos.36.png | Bin 0 -> 393 bytes .../signTransactionRemaddress/nanos.37.png | Bin 0 -> 424 bytes .../signTransactionRemaddress/nanos.38.png | Bin 0 -> 356 bytes .../signTransactionRemaddress/nanos.39.png | Bin 0 -> 426 bytes .../signTransactionRemaddress/nanos.40.png | Bin 0 -> 314 bytes .../signTransactionRemaddress/nanos.41.png | Bin 0 -> 363 bytes .../signTransactionRemaddress/nanos.42.png | Bin 0 -> 508 bytes .../signTransactionRemaddress/nanos.43.png | Bin 0 -> 416 bytes .../signTransactionRemaddress/nanos.44.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanos.45.png | Bin 0 -> 407 bytes .../signTransactionRemaddress/nanos.46.png | Bin 0 -> 403 bytes .../signTransactionRemaddress/nanos.47.png | Bin 0 -> 413 bytes .../signTransactionRemaddress/nanos.48.png | Bin 0 -> 393 bytes .../signTransactionRemaddress/nanos.49.png | Bin 0 -> 424 bytes .../signTransactionRemaddress/nanos.50.png | Bin 0 -> 356 bytes .../signTransactionRemaddress/nanos.51.png | Bin 0 -> 426 bytes 72 files changed, 655 insertions(+), 12 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts create mode 100644 test-integration/signTransactionRemaddress.js create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.47.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanos.51.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 00cd89c4..ce2e0a0b 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -39,6 +39,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionNewfundsreq.js) $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) $(call run_nodejs_test,5001,40001,signTransactionAddaddress.js) + $(call run_nodejs_test,5001,40001,signTransactionRemaddress.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts index 600896b2..47eabf6d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -148,14 +148,14 @@ export function template_addaddress(chainId: HexString, tx: ParsedTransaction, p return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Map blockchain public address"), + COMMAND_SHOW_MESSAGE("Action", "Map public address"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Address", Buffer.from(actionData.fio_address), 3, 64) + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) ]), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index fd7440b9..0c924cc3 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -7,6 +7,7 @@ import { template_trnsfiopubky } from "./template_trnsfiopubky"; import { template_newfundsreq } from "./template_newfundsreq"; import { template_recordopt } from "./template_recordobt"; import { template_addaddress } from "./template_addaddress"; +import { template_remaddress } from "./template_remaddress"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -19,6 +20,7 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_newfundsreq, template_recordopt, template_addaddress, + template_remaddress, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index c04c03e1..b0980724 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -30,10 +30,10 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address), 3, 64) + COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Cr.Handle", Buffer.from(actionData.payer_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) + COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Cr.Handle", Buffer.from(actionData.payee_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index ffce1192..ec96c621 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -31,13 +31,13 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Fio Request ID", Buffer.from(actionData.fio_request_id)) + COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Address", Buffer.from(actionData.payer_fio_address), 3, 64) + COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Cr.Handle", Buffer.from(actionData.payer_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Address", Buffer.from(actionData.payee_fio_address), 3, 64) + COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Cr.Handle", Buffer.from(actionData.payee_fio_address), 3, 64) ]), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts new file mode 100644 index 00000000..590dd984 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts @@ -0,0 +1,169 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("remaddress", InvalidDataReason.UNEXPECTED_ERROR); + + +function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 1) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + ] +} + +function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 2) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("02" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + ] +} + +function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 3) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("03" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), + ] +} + +function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 4) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("04" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 4", actionData.public_addresses[3].chain_code, + actionData.public_addresses[3].token_code, actionData.public_addresses[3].public_address), + ] +} + + +function template5(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + + //Matching template + if (actionData.public_addresses.length != 5) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("05" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 1", actionData.public_addresses[0].chain_code, + actionData.public_addresses[0].token_code, actionData.public_addresses[0].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 2", actionData.public_addresses[1].chain_code, + actionData.public_addresses[1].token_code, actionData.public_addresses[1].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 3", actionData.public_addresses[2].chain_code, + actionData.public_addresses[2].token_code, actionData.public_addresses[2].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 4", actionData.public_addresses[3].chain_code, + actionData.public_addresses[3].token_code, actionData.public_addresses[3].public_address), + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW("Mapping 5", actionData.public_addresses[4].chain_code, + actionData.public_addresses[4].token_code, actionData.public_addresses[4].public_address), + ] +} + +export function template_remaddress(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedMapBlockchainPublicAddress = tx.actions[0].data as ParsedMapBlockchainPublicAddress; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const addressesCommands: Array = templateAlternative([template1, template2, template3, template4, template5])(chainId, tx, parsedPath) + validate(addressesCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...addressesCommands, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 79213292..87ccbda3 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -82,6 +82,14 @@ export type ParsedMapBlockchainPublicAddress = { tpid: VarlenAsciiString } +export type ParsedRemoveAddress = { + fio_address: VarlenAsciiString + public_addresses: Array + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -91,7 +99,8 @@ export type ParsedActionData = ParsedTransferFIOTokensData | ParsedRequestFundsData | ParsedRecordOtherBlockchainTransactionMetadata | - ParsedMapBlockchainPublicAddress + ParsedMapBlockchainPublicAddress | + ParsedRemoveAddress export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index bb25407e..9293bd59 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -226,6 +226,18 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Represents Map blockchain public address data. + * @category Basic types + * @see [[Action]] + */ + export type RemoveMappedAddress = { + fio_address: string + public_addresses: Array + max_fee: bigint_like + actor: string + tpid: string +} /** * Represents authorisation in transaction Actions. @@ -251,7 +263,8 @@ export type Action = { TransferFIOTokensData | RequestFundsData | RecordOtherBlockchainTransactionMetadata | - MapBlockchainPublicAddress + MapBlockchainPublicAddress | + RemoveMappedAddress } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 5fe3c2fd..cd74c145 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseRemoveMappedAddress } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -224,6 +224,9 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "addaddress") { parsedActionData = parseMapBlockchainPublicAddress(action.data as MapBlockchainPublicAddress) } + else if (action.account === "fio.address" && action.name === "remaddress") { + parsedActionData = parseRemoveMappedAddress(action.data as RemoveMappedAddress) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index fb752529..041cb009 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,5 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, - PublicAddress } from "fio"; + PublicAddress, RemoveMappedAddress } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -12,6 +12,7 @@ import { PUBLIC_KEY_LENGTH, ParsedMapBlockchainPublicAddress, ParsedPublicAddress, + ParsedRemoveAddress as ParsedRemoveMappedAddress, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -90,4 +91,14 @@ export function parseMapBlockchainPublicAddress(data: MapBlockchainPublicAddress actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } +} + +export function parseRemoveMappedAddress(data: RemoveMappedAddress): ParsedRemoveMappedAddress { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + public_addresses: parsePublicAddsesses(data.public_addresses), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } } \ No newline at end of file diff --git a/test-integration/signTransactionRemaddress.js b/test-integration/signTransactionRemaddress.js new file mode 100644 index 00000000..80672d44 --- /dev/null +++ b/test-integration/signTransactionRemaddress.js @@ -0,0 +1,435 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the remaddress action type + const actionRemaddress = networkInfo[network].typesTransaction2.get('remaddress') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionRemaddress.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.address", + name: "remaddress", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - two addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - three addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - four addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fourth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - five addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + public_addresses: [ + { + public_address: "My payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Second payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Third payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fourth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + { + public_address: "Fifth payer public address", + chain_code: "BTC", + token_code: "BTC", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.03.png b/test-integration/snapshots/signTransactionAddaddress/nanos.03.png index b5ea17ae975c78239e012201de4a31fb160ca42a..c7d6308eab54350747acbf136692b88f1d3e47cf 100644 GIT binary patch delta 333 zcmV-T0kZz>0_XyeB!4eSL_t(|ob8#x4ul{KL~*nJ{|9@}0|_CejHqC{?7Wj=Q=r9m zoehByLI`okzV){xt;Cpu$j%bdupK5jAwe2A6mBi19;r$XQaVrT9L zo7E=5TTmV1+mgcue5h-J3%vdjQ(tHB8{mqe1-)KmFb@)tgqL#Svhp~g z*TTe>liTY#m`11xn{(^mi!o~GX%lOCirXVNYd{kfKGl$&#<8Z$;#FCK_v5fqy$DN? fF-!mV%0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bi_@% delta 444 zcmV;t0Ym=$1J(nOB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I0_XyeB!4eSL_t(|ob8#x4ul{KL~*nJ{|9@}0|_CejHqC{?7Wj=Q=r9m zoehByLI`okzV){xt;Cpu$j%bdupK5jAwe2A6mBi19;r$XQaVrT9L zo7E=5TTmV1+mgcue5h-J3%vdjQ(tHB8{mqe1-)KmFb@)tgqL#Svhp~g z*TTe>liTY#m`11xn{(^mi!o~GX%lOCirXVNYd{kfKGl$&#<8Z$;#FCK_v5fqy$DN? fF-!mV%0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bi_@% delta 444 zcmV;t0Ym=$1J(nOB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I0_XyeB!4eSL_t(|ob8#x4ul{KL~*nJ{|9@}0|_CejHqC{?7Wj=Q=r9m zoehByLI`okzV){xt;Cpu$j%bdupK5jAwe2A6mBi19;r$XQaVrT9L zo7E=5TTmV1+mgcue5h-J3%vdjQ(tHB8{mqe1-)KmFb@)tgqL#Svhp~g z*TTe>liTY#m`11xn{(^mi!o~GX%lOCirXVNYd{kfKGl$&#<8Z$;#FCK_v5fqy$DN? fF-!mV%0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bi_@% delta 444 zcmV;t0Ym=$1J(nOB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I0_XyeB!4eSL_t(|ob8#x4ul{KL~*nJ{|9@}0|_CejHqC{?7Wj=Q=r9m zoehByLI`okzV){xt;Cpu$j%bdupK5jAwe2A6mBi19;r$XQaVrT9L zo7E=5TTmV1+mgcue5h-J3%vdjQ(tHB8{mqe1-)KmFb@)tgqL#Svhp~g z*TTe>liTY#m`11xn{(^mi!o~GX%lOCirXVNYd{kfKGl$&#<8Z$;#FCK_v5fqy$DN? fF-!mV%0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bi_@% delta 444 zcmV;t0Ym=$1J(nOB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I0_XyeB!4eSL_t(|ob8#x4ul{KL~*nJ{|9@}0|_CejHqC{?7Wj=Q=r9m zoehByLI`okzV){xt;Cpu$j%bdupK5jAwe2A6mBi19;r$XQaVrT9L zo7E=5TTmV1+mgcue5h-J3%vdjQ(tHB8{mqe1-)KmFb@)tgqL#Svhp~g z*TTe>liTY#m`11xn{(^mi!o~GX%lOCirXVNYd{kfKGl$&#<8Z$;#FCK_v5fqy$DN? fF-!mV%0__5jB!4tXL_t(|ob8!G62l+}MQx|K|ADhe7tS~iBBIqu=zpu$prH^U z{)PYm005ZdI_FygEitA-WW5Cav)h3lNYLZg*AcEWybfwpj^u-&LAe9i=#$U-K{LE} zJHU~i==gNI#%c-j9`}UR1h5s{BlZ%Ichr#e*t{G?gVcnHaerYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bi_@% delta 444 zcmV;t0Ym=$1J(nOB!8VrL_t(|ob8&;lEWYffXUA0{U11o^pG9b3L**;+we^;LE{e! zC@nw`1VQjrHm82hDtk8{kZi6=kfmxe0wS73LYjSDSsr)>r5OiK)J09l|t_K ze2u{`fIC`%l5PKc=CxlqB^NtbAO_&67FsSgV>-f;I%+B|udqN64uU7}2{)2&C)VJ8 zVh!#m*5FPk?YFX_!&%I$sF@WYzvah+FG{#Ce5mJ#(Uqv+2R2-x`dLjPDIzQLLVhr{ zc7#2W5|d2osDE!+;39@0uR?fVYuX?C$svJnb7TvGJKdZGNaGtYI?@S9RA!#N!Rq5Z z6(H@Cb>0yyfUTznDpb^jN*GIOQj2qZci0+Q2o}I%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.03.png b/test-integration/snapshots/signTransactionRemaddress/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9dafadc4fe54db00d871dbeb885e00552362e5 GIT binary patch literal 363 zcmV-x0hIoUP)4bRTv^!I23 zdMKQp9+x$2F)V8-!$;^K*n#f=(fh@J{h%9OqYaSAD>|+2sqvbEX7_u>YXHOyJ|q4D zKr3n>HI}BMB#?`6Axvce01lWvk=_BsU_6Myco2h;7xOIp4%l5Oh77MX*BfxO1{9WEluSL;7;(OK9K8=P@6@LkPEgo8 zu_(g5JxHZ|TTGt`PwL`(ooji(#nCSl&DQ0WR}k002ov JPDHLkV1nU3psfG^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.04.png b/test-integration/snapshots/signTransactionRemaddress/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000q}zN{|Ranc}-?>n{U=$)*$pK@bGv*tfKA7c*kzp0z4A+~hNU zOGB1bxNzU(Yy0?4*_Gn>8fK@!8Df&TB%Px*$@`PYjwtS^hSkriN6bn7Q*_6H_|AYA zFfRbh`u8dx zj(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.07.png b/test-integration/snapshots/signTransactionRemaddress/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI4bRTv^!I23 zdMKQp9+x$2F)V8-!$;^K*n#f=(fh@J{h%9OqYaSAD>|+2sqvbEX7_u>YXHOyJ|q4D zKr3n>HI}BMB#?`6Axvce01lWvk=_BsU_6Myco2h;7xOIp4%l5Oh77MX*BfxO1{9WEluSL;7;(OK9K8=P@6@LkPEgo8 zu_(g5JxHZ|TTGt`PwL`(ooji(#nCSl&DQ0WR}k002ov JPDHLkV1nU3psfG^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.12.png b/test-integration/snapshots/signTransactionRemaddress/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000q}zN{|Ranc}-?>n{U=$)*$pK@bGv*tfKA7c*kzp0z4A+~hNU zOGB1bxNzU(Yy0?4*_Gn>8fK@!8Df&TB%Px*$@`PYjwtS^hSkriN6bn7Q*_6H_|AYA zFfRbh`u8dx zjq}z9QjEJ#NGIAl0tz}P)b1%1VJ#5^GN4$ArWg9FVwn+LEiIC z8nW$o7oLY)iHP+AP;bNR3n*cPolDYJ;{0rHsyE?GrHH^z>ul z7l3X5`WiknOe0!Q7L$+n(~2j+6w1X;-cO4LfO#L(ZbF5fn&A?Gwx@vRqR|8eD~~mJ zdEdY@pyRz{3bLTQ^UH9)^+;~cER**hOvJzw%=?>sJz6gDy&5|`rs-8BeJdzI8!XhY zv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>ehGw==Cz!p76M>o`&2tW`7!E^Zld{YX!5)C+;00000NkvXXu0mjf DxVpav literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.15.png b/test-integration/snapshots/signTransactionRemaddress/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.16.png b/test-integration/snapshots/signTransactionRemaddress/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI4bRTv^!I23 zdMKQp9+x$2F)V8-!$;^K*n#f=(fh@J{h%9OqYaSAD>|+2sqvbEX7_u>YXHOyJ|q4D zKr3n>HI}BMB#?`6Axvce01lWvk=_BsU_6Myco2h;7xOIp4%l5Oh77MX*BfxO1{9WEluSL;7;(OK9K8=P@6@LkPEgo8 zu_(g5JxHZ|TTGt`PwL`(ooji(#nCSl&DQ0WR}k002ov JPDHLkV1nU3psfG^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.21.png b/test-integration/snapshots/signTransactionRemaddress/nanos.21.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000q}zN{|Ranc}-?>n{U=$)*$pK@bGv*tfKA7c*kzp0z4A+~hNU zOGB1bxNzU(Yy0?4*_Gn>8fK@!8Df&TB%Px*$@`PYjwtS^hSkriN6bn7Q*_6H_|AYA zFfRbh`u8dx zjq}z9QjEJ#NGIAl0tz}P)b1%1VJ#5^GN4$ArWg9FVwn+LEiIC z8nW$o7oLY)iHP+AP;bNR3n*cPolDYJ;{0rHsyE?GrHH^z>ul z7l3X5`WiknOe0!Q7L$+n(~2j+6w1X;-cO4LfO#L(ZbF5fn&A?Gwx@vRqR|8eD~~mJ zdEdY@pyRz{3bLTQ^UH9)^+;~cER**hOvJzw%=?>sJz6gDy&5|`rs-8BeJdzI8!XhY zv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>ehGw==Cz!p76M>o`&2tW`7!E^Zld{YX!5)C+;00000NkvXXu0mjf DxVpav literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.24.png b/test-integration/snapshots/signTransactionRemaddress/nanos.24.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ba46d5d8862452eb5528ef75095f1ca8f4ba11 GIT binary patch literal 407 zcmV;I0cie-P)udPJP)4+vjcA9z9k3Knt}nO@0CFC*9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{ z9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvbcxl2jHqY3Bf_tmNOJ!Qk_%O{fD0(p{i7I6K0VQtrfF409uR1`R8*{A=W;YodGy?TD6!6n#-^w zp-WLf@I-8|7P_OkA&E1+tuRGYEo!$Ok#5=T?!BdXWGC002ovPDHLkV1iH1 BwCex> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.25.png b/test-integration/snapshots/signTransactionRemaddress/nanos.25.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.26.png b/test-integration/snapshots/signTransactionRemaddress/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI4bRTv^!I23 zdMKQp9+x$2F)V8-!$;^K*n#f=(fh@J{h%9OqYaSAD>|+2sqvbEX7_u>YXHOyJ|q4D zKr3n>HI}BMB#?`6Axvce01lWvk=_BsU_6Myco2h;7xOIp4%l5Oh77MX*BfxO1{9WEluSL;7;(OK9K8=P@6@LkPEgo8 zu_(g5JxHZ|TTGt`PwL`(ooji(#nCSl&DQ0WR}k002ov JPDHLkV1nU3psfG^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.31.png b/test-integration/snapshots/signTransactionRemaddress/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000q}zN{|Ranc}-?>n{U=$)*$pK@bGv*tfKA7c*kzp0z4A+~hNU zOGB1bxNzU(Yy0?4*_Gn>8fK@!8Df&TB%Px*$@`PYjwtS^hSkriN6bn7Q*_6H_|AYA zFfRbh`u8dx zjq}z9QjEJ#NGIAl0tz}P)b1%1VJ#5^GN4$ArWg9FVwn+LEiIC z8nW$o7oLY)iHP+AP;bNR3n*cPolDYJ;{0rHsyE?GrHH^z>ul z7l3X5`WiknOe0!Q7L$+n(~2j+6w1X;-cO4LfO#L(ZbF5fn&A?Gwx@vRqR|8eD~~mJ zdEdY@pyRz{3bLTQ^UH9)^+;~cER**hOvJzw%=?>sJz6gDy&5|`rs-8BeJdzI8!XhY zv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>ehGw==Cz!p76M>o`&2tW`7!E^Zld{YX!5)C+;00000NkvXXu0mjf DxVpav literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.34.png b/test-integration/snapshots/signTransactionRemaddress/nanos.34.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ba46d5d8862452eb5528ef75095f1ca8f4ba11 GIT binary patch literal 407 zcmV;I0cie-P)udPJP)4+vjcA9z9k3Knt}nO@0CFC*9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{ z9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvbcxl2jHqY3Bf_tmNOJ!Qk_%O{fD0(p{i7I6K0VQtrfF409uR1`R8*{A=W;YodGy?TD6!6n#-^w zp-WLf@I-8|7P_OkA&E1+tuRGYEo!$Ok#5=T?!BdXWGC002ovPDHLkV1iH1 BwCex> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.35.png b/test-integration/snapshots/signTransactionRemaddress/nanos.35.png new file mode 100644 index 0000000000000000000000000000000000000000..1a791b106cfdaa25a038d6ec49d92226ebdbdffc GIT binary patch literal 403 zcmV;E0c`$>P)_Xrj@C+t7 zVBhRC6woj-3TZ~VDf^F;YJ%+mQzWw<+kLGM5gnkM2gp*iu~OOB#D9){X10k$I%#f{ z2Si48dAty00lMJ(hoG{641JS{6#AY@`d}uU^_N~1HgD34HV!(SSj6jLnrx*-dQ^6t zg-#F3dd7BkGb$7gS$at-RDG2lS+ro!Km_gJ5las)I)A z3ba?Md!Nzdfcnq#(V2V4r)#*vEfTRH2~JZT*SHj6aYEjUzB53l(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.37.png b/test-integration/snapshots/signTransactionRemaddress/nanos.37.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI4bRTv^!I23 zdMKQp9+x$2F)V8-!$;^K*n#f=(fh@J{h%9OqYaSAD>|+2sqvbEX7_u>YXHOyJ|q4D zKr3n>HI}BMB#?`6Axvce01lWvk=_BsU_6Myco2h;7xOIp4%l5Oh77MX*BfxO1{9WEluSL;7;(OK9K8=P@6@LkPEgo8 zu_(g5JxHZ|TTGt`PwL`(ooji(#nCSl&DQ0WR}k002ov JPDHLkV1nU3psfG^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.42.png b/test-integration/snapshots/signTransactionRemaddress/nanos.42.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000q}zN{|Ranc}-?>n{U=$)*$pK@bGv*tfKA7c*kzp0z4A+~hNU zOGB1bxNzU(Yy0?4*_Gn>8fK@!8Df&TB%Px*$@`PYjwtS^hSkriN6bn7Q*_6H_|AYA zFfRbh`u8dx zjq}z9QjEJ#NGIAl0tz}P)b1%1VJ#5^GN4$ArWg9FVwn+LEiIC z8nW$o7oLY)iHP+AP;bNR3n*cPolDYJ;{0rHsyE?GrHH^z>ul z7l3X5`WiknOe0!Q7L$+n(~2j+6w1X;-cO4LfO#L(ZbF5fn&A?Gwx@vRqR|8eD~~mJ zdEdY@pyRz{3bLTQ^UH9)^+;~cER**hOvJzw%=?>sJz6gDy&5|`rs-8BeJdzI8!XhY zv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>ehGw==Cz!p76M>o`&2tW`7!E^Zld{YX!5)C+;00000NkvXXu0mjf DxVpav literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.45.png b/test-integration/snapshots/signTransactionRemaddress/nanos.45.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ba46d5d8862452eb5528ef75095f1ca8f4ba11 GIT binary patch literal 407 zcmV;I0cie-P)udPJP)4+vjcA9z9k3Knt}nO@0CFC*9voH@Eq7fQrZ!@BW=f1$oiu=#^#t}{ z9&eWtw1Rr(*W&Y|hrSu(M)x)*VqnS0`&nvbcxl2jHqY3Bf_tmNOJ!Qk_%O{fD0(p{i7I6K0VQtrfF409uR1`R8*{A=W;YodGy?TD6!6n#-^w zp-WLf@I-8|7P_OkA&E1+tuRGYEo!$Ok#5=T?!BdXWGC002ovPDHLkV1iH1 BwCex> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.46.png b/test-integration/snapshots/signTransactionRemaddress/nanos.46.png new file mode 100644 index 0000000000000000000000000000000000000000..1a791b106cfdaa25a038d6ec49d92226ebdbdffc GIT binary patch literal 403 zcmV;E0c`$>P)_Xrj@C+t7 zVBhRC6woj-3TZ~VDf^F;YJ%+mQzWw<+kLGM5gnkM2gp*iu~OOB#D9){X10k$I%#f{ z2Si48dAty00lMJ(hoG{641JS{6#AY@`d}uU^_N~1HgD34HV!(SSj6jLnrx*-dQ^6t zg-#F3dd7BkGb$7gS$at-RDG2lS+ro!Km_gJ5las)I)A z3ba?Md!Nzdfcnq#(V2V4r)#*vEfTRH2~JZT*SHj6aYEjUzB53l4%P)D2n2)907BF-T(l{i|bjIye6bA zps~M2+&hL5Ewr+|9{D`LluW8`q%;7N55~hQTv03a%7UmHF^xr61622XNT!+b zh+e=wpzWP91X+MNADjNOS9}X5P29UNWrIj&+Fz}PPU|XEv4sh~c5==!m%4v>#%1NX zro|Sj$@rax9DazI(GGedmt*L3>siY=*Z9zQT@(LPSB-JB>l9uu^!S8dz_#wvWQ9G_#pcGUW#iRB2 z3BS=sOO71*R{_2XTi7C3^oB{Q8XC+WCE*bAed8>OqLA|i&FmUZ@JbOf00000NkvXX Hu0mjf8GpMM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.48.png b/test-integration/snapshots/signTransactionRemaddress/nanos.48.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.49.png b/test-integration/snapshots/signTransactionRemaddress/nanos.49.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 12:05:36 +0200 Subject: [PATCH 38/83] Addnft --- MakefileTest.mk | 1 + ledgerjs-fio/src/errors/invalidDataReason.ts | 1 + .../transactionTemplates/commands.ts | 25 ++ .../transactionTemplates/template_addnft.ts | 171 +++++++++ .../transactionTemplates/template_all.ts | 2 + ledgerjs-fio/src/types/internal.ts | 20 +- ledgerjs-fio/src/types/public.ts | 32 +- ledgerjs-fio/src/utils/parse.ts | 7 +- ledgerjs-fio/src/utils/parseTxActions.ts | 33 +- src/signTransaction.h | 2 +- src/signTransactionParse.c | 41 +++ src/signTransactionParse.h | 1 + test-integration/signTransactionAddnft.js | 341 ++++++++++++++++++ .../signTransactionAddnft/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionAddnft/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionAddnft/nanos.03.png | Bin 0 -> 325 bytes .../signTransactionAddnft/nanos.04.png | Bin 0 -> 508 bytes .../signTransactionAddnft/nanos.05.png | Bin 0 -> 396 bytes .../signTransactionAddnft/nanos.06.png | Bin 0 -> 393 bytes .../signTransactionAddnft/nanos.07.png | Bin 0 -> 424 bytes .../signTransactionAddnft/nanos.08.png | Bin 0 -> 356 bytes .../signTransactionAddnft/nanos.09.png | Bin 0 -> 426 bytes .../signTransactionAddnft/nanos.10.png | Bin 0 -> 314 bytes .../signTransactionAddnft/nanos.11.png | Bin 0 -> 325 bytes .../signTransactionAddnft/nanos.12.png | Bin 0 -> 508 bytes .../signTransactionAddnft/nanos.13.png | Bin 0 -> 396 bytes .../signTransactionAddnft/nanos.14.png | Bin 0 -> 419 bytes .../signTransactionAddnft/nanos.15.png | Bin 0 -> 393 bytes .../signTransactionAddnft/nanos.16.png | Bin 0 -> 424 bytes .../signTransactionAddnft/nanos.17.png | Bin 0 -> 356 bytes .../signTransactionAddnft/nanos.18.png | Bin 0 -> 426 bytes .../signTransactionAddnft/nanos.19.png | Bin 0 -> 314 bytes .../signTransactionAddnft/nanos.20.png | Bin 0 -> 325 bytes .../signTransactionAddnft/nanos.21.png | Bin 0 -> 508 bytes .../signTransactionAddnft/nanos.22.png | Bin 0 -> 396 bytes .../signTransactionAddnft/nanos.23.png | Bin 0 -> 419 bytes .../signTransactionAddnft/nanos.24.png | Bin 0 -> 412 bytes .../signTransactionAddnft/nanos.25.png | Bin 0 -> 393 bytes .../signTransactionAddnft/nanos.26.png | Bin 0 -> 424 bytes .../signTransactionAddnft/nanos.27.png | Bin 0 -> 356 bytes .../signTransactionAddnft/nanos.28.png | Bin 0 -> 426 bytes 41 files changed, 669 insertions(+), 8 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts create mode 100644 test-integration/signTransactionAddnft.js create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.28.png diff --git a/MakefileTest.mk b/MakefileTest.mk index ce2e0a0b..3fcb3f56 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -40,6 +40,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionRecordobt.js) $(call run_nodejs_test,5001,40001,signTransactionAddaddress.js) $(call run_nodejs_test,5001,40001,signTransactionRemaddress.js) + $(call run_nodejs_test,5001,40001,signTransactionAddnft.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index 4b6af641..2584e2dc 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -42,4 +42,5 @@ export enum InvalidDataReason { INVALID_MESSAGE = "invalid message", INVALID_CONTEXT = "invalid context", INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES = "incorrect number of public addresses", + INCORRECT_NUMBER_OF_NFTS = "incorrect number of nfts", } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index d31d0398..03b50686 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -31,6 +31,7 @@ export const enum VALUE_FORMAT { VALUE_FORMAT_MEMO_HASH = 0x20, VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, + VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID = 0x22, } export const enum VALUE_VALIDATION { @@ -402,4 +403,28 @@ export function COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW(key: varData: varData, txLen: varData.length, } +} + +export function COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW(key: string, chainCode: VarlenAsciiString, contractAddr: VarlenAsciiString, tokenId: VarlenAsciiString): Command { + const varData: Buffer = Buffer.concat([ + varuint32_to_buf(chainCode.length), + Buffer.from(chainCode), + varuint32_to_buf(contractAddr.length), + Buffer.from(contractAddr), + varuint32_to_buf(tokenId.length), + Buffer.from(tokenId), + ]) + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID, + VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: varData, + txLen: varData.length, + } } \ No newline at end of file diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts new file mode 100644 index 00000000..28d2dacf --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -0,0 +1,171 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedMapNFTSignature, ParsedNFT, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("addnft", InvalidDataReason.UNEXPECTED_ERROR); + + +function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapNFTSignature = tx.actions[0].data as ParsedMapNFTSignature; + + //Matching template + if (actionData.nfts.length != 1) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) + ]), + ] +} + +function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapNFTSignature = tx.actions[0].data as ParsedMapNFTSignature; + + //Matching template + if (actionData.nfts.length != 2) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("02" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) + ]), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, + actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128) + ]), + ] +} + +function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedMapNFTSignature = tx.actions[0].data as ParsedMapNFTSignature; + + //Matching template + if (actionData.nfts.length != 3) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("03" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) + ]), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, + actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128) + ]), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, + actionData.nfts[2].contract_address, actionData.nfts[2].token_id), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].url), 0, 128) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 1, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].metadata), 0, 128) + ]), + ] +} + +export function template_addnft(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedMapNFTSignature = tx.actions[0].data as ParsedMapNFTSignature; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const addressesCommands: Array = templateAlternative([template1, template2, template3])(chainId, tx, parsedPath) + validate(addressesCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Map nfts"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...addressesCommands, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 0c924cc3..51025131 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -8,6 +8,7 @@ import { template_newfundsreq } from "./template_newfundsreq"; import { template_recordopt } from "./template_recordobt"; import { template_addaddress } from "./template_addaddress"; import { template_remaddress } from "./template_remaddress"; +import { template_addnft } from "./template_addnft"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -21,6 +22,7 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_recordopt, template_addaddress, template_remaddress, + template_addnft, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 87ccbda3..0da13ad6 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -90,6 +90,23 @@ export type ParsedRemoveAddress = { tpid: VarlenAsciiString } +export type ParsedNFT = { + chain_code: VarlenAsciiString + contract_address: VarlenAsciiString + token_id: VarlenAsciiString + url: VarlenAsciiString + hash: VarlenAsciiString + metadata: VarlenAsciiString +} + +export type ParsedMapNFTSignature = { + fio_address: VarlenAsciiString + nfts: Array + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -100,7 +117,8 @@ export type ParsedActionData = ParsedRequestFundsData | ParsedRecordOtherBlockchainTransactionMetadata | ParsedMapBlockchainPublicAddress | - ParsedRemoveAddress + ParsedRemoveAddress | + ParsedMapNFTSignature export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 9293bd59..0c5da25b 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -227,7 +227,7 @@ export type TransferFIOTokensData = { } /** - * Represents Map blockchain public address data. + * Represents Remove mapped address data. * @category Basic types * @see [[Action]] */ @@ -239,6 +239,33 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Represents NFT. + * @category Basic types + * @see [[Action]] + */ + export type NFT = { + chain_code: string + contract_address: string + token_id: string + url: string + hash: string + metadata: string + } + + /** + * Represents Map NFT Signature to a FIO Crypto Handle data. + * @category Basic types + * @see [[Action]] + */ + export type MapNFTSignature = { + fio_address: string + nfts: Array + max_fee: bigint_like + actor: string + tpid: string +} + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -264,7 +291,8 @@ export type Action = { RequestFundsData | RecordOtherBlockchainTransactionMetadata | MapBlockchainPublicAddress | - RemoveMappedAddress + RemoveMappedAddress | + MapNFTSignature } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index cd74c145..7f6a549d 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseRemoveMappedAddress } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRemoveMappedAddress } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -227,6 +227,9 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "remaddress") { parsedActionData = parseRemoveMappedAddress(action.data as RemoveMappedAddress) } + else if (action.account === "fio.address" && action.name === "addnft") { + parsedActionData = parseMapNFTSignature(action.data as MapNFTSignature) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 041cb009..1bc36f49 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,5 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, - PublicAddress, RemoveMappedAddress } from "fio"; + PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -13,6 +13,8 @@ import { ParsedMapBlockchainPublicAddress, ParsedPublicAddress, ParsedRemoveAddress as ParsedRemoveMappedAddress, + ParsedNFT, + ParsedMapNFTSignature, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -101,4 +103,31 @@ export function parseRemoveMappedAddress(data: RemoveMappedAddress): ParsedRemov actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } -} \ No newline at end of file +} + +function parseNFT(a: NFT): ParsedNFT { + return { + chain_code: parseAscii(a.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + contract_address: parseAscii(a.contract_address, InvalidDataReason.INVALID_TOKEN_CODE, 1, 128), + token_id: parseAscii(a.token_id, InvalidDataReason.INVALID_TOKEN_CODE, 1, 64), + url: parseAscii(a.url, InvalidDataReason.INVALID_TOKEN_CODE, 0, 128), + hash: parseAscii(a.hash, InvalidDataReason.INVALID_TOKEN_CODE, 1, 64), + metadata: parseAscii(a.metadata, InvalidDataReason.INVALID_TOKEN_CODE, 0, 128), + } +} + +function parseNFTs(a: Array): Array { + validate(1 <= a.length && a.length <= 3, InvalidDataReason.INCORRECT_NUMBER_OF_NFTS) + return a.map( e => parseNFT(e)) +} + +export function parseMapNFTSignature(data: MapNFTSignature): ParsedMapNFTSignature { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + nfts: parseNFTs(data.nfts), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + diff --git a/src/signTransaction.h b/src/signTransaction.h index c482af8d..d3548e67 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -13,7 +13,7 @@ handler_fn_t signTransaction_handleAPDU; #define MAX_DISPLAY_KEY_LENGTH 20 -#define MAX_DISPLAY_VALUE_LENGTH 2 * PUBKEY_LENGTH + 1 +#define MAX_DISPLAY_VALUE_LENGTH 220 #define MAX_TX_APPEND_IN_SINGLE_APDU PUBKEY_LENGTH diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index 62a28a73..f20156e2 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -147,6 +147,43 @@ static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, value + publicAddrStart); } +static void displayChainCodeContractAddressTokenId(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + // Format: chain code length(varUINT), chain code, token code lenth (varUINT), token code, + // publicAddrLen (varUINT), publicAddr + TRACE_BUFFER(value, valueLen); + VALIDATE(valueLen >= 1, ERR_INVALID_DATA); + size_t chainCodeLen = value[0]; // always just one byte as it needs to be <=10 + VALIDATE(1 <= chainCodeLen && chainCodeLen <= 10, ERR_INVALID_DATA); + VALIDATE(valueLen >= chainCodeLen + 2, ERR_INVALID_DATA); + uint64_t contractAddressLen = 0; + size_t contractAddressLenLen = getNumberFromVarUInt(value + chainCodeLen + 1, + valueLen - (chainCodeLen + 1), + &contractAddressLen); + size_t contractAddrStart = 1 + chainCodeLen + contractAddressLenLen; + VALIDATE(1 <= contractAddressLen && contractAddressLen <= 128, ERR_INVALID_DATA); + VALIDATE(valueLen >= contractAddrStart + contractAddressLen + 1, ERR_INVALID_DATA); + size_t tokenIdLen = value[contractAddrStart + contractAddressLen]; + VALIDATE(valueLen == contractAddrStart + contractAddressLen + 1 + tokenIdLen, ERR_INVALID_DATA); + + str_validateTextBuffer(value + 1, chainCodeLen); + str_validateTextBuffer(value + contractAddrStart, contractAddressLen); + str_validateTextBuffer(value + contractAddrStart + contractAddressLen + 1, tokenIdLen); + + // prepare to display + ASSERT(chainCodeLen + 1 + contractAddressLen + 1 + tokenIdLen < MAX_DISPLAY_VALUE_LENGTH); + snprintf(display, + MAX_DISPLAY_VALUE_LENGTH, + "%.*s:%.*s:%.*s", + chainCodeLen, + value + 1, + (int) contractAddressLen, + value + contractAddrStart, + tokenIdLen, + value + contractAddrStart + contractAddressLen + 1); +} + //-------------------- NUMBER PARSING FUNCTIONS ---------------------- static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { @@ -301,6 +338,10 @@ void parseValueToDisplay(value_format_t format, displayChainCodeTokenCodePublicAddr(value, valueLen, display); break; } + case VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID: { + displayChainCodeContractAddressTokenId(value, valueLen, display); + break; + } default: THROW(ERR_INVALID_DATA); #undef CASE diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index 6a1bc769..1e37e903 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -19,6 +19,7 @@ typedef enum { // Special VALUE_FORMAT_MEMO_HASH = 0x20, VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, + VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID = 0x22, } value_format_t; typedef enum { diff --git a/test-integration/signTransactionAddnft.js b/test-integration/signTransactionAddnft.js new file mode 100644 index 00000000..cfe8804d --- /dev/null +++ b/test-integration/signTransactionAddnft.js @@ -0,0 +1,341 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the addnft action type + const actionAddnft = networkInfo[network].typesTransaction2.get('addnft') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionAddnft.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.address", + name: "addnft", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + url: "My URL", + hash: "My hash", + metadata: "My metadata", + }, + ], + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - two addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + url: "My URL", + hash: "My hash", + metadata: "My metadata", + }, + { + chain_code: "BTC2", + contract_address: "Contract address2", + token_id: "Token2", + url: "My URL2", + hash: "My hash2", + metadata: "My metadata2", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - three addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + url: "My URL", + hash: "My hash", + metadata: "My metadata", + }, + { + chain_code: "BTC2", + contract_address: "Contract address2", + token_id: "Token2", + url: "My URL2", + hash: "My hash2", + metadata: "My metadata2", + }, + { + chain_code: "BTC3", + contract_address: "Contract address3", + token_id: "Token3", + url: "My URL3", + hash: "My hash3", + metadata: "My metadata3", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.01.png b/test-integration/snapshots/signTransactionAddnft/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.03.png b/test-integration/snapshots/signTransactionAddnft/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..878cf2d52b90e930532518d4938b65c3e25c8659 GIT binary patch literal 325 zcmV-L0lNN)P)l-))2uk{A* zkcl3DkJAP3jx)C@N8}*sP@aIQ`q}sRAPgVt4b(^x9iw||P*c$Ex+hQ_P|e^wg69BP zQJtut zn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU78j1dK*sd?a`v6cjbzurJh7KTvkpJZe Xg951Qi!@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.06.png b/test-integration/snapshots/signTransactionAddnft/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.07.png b/test-integration/snapshots/signTransactionAddnft/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIl-))2uk{A* zkcl3DkJAP3jx)C@N8}*sP@aIQ`q}sRAPgVt4b(^x9iw||P*c$Ex+hQ_P|e^wg69BP zQJtut zn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU78j1dK*sd?a`v6cjbzurJh7KTvkpJZe Xg951Qi!@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.14.png b/test-integration/snapshots/signTransactionAddnft/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..4499516209af1466540ede8cb86d179385234945 GIT binary patch literal 419 zcmV;U0bKrxP);Y8Hc!_rr=SU@A2iJ9$4W8USWLNZmvVg(H_LiqUp~%tfsUs=Rru z!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9g!29|U?B3|#1w7#1D|82Zi39|OrjsT z2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o;&oxgVneDTDUOy^3W*jYOc}hCArlH=4^)M>RaKLBK&Vcu%9 zld?7i3ElK;fXo&e_s{1C*+1J+B@<(co$17~Ih2Zw7B2(<00000EMMYB0>$DCO9TJ_ N002ovPDHLkV1fnvz2X1> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.15.png b/test-integration/snapshots/signTransactionAddnft/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.16.png b/test-integration/snapshots/signTransactionAddnft/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIl-))2uk{A* zkcl3DkJAP3jx)C@N8}*sP@aIQ`q}sRAPgVt4b(^x9iw||P*c$Ex+hQ_P|e^wg69BP zQJtut zn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU78j1dK*sd?a`v6cjbzurJh7KTvkpJZe Xg951Qi!@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.23.png b/test-integration/snapshots/signTransactionAddnft/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..4499516209af1466540ede8cb86d179385234945 GIT binary patch literal 419 zcmV;U0bKrxP);Y8Hc!_rr=SU@A2iJ9$4W8USWLNZmvVg(H_LiqUp~%tfsUs=Rru z!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9g!29|U?B3|#1w7#1D|82Zi39|OrjsT z2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o;&oxgVneDTDUOy^3W*jYOc}hCArlH=4^)M>RaKLBK&Vcu%9 zld?7i3ElK;fXo&e_s{1C*+1J+B@<(co$17~Ih2Zw7B2(<00000EMMYB0>$DCO9TJ_ N002ovPDHLkV1fnvz2X1> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.24.png b/test-integration/snapshots/signTransactionAddnft/nanos.24.png new file mode 100644 index 0000000000000000000000000000000000000000..0418a763124c534a3f8ab7b3b2bf9abbbd593ab3 GIT binary patch literal 412 zcmV;N0b~A&P)^oeC~*z|000=rb-L@kk*F=J6ByOEu zLXbbczApc88Ae)B>v10I?SQVVBN zli76SdEc^0E#>GYDm6PZPeGDtPge)OEp9hfEHD; zvp~vup`t`entF6EGj__N-2uig7=ufXy3jP_#Insz*dNM;(s_yWp8#Xg=HJnVAfcN= z0?bk(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.26.png b/test-integration/snapshots/signTransactionAddnft/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 12:43:46 +0200 Subject: [PATCH 39/83] Remnft --- MakefileTest.mk | 1 + .../transactionTemplates/template_all.ts | 2 + .../transactionTemplates/template_remnft.ts | 117 +++++++ ledgerjs-fio/src/types/internal.ts | 17 +- ledgerjs-fio/src/types/public.ts | 28 +- ledgerjs-fio/src/utils/parse.ts | 7 +- ledgerjs-fio/src/utils/parseTxActions.ts | 26 +- test-integration/signTransactionRemnft.js | 323 ++++++++++++++++++ .../signTransactionRemnft/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionRemnft/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionRemnft/nanos.03.png | Bin 0 -> 368 bytes .../signTransactionRemnft/nanos.04.png | Bin 0 -> 508 bytes .../signTransactionRemnft/nanos.05.png | Bin 0 -> 396 bytes .../signTransactionRemnft/nanos.06.png | Bin 0 -> 393 bytes .../signTransactionRemnft/nanos.07.png | Bin 0 -> 424 bytes .../signTransactionRemnft/nanos.08.png | Bin 0 -> 356 bytes .../signTransactionRemnft/nanos.09.png | Bin 0 -> 426 bytes .../signTransactionRemnft/nanos.10.png | Bin 0 -> 314 bytes .../signTransactionRemnft/nanos.11.png | Bin 0 -> 368 bytes .../signTransactionRemnft/nanos.12.png | Bin 0 -> 508 bytes .../signTransactionRemnft/nanos.13.png | Bin 0 -> 396 bytes .../signTransactionRemnft/nanos.14.png | Bin 0 -> 419 bytes .../signTransactionRemnft/nanos.15.png | Bin 0 -> 393 bytes .../signTransactionRemnft/nanos.16.png | Bin 0 -> 424 bytes .../signTransactionRemnft/nanos.17.png | Bin 0 -> 356 bytes .../signTransactionRemnft/nanos.18.png | Bin 0 -> 426 bytes .../signTransactionRemnft/nanos.19.png | Bin 0 -> 314 bytes .../signTransactionRemnft/nanos.20.png | Bin 0 -> 368 bytes .../signTransactionRemnft/nanos.21.png | Bin 0 -> 508 bytes .../signTransactionRemnft/nanos.22.png | Bin 0 -> 396 bytes .../signTransactionRemnft/nanos.23.png | Bin 0 -> 419 bytes .../signTransactionRemnft/nanos.24.png | Bin 0 -> 412 bytes .../signTransactionRemnft/nanos.25.png | Bin 0 -> 393 bytes .../signTransactionRemnft/nanos.26.png | Bin 0 -> 424 bytes .../signTransactionRemnft/nanos.27.png | Bin 0 -> 356 bytes .../signTransactionRemnft/nanos.28.png | Bin 0 -> 426 bytes 36 files changed, 515 insertions(+), 6 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts create mode 100644 test-integration/signTransactionRemnft.js create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.28.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 3fcb3f56..ab97fdef 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -41,6 +41,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionAddaddress.js) $(call run_nodejs_test,5001,40001,signTransactionRemaddress.js) $(call run_nodejs_test,5001,40001,signTransactionAddnft.js) + $(call run_nodejs_test,5001,40001,signTransactionRemnft.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 51025131..c7b99d80 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -9,6 +9,7 @@ import { template_recordopt } from "./template_recordobt"; import { template_addaddress } from "./template_addaddress"; import { template_remaddress } from "./template_remaddress"; import { template_addnft } from "./template_addnft"; +import { template_remnft } from "./template_remnft"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -23,6 +24,7 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_addaddress, template_remaddress, template_addnft, + template_remnft, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts new file mode 100644 index 00000000..47af3211 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -0,0 +1,117 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedMapNFTSignature, ParsedNFT, ParsedRemoveNFTSignature, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("remnft", InvalidDataReason.UNEXPECTED_ERROR); + + +function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRemoveNFTSignature = tx.actions[0].data as ParsedRemoveNFTSignature; + + //Matching template + if (actionData.nfts.length != 1) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + ] +} + +function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRemoveNFTSignature = tx.actions[0].data as ParsedRemoveNFTSignature; + + //Matching template + if (actionData.nfts.length != 2) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("02" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, + actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + ] +} + +function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].account === CONTRACT_ACCOUNT, InvalidDataReason. ACTION_NOT_SUPPORTED); + validate(tx.actions[0].name === CONTRACT_NAME, InvalidDataReason. ACTION_NOT_SUPPORTED); + + const actionData: ParsedRemoveNFTSignature = tx.actions[0].data as ParsedRemoveNFTSignature; + + //Matching template + if (actionData.nfts.length != 3) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("03" as HexString), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, + actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, + actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, + actionData.nfts[2].contract_address, actionData.nfts[2].token_id), + ] +} + +export function template_remnft(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedMapNFTSignature = tx.actions[0].data as ParsedMapNFTSignature; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const addressesCommands: Array = templateAlternative([template1, template2, template3])(chainId, tx, parsedPath) + validate(addressesCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove nft mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...addressesCommands, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 0da13ad6..7463d35e 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -107,6 +107,20 @@ export type ParsedMapNFTSignature = { tpid: VarlenAsciiString } +export type ParsedSmallNFT = { + chain_code: VarlenAsciiString + contract_address: VarlenAsciiString + token_id: VarlenAsciiString +} + +export type ParsedRemoveNFTSignature = { + fio_address: VarlenAsciiString + nfts: Array + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -118,7 +132,8 @@ export type ParsedActionData = ParsedRecordOtherBlockchainTransactionMetadata | ParsedMapBlockchainPublicAddress | ParsedRemoveAddress | - ParsedMapNFTSignature + ParsedMapNFTSignature | + ParsedRemoveNFTSignature export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 0c5da25b..91dd3742 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -240,7 +240,7 @@ export type TransferFIOTokensData = { } /** - * Represents NFT. + * Represents NFT for addnft. * @category Basic types * @see [[Action]] */ @@ -253,6 +253,17 @@ export type TransferFIOTokensData = { metadata: string } + /** + * Represents NFT for remnft. + * @category Basic types + * @see [[Action]] + */ + export type SmallNFT = { + chain_code: string + contract_address: string + token_id: string + } + /** * Represents Map NFT Signature to a FIO Crypto Handle data. * @category Basic types @@ -266,6 +277,18 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Remove NFT Signature from FIO Crypto Handle data. + * @category Basic types + * @see [[Action]] + */ + export type RemoveNFTSignature = { + fio_address: string + nfts: Array + max_fee: bigint_like + actor: string + tpid: string +} /** * Represents authorisation in transaction Actions. * @category Basic types @@ -292,7 +315,8 @@ export type Action = { RecordOtherBlockchainTransactionMetadata | MapBlockchainPublicAddress | RemoveMappedAddress | - MapNFTSignature + MapNFTSignature | + RemoveNFTSignature } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 7f6a549d..05c7b982 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRemoveMappedAddress } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRemoveMappedAddress, parseRemoveNFTSignature } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -230,6 +230,9 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "addnft") { parsedActionData = parseMapNFTSignature(action.data as MapNFTSignature) } + else if (action.account === "fio.address" && action.name === "remnft") { + parsedActionData = parseRemoveNFTSignature(action.data as RemoveNFTSignature) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 1bc36f49..e8f67aab 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,5 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, - PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature } from "fio"; + PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -15,6 +15,8 @@ import { ParsedRemoveAddress as ParsedRemoveMappedAddress, ParsedNFT, ParsedMapNFTSignature, + ParsedRemoveNFTSignature, + ParsedSmallNFT, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -131,3 +133,25 @@ export function parseMapNFTSignature(data: MapNFTSignature): ParsedMapNFTSignatu } } +function parseSmallNFT(a: SmallNFT): ParsedSmallNFT { + return { + chain_code: parseAscii(a.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + contract_address: parseAscii(a.contract_address, InvalidDataReason.INVALID_TOKEN_CODE, 1, 128), + token_id: parseAscii(a.token_id, InvalidDataReason.INVALID_TOKEN_CODE, 1, 64), + } +} + +function parseSmallNFTs(a: Array): Array { + validate(1 <= a.length && a.length <= 3, InvalidDataReason.INCORRECT_NUMBER_OF_NFTS) + return a.map( e => parseSmallNFT(e)) +} + +export function parseRemoveNFTSignature(data: RemoveNFTSignature): ParsedRemoveNFTSignature { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + nfts: parseSmallNFTs(data.nfts), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} diff --git a/test-integration/signTransactionRemnft.js b/test-integration/signTransactionRemnft.js new file mode 100644 index 00000000..5c55097b --- /dev/null +++ b/test-integration/signTransactionRemnft.js @@ -0,0 +1,323 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, pubkey) { + // We serialize the transaction + // Get the remnft action type + const actionRemnft = networkInfo[network].typesTransaction2.get('remnft') + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionRemnft.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.address", + name: "remnft", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + }, + ], + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign testnet transaction"); +{ + const network = "TESTNET" + const tx = basicTx + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - two addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + }, + { + chain_code: "BTC2", + contract_address: "Contract address2", + token_id: "Token2", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +//Important, we need all the testcases to validate presence of corresponding integrity hash +testStep(" - - -", "Sign mainnet transaction - three addresses"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + ...basicTx.actions[0], + data: { + ...basicTx.actions[0].data, + nfts: [ + { + chain_code: "BTC", + contract_address: "Contract address", + token_id: "Token1", + }, + { + chain_code: "BTC2", + contract_address: "Contract address2", + token_id: "Token2", + }, + { + chain_code: "BTC3", + contract_address: "Contract address3", + token_id: "Token3", + }, + ], + } + }] + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.01.png b/test-integration/snapshots/signTransactionRemnft/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.03.png b/test-integration/snapshots/signTransactionRemnft/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..2c164fd2a777adf9067da2fe8a520fac72d9fdf7 GIT binary patch literal 368 zcmV-$0gwKPP)o?DoEcLa0DuE#FQoqfa$pZ~U=MO&$x!sqxje7rh;Mg4{oeyF*XZL7 zvu3aiV@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.06.png b/test-integration/snapshots/signTransactionRemnft/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.07.png b/test-integration/snapshots/signTransactionRemnft/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIo?DoEcLa0DuE#FQoqfa$pZ~U=MO&$x!sqxje7rh;Mg4{oeyF*XZL7 zvu3aiV@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.14.png b/test-integration/snapshots/signTransactionRemnft/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..4499516209af1466540ede8cb86d179385234945 GIT binary patch literal 419 zcmV;U0bKrxP);Y8Hc!_rr=SU@A2iJ9$4W8USWLNZmvVg(H_LiqUp~%tfsUs=Rru z!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9g!29|U?B3|#1w7#1D|82Zi39|OrjsT z2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o;&oxgVneDTDUOy^3W*jYOc}hCArlH=4^)M>RaKLBK&Vcu%9 zld?7i3ElK;fXo&e_s{1C*+1J+B@<(co$17~Ih2Zw7B2(<00000EMMYB0>$DCO9TJ_ N002ovPDHLkV1fnvz2X1> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.15.png b/test-integration/snapshots/signTransactionRemnft/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.16.png b/test-integration/snapshots/signTransactionRemnft/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIo?DoEcLa0DuE#FQoqfa$pZ~U=MO&$x!sqxje7rh;Mg4{oeyF*XZL7 zvu3aiV@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000MHB$!q$9S8}%5mO?$tbmi5eikpueXe>Z$vUgHb>DcepYk|h4Nl<#)bGk0S~~= z0df1K9Y1N}8(+XB9~`v@T0Xv|2*`i8udbr=3gg->xUm<=<1( zM9HCatJ1Bchk+ANSKg2z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.23.png b/test-integration/snapshots/signTransactionRemnft/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..4499516209af1466540ede8cb86d179385234945 GIT binary patch literal 419 zcmV;U0bKrxP);Y8Hc!_rr=SU@A2iJ9$4W8USWLNZmvVg(H_LiqUp~%tfsUs=Rru z!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9g!29|U?B3|#1w7#1D|82Zi39|OrjsT z2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o;&oxgVneDTDUOy^3W*jYOc}hCArlH=4^)M>RaKLBK&Vcu%9 zld?7i3ElK;fXo&e_s{1C*+1J+B@<(co$17~Ih2Zw7B2(<00000EMMYB0>$DCO9TJ_ N002ovPDHLkV1fnvz2X1> literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.24.png b/test-integration/snapshots/signTransactionRemnft/nanos.24.png new file mode 100644 index 0000000000000000000000000000000000000000..0418a763124c534a3f8ab7b3b2bf9abbbd593ab3 GIT binary patch literal 412 zcmV;N0b~A&P)^oeC~*z|000=rb-L@kk*F=J6ByOEu zLXbbczApc88Ae)B>v10I?SQVVBN zli76SdEc^0E#>GYDm6PZPeGDtPge)OEp9hfEHD; zvp~vup`t`entF6EGj__N-2uig7=ufXy3jP_#Insz*dNM;(s_yWp8#Xg=HJnVAfcN= z0?bk(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.26.png b/test-integration/snapshots/signTransactionRemnft/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 14:22:39 +0200 Subject: [PATCH 40/83] addalladdr, cancelfndreq, rejecthndreq --- MakefileTest.mk | 2 + .../transactionTemplates/template_all.ts | 6 + .../template_cancelfndreq.ts | 46 +++ .../template_rejectfndreq.ts | 46 +++ .../template_remalladdr.ts | 49 ++++ ledgerjs-fio/src/types/internal.ts | 27 +- ledgerjs-fio/src/types/public.ts | 42 ++- ledgerjs-fio/src/utils/parse.ts | 13 +- ledgerjs-fio/src/utils/parseTxActions.ts | 33 ++- .../signTransactionOtherFioAddress.js | 227 +++++++++++++++ .../signTransactionOtherFioReqobt.js | 266 ++++++++++++++++++ .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 354 bytes .../nanos.04.png | Bin 0 -> 508 bytes .../nanos.05.png | Bin 0 -> 393 bytes .../nanos.06.png | Bin 0 -> 424 bytes .../nanos.07.png | Bin 0 -> 356 bytes .../nanos.08.png | Bin 0 -> 426 bytes .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 364 bytes .../nanos.04.png | Bin 0 -> 371 bytes .../nanos.05.png | Bin 0 -> 393 bytes .../nanos.06.png | Bin 0 -> 424 bytes .../nanos.07.png | Bin 0 -> 356 bytes .../nanos.08.png | Bin 0 -> 426 bytes .../nanos.09.png | Bin 0 -> 314 bytes .../nanos.10.png | Bin 0 -> 373 bytes .../nanos.11.png | Bin 0 -> 371 bytes .../nanos.12.png | Bin 0 -> 393 bytes .../nanos.13.png | Bin 0 -> 424 bytes .../nanos.14.png | Bin 0 -> 356 bytes .../nanos.15.png | Bin 0 -> 426 bytes 34 files changed, 752 insertions(+), 5 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts create mode 100644 test-integration/signTransactionOtherFioAddress.js create mode 100644 test-integration/signTransactionOtherFioReqobt.js create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanos.15.png diff --git a/MakefileTest.mk b/MakefileTest.mk index ab97fdef..4ef0dc05 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -42,6 +42,8 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionRemaddress.js) $(call run_nodejs_test,5001,40001,signTransactionAddnft.js) $(call run_nodejs_test,5001,40001,signTransactionRemnft.js) + $(call run_nodejs_test,5001,40001,signTransactionOtherFioAddress.js) + $(call run_nodejs_test,5001,40001,signTransactionOtherFioReqobt.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index c7b99d80..3b1f4635 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -10,6 +10,9 @@ import { template_addaddress } from "./template_addaddress"; import { template_remaddress } from "./template_remaddress"; import { template_addnft } from "./template_addnft"; import { template_remnft } from "./template_remnft"; +import { template_remalladdr } from "./template_remalladdr"; +import { template_cancelfndreq } from "./template_cancelfndreq"; +import { template_rejectfndreq } from "./template_rejectfndreq"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -25,6 +28,9 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_remaddress, template_addnft, template_remnft, + template_remalladdr, + template_cancelfndreq, + template_rejectfndreq, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts new file mode 100644 index 00000000..41a2afc1 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts @@ -0,0 +1,46 @@ +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t, ParsedCancelFundsRequest} from "../../types/internal" +import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, + COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("cancelfndreq", InvalidDataReason.UNEXPECTED_ERROR); + +export function template_cancelfndreq(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + // Validate template expectations + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedCancelFundsRequest = tx.actions[0].data as ParsedCancelFundsRequest; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Cancel funds request"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts new file mode 100644 index 00000000..c43ee0a6 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts @@ -0,0 +1,46 @@ +import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t, ParsedRejectFundsRequest} from "../../types/internal" +import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, + COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.reqobt", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("rejectfndreq", InvalidDataReason.UNEXPECTED_ERROR); + +export function template_rejectfndreq(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + // Validate template expectations + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRejectFundsRequest = tx.actions[0].data as ParsedRejectFundsRequest; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Reject funds request"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts new file mode 100644 index 00000000..d8f84df8 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts @@ -0,0 +1,49 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("remalladdr", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_remalladdr(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRemoveAllMappedAddresses = tx.actions[0].data as ParsedRemoveAllMappedAddresses; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 7463d35e..b821cb7d 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -121,6 +121,28 @@ export type ParsedRemoveNFTSignature = { tpid: VarlenAsciiString } +export type ParsedRemoveAllMappedAddresses = { + fio_address: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedCancelFundsRequest = { + fio_request_id: VarlenAsciiString + max_fee: Uint64_str + actor: VarlenAsciiString + tpid: VarlenAsciiString +} + +export type ParsedRejectFundsRequest = { + fio_request_id: VarlenAsciiString + max_fee: Uint64_str + actor: VarlenAsciiString + tpid: VarlenAsciiString +} + + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -133,7 +155,10 @@ export type ParsedActionData = ParsedMapBlockchainPublicAddress | ParsedRemoveAddress | ParsedMapNFTSignature | - ParsedRemoveNFTSignature + ParsedRemoveNFTSignature | + ParsedRemoveAllMappedAddresses | + ParsedCancelFundsRequest | + ParsedRejectFundsRequest export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 91dd3742..b95f4719 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -289,6 +289,43 @@ export type TransferFIOTokensData = { actor: string tpid: string } + +/** + * Remove all mapped addresses data. + * @category Basic types + * @see [[Action]] + */ + export type RemoveAllMappedAddresses = { + fio_address: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Cancel Funds Request data. + * @category Basic types + * @see [[Action]] + */ + export type CancelFundsRequest = { + fio_request_id: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Reject Funds Request data. + * @category Basic types + * @see [[Action]] + */ + export type RejectFundsRequest = { + fio_request_id: string + max_fee: bigint_like + actor: string + tpid: string +} + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -316,7 +353,10 @@ export type Action = { MapBlockchainPublicAddress | RemoveMappedAddress | MapNFTSignature | - RemoveNFTSignature + RemoveNFTSignature | + RemoveAllMappedAddresses | + CancelFundsRequest | + RejectFundsRequest } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 05c7b982..cdce085e 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRemoveMappedAddress, parseRemoveNFTSignature } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseCancelRequestFunds, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveMappedAddress, parseRemoveNFTSignature } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -233,6 +233,15 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "remnft") { parsedActionData = parseRemoveNFTSignature(action.data as RemoveNFTSignature) } + else if (action.account === "fio.address" && action.name === "remalladdr") { + parsedActionData = parseRemoveAllMappedAddresses(action.data as RemoveAllMappedAddresses) + } + else if (action.account === "fio.reqobt" && action.name === "cancelfndreq") { + parsedActionData = parseCancelRequestFunds(action.data as CancelFundsRequest) + } + else if (action.account === "fio.reqobt" && action.name === "rejectfndreq") { + parsedActionData = parseRejectRequestFunds(action.data as RejectFundsRequest) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index e8f67aab..bb738659 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,5 +1,6 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, - PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT } from "fio"; + PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT, RemoveAllMappedAddresses, + CancelFundsRequest, RejectFundsRequest } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -17,6 +18,9 @@ import { ParsedMapNFTSignature, ParsedRemoveNFTSignature, ParsedSmallNFT, + ParsedRemoveAllMappedAddresses, + ParsedCancelFundsRequest, + ParsedRejectFundsRequest, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -155,3 +159,30 @@ export function parseRemoveNFTSignature(data: RemoveNFTSignature): ParsedRemoveN tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } } + +export function parseRemoveAllMappedAddresses(data: RemoveAllMappedAddresses): ParsedRemoveAllMappedAddresses { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseCancelRequestFunds(data: CancelFundsRequest): ParsedCancelFundsRequest { + return { + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseRejectRequestFunds(data: RejectFundsRequest): ParsedRejectFundsRequest { + return { + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} diff --git a/test-integration/signTransactionOtherFioAddress.js b/test-integration/signTransactionOtherFioAddress.js new file mode 100644 index 00000000..d6133b96 --- /dev/null +++ b/test-integration/signTransactionOtherFioAddress.js @@ -0,0 +1,227 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.address"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, txtype, pubkey) { + // We serialize the transaction + // Get the action type + const actionType = networkInfo[network].typesTransaction2.get(txtype) + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionType.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction - remalladdr"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "remalladdr", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/signTransactionOtherFioReqobt.js b/test-integration/signTransactionOtherFioReqobt.js new file mode 100644 index 00000000..24a28cb2 --- /dev/null +++ b/test-integration/signTransactionOtherFioReqobt.js @@ -0,0 +1,266 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiReqobtMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() +const abiReqobtTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.reqobt"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiReqobtTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, txtype, pubkey) { + // We serialize the transaction + // Get the action type + const actionType = networkInfo[network].typesTransaction2.get(txtype) + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionType.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction - cancalefndreq"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.reqobt", + name: "cancelfndreq", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_request_id: "Fio request ID", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - cancalefndreq"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.reqobt", + name: "rejectfndreq", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_request_id: "Fio request ID", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.01.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.03.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..17af894514d076e6ab7aadfdf2335546a39899f8 GIT binary patch literal 354 zcmV-o0iFJdP)wKpV0jfltzSZWzthy(`{*oWomY^;;fk}G*+)x$uhlRPmo)W$_}M< z63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t`=7LVe;C6w(GZHP%1Dbd3Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.06.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.03.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..c30bd7233322a18db6ca2cc9f609caecd0346bd0 GIT binary patch literal 364 zcmV-y0h9iTP)TVFLu(`iiisfr0002)*f)Dgpe6cL@a!y3|Bg1` z9}1_(zsnl-Ei7v(LtFAjZ~~nHtoMs+eWM#bqYdClBRY=msqvbEX7_u-YXH~`J|q4D zkgupATVwNd6a~^ETnOhf000Nfo=BenVlW=WU_6MyNQ}L|Z@-@{Y=`ZN#*V%&-tPqM z*+kdC0Mu1CY{ckJht?fyl}L6=#rB!*=G(5K{HfGc)2_FQeL-po#eP>Pk0yP2l5Ibo z0ga{5n(?x5pHi!7DdO@Rzdtz$qcxZ5k994GW&{0Gw?VUqAl8|N^MI#+()u`TxH@19!b6l1ONa4-pc{##?;M)pr>vC0000< KMNUMnLSTZbOrf~| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.04.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..f7df1097c3796613f32224cd0d0c406596909b83 GIT binary patch literal 371 zcmV-(0gV2MP)Tu<}fku9_8nrQr@G{mXQamp;$mdEaTYgjRa(|5m0makX9Jl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;ap zGPxOy()+Kd%AE0c)`jfkNNufY0(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.06.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.06.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIKP)0ssI2!f_tsErFF3Qzf#i1pVpl zz$aXSo*uWI&V#o7YQtN~M$mw-05STP|Mtc(JiHx{$TK?4?xl&k1+52qAP4>+2c8U${&~EAvj?_}GTVnv#yc=W zV-foq(z$N}>Z4C6#6&&Ps8$jyuS!)e*I&Hnn&ip9yjH1+RbI_c#S@V!RiQ3D8s91! zXRWbQ2dz!Up3hObZPB*^#Mz{~;=UJCYqn;apU{^8zWk}R+}tG^zI!NU^BHj;a7WcX zjL)MFVO@{pZ!H=p#~3>?$`-j)_wx%+oVkaWW`=%F$ScWzV)BK|Vsjq=0M_CKzW3b8 TEm|HU00000NkvXXu0mjfcTu<}fku9_8nrQr@G{mXQamp;$mdEaTYgjRa(|5m0makX9Jl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;ap zGPxOy()+Kd%AE0c)`jfkNNufY0(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.13.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Sun, 10 Jul 2022 15:35:30 +0200 Subject: [PATCH 41/83] addbundles, regaddress, xferaddress, regdomain, renewdomain --- ledgerjs-fio/src/errors/invalidDataReason.ts | 1 + .../transactionTemplates/commands.ts | 16 ++ .../template_addbundles.ts | 51 +++++ .../transactionTemplates/template_all.ts | 10 + .../template_regaddress.ts | 52 +++++ .../template_regdomain.ts | 52 +++++ .../template_renewdomain.ts | 49 +++++ .../template_xferaddress.ts | 53 +++++ ledgerjs-fio/src/types/internal.ts | 46 ++++- ledgerjs-fio/src/types/public.ts | 71 ++++++- ledgerjs-fio/src/utils/parse.ts | 19 +- ledgerjs-fio/src/utils/parseTxActions.ts | 60 +++++- .../signTransactionOtherFioAddress.js | 194 ++++++++++++++++++ .../nanos.09.png | Bin 0 -> 322 bytes .../nanos.10.png | Bin 0 -> 354 bytes .../nanos.11.png | Bin 0 -> 508 bytes .../nanos.12.png | Bin 0 -> 392 bytes .../nanos.13.png | Bin 0 -> 393 bytes .../nanos.14.png | Bin 0 -> 424 bytes .../nanos.15.png | Bin 0 -> 356 bytes .../nanos.16.png | Bin 0 -> 426 bytes .../nanos.17.png | Bin 0 -> 322 bytes .../nanos.18.png | Bin 0 -> 354 bytes .../nanos.19.png | Bin 0 -> 508 bytes .../nanos.20.png | Bin 0 -> 441 bytes .../nanos.21.png | Bin 0 -> 393 bytes .../nanos.22.png | Bin 0 -> 424 bytes .../nanos.23.png | Bin 0 -> 356 bytes .../nanos.24.png | Bin 0 -> 426 bytes .../nanos.25.png | Bin 0 -> 322 bytes .../nanos.26.png | Bin 0 -> 339 bytes .../nanos.27.png | Bin 0 -> 508 bytes .../nanos.28.png | Bin 0 -> 441 bytes .../nanos.29.png | Bin 0 -> 393 bytes .../nanos.30.png | Bin 0 -> 424 bytes .../nanos.31.png | Bin 0 -> 356 bytes .../nanos.32.png | Bin 0 -> 426 bytes .../nanos.33.png | Bin 0 -> 314 bytes .../nanos.34.png | Bin 0 -> 354 bytes .../nanos.35.png | Bin 0 -> 354 bytes .../nanos.36.png | Bin 0 -> 441 bytes .../nanos.37.png | Bin 0 -> 393 bytes .../nanos.38.png | Bin 0 -> 424 bytes .../nanos.39.png | Bin 0 -> 356 bytes .../nanos.40.png | Bin 0 -> 426 bytes .../nanos.41.png | Bin 0 -> 314 bytes .../nanos.42.png | Bin 0 -> 354 bytes .../nanos.43.png | Bin 0 -> 354 bytes .../nanos.44.png | Bin 0 -> 393 bytes .../nanos.45.png | Bin 0 -> 424 bytes .../nanos.46.png | Bin 0 -> 356 bytes .../nanos.47.png | Bin 0 -> 426 bytes 52 files changed, 667 insertions(+), 7 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.47.png diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index 2584e2dc..569c1373 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -43,4 +43,5 @@ export enum InvalidDataReason { INVALID_CONTEXT = "invalid context", INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES = "incorrect number of public addresses", INCORRECT_NUMBER_OF_NFTS = "incorrect number of nfts", + INVALID_BUNDLE_SETS = "invalid bundle sets" } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 03b50686..f048b24a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -260,6 +260,22 @@ export function COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW(key: string, varData: Buffer } } +export function COMMAND_APPEND_DATA_UINT64_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: number = 0xFFFFFFFF): Command { + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_UINT64, + VALUE_VALIDATION.VALUE_VALIDATION_NUMBER, BigInt(minAmount), BigInt(maxAmount), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: varData, + txLen: varData.length, + } +} + export function COMMANDS_COUNTED_SECTION(commands: Array, min: number = 0, max: number = 0xFFFFFFFF): Array { const varData = varuint32_to_buf(getCommandVarLength(commands)); diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts new file mode 100644 index 00000000..17ec1054 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts @@ -0,0 +1,51 @@ +import type {HexString, ParsedActionAuthorisation, ParsedBuyBundledTransaction, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_UINT64_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("addbundles", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_addbundles(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedBuyBundledTransaction = tx.actions[0].data as ParsedBuyBundledTransaction; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + COMMAND_APPEND_DATA_UINT64_SHOW("Bundle sets", uint64_to_buf(actionData.bundle_sets).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 3b1f4635..66fb395a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -13,6 +13,11 @@ import { template_remnft } from "./template_remnft"; import { template_remalladdr } from "./template_remalladdr"; import { template_cancelfndreq } from "./template_cancelfndreq"; import { template_rejectfndreq } from "./template_rejectfndreq"; +import { template_addbundles } from "./template_addbundles"; +import { template_regaddress } from "./template_regaddress"; +import { template_xferaddress } from "./template_xferaddress"; +import { template_regdomain } from "./template_regdomain"; +import { template_renewdomain } from "./template_renewdomain"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -31,6 +36,11 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_remalladdr, template_cancelfndreq, template_rejectfndreq, + template_addbundles, + template_regaddress, + template_xferaddress, + template_regdomain, + template_renewdomain, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts new file mode 100644 index 00000000..f0e04ec2 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts @@ -0,0 +1,52 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("regaddress", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_regaddress(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRegisterAddress = tx.actions[0].data as ParsedRegisterAddress; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts new file mode 100644 index 00000000..87c3c3a5 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts @@ -0,0 +1,52 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("regdomain", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_regdomain(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRegisterDomain = tx.actions[0].data as ParsedRegisterDomain; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts new file mode 100644 index 00000000..fa5ced5f --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts @@ -0,0 +1,49 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedRenewDomain, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("renewdomain", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_renewdomain(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRenewDomain = tx.actions[0].data as ParsedRenewDomain; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts new file mode 100644 index 00000000..1fb48bf5 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts @@ -0,0 +1,53 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferAddress, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_UINT64_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("xferaddress", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_xferaddress(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedTransferAddress = tx.actions[0].data as ParsedTransferAddress; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Add bundles"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index b821cb7d..adbbfcab 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -142,6 +142,45 @@ export type ParsedRejectFundsRequest = { tpid: VarlenAsciiString } +export type ParsedBuyBundledTransaction = { + fio_address: VarlenAsciiString + bundle_sets: Uint64_str + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedRegisterAddress = { + fio_address: VarlenAsciiString + owner_fio_public_key: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedTransferAddress = { + fio_address: VarlenAsciiString + new_owner_fio_public_key: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedRegisterDomain = { + fio_domain: VarlenAsciiString + owner_fio_public_key: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedRenewDomain = { + fio_domain: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + export type ParsedActionAuthorisation = { actor: NameString @@ -158,7 +197,12 @@ export type ParsedActionData = ParsedRemoveNFTSignature | ParsedRemoveAllMappedAddresses | ParsedCancelFundsRequest | - ParsedRejectFundsRequest + ParsedRejectFundsRequest | + ParsedRegisterAddress | + ParsedTransferAddress | + ParsedBuyBundledTransaction | + ParsedRegisterDomain | + ParsedRenewDomain export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index b95f4719..02b7f827 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -326,6 +326,70 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Buy bundled ransaction data. + * @category Basic types + * @see [[Action]] + */ + export type BuyBundledTransaction = { + fio_address: string + bundle_sets: bigint_like + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Register address data. + * @category Basic types + * @see [[Action]] + */ + export type RegisterAddress = { + fio_address: string + owner_fio_public_key: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Transfer address data. + * @category Basic types + * @see [[Action]] + */ + export type TransferAddress = { + fio_address: string + new_owner_fio_public_key: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Register domain data. + * @category Basic types + * @see [[Action]] + */ + export type RegisterDomain = { + fio_domain: string + owner_fio_public_key: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Renew domain data. + * @category Basic types + * @see [[Action]] + */ + export type RenewDomain = { + fio_domain: string + max_fee: bigint_like + actor: string + tpid: string +} + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -356,7 +420,12 @@ export type Action = { RemoveNFTSignature | RemoveAllMappedAddresses | CancelFundsRequest | - RejectFundsRequest + RejectFundsRequest | + BuyBundledTransaction | + RegisterAddress | + TransferAddress | + RegisterDomain | + RenewDomain } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index cdce085e..419183da 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseCancelRequestFunds, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveMappedAddress, parseRemoveNFTSignature } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseBuyBundledTransaction, parseCancelRequestFunds, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseTransferAddress } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -242,6 +242,21 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.reqobt" && action.name === "rejectfndreq") { parsedActionData = parseRejectRequestFunds(action.data as RejectFundsRequest) } + else if (action.account === "fio.address" && action.name === "addbundles") { + parsedActionData = parseBuyBundledTransaction(action.data as BuyBundledTransaction) + } + else if (action.account === "fio.address" && action.name === "regaddress") { + parsedActionData = parseRegisterAddress(action.data as RegisterAddress) + } + else if (action.account === "fio.address" && action.name === "xferaddress") { + parsedActionData = parseTransferAddress(action.data as TransferAddress) + } + else if (action.account === "fio.address" && action.name === "regdomain") { + parsedActionData = parseRegisterDomain(action.data as RegisterDomain) + } + else if (action.account === "fio.address" && action.name === "renewdomain") { + parsedActionData = parseRenewDomain(action.data as RenewDomain) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index bb738659..145a74a3 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,12 +1,12 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT, RemoveAllMappedAddresses, - CancelFundsRequest, RejectFundsRequest } from "fio"; + CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, + RenewDomain, + } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, _Uint64_num, - HexString, - ParsedAction, ParsedTransferFIOTokensData, ParsedRequestFundsData, ParsedRecordOtherBlockchainTransactionMetadata, @@ -21,6 +21,11 @@ import { ParsedRemoveAllMappedAddresses, ParsedCancelFundsRequest, ParsedRejectFundsRequest, + ParsedBuyBundledTransaction, + ParsedRegisterAddress, + ParsedTransferAddress, + ParsedRegisterDomain, + ParsedRenewDomain, } from "../types/internal" import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -186,3 +191,52 @@ export function parseRejectRequestFunds(data: RejectFundsRequest): ParsedRejectF tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } } + +export function parseBuyBundledTransaction(data: BuyBundledTransaction): ParsedBuyBundledTransaction { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + bundle_sets: parseUint64_str(data.bundle_sets, {}, InvalidDataReason.INVALID_BUNDLE_SETS), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseRegisterAddress(data: RegisterAddress): ParsedRegisterAddress { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + owner_fio_public_key: parseAscii(data.owner_fio_public_key, InvalidDataReason.INVALID_PUBLIC_KEY), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseTransferAddress(data: TransferAddress): ParsedTransferAddress { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + new_owner_fio_public_key: parseAscii(data.new_owner_fio_public_key, InvalidDataReason.INVALID_PUBLIC_KEY), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseRegisterDomain(data: RegisterDomain): ParsedRegisterDomain { + return { + fio_domain: parseAscii(data.fio_domain, InvalidDataReason.INVALID_FIO_ADDRESS, 1, 62), + owner_fio_public_key: parseAscii(data.owner_fio_public_key, InvalidDataReason.INVALID_PUBLIC_KEY), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseRenewDomain(data: RenewDomain): ParsedRenewDomain { + return { + fio_domain: parseAscii(data.fio_domain, InvalidDataReason.INVALID_FIO_ADDRESS, 1, 62), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} diff --git a/test-integration/signTransactionOtherFioAddress.js b/test-integration/signTransactionOtherFioAddress.js index d6133b96..5f66d3e3 100644 --- a/test-integration/signTransactionOtherFioAddress.js +++ b/test-integration/signTransactionOtherFioAddress.js @@ -222,6 +222,200 @@ testStep(" - - -", "Sign testnet transaction - remalladdr"); assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } +testStep(" - - -", "Sign testnet transaction - addbundles"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "addbundles", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + bundle_sets: 0x33223344, + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - regaddress"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "regaddress", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + owner_fio_public_key: "My FIO Public Key", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - xferaddress"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "xferaddress", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + new_owner_fio_public_key: "My FIO Public Key", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - regdomain"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "regdomain", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "FIO DOMAIN", + owner_fio_public_key: "My FIO Public Key", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - renewdomain"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "renewdomain", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "FIO DOMAIN", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + await transport.close() testEnd(scriptName); process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.09.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.10.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.10.png new file mode 100644 index 0000000000000000000000000000000000000000..17af894514d076e6ab7aadfdf2335546a39899f8 GIT binary patch literal 354 zcmV-o0iFJdP)wKpV0jfltzSZWzthy(`{*oWomY^;;fk}G*+)x$uhlRPmo)W$_}M< z63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t`=7LVe;C6w(GZHP%1Dbd3Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000JH)P!l_?J($&%}6~E0En6{@a+x_+#AL$_fz`A^|w2|K5Xk^9M z7QKsmH26jUb@qZNw#(F=Mv|lZx88yZB3X^5YsJ3qx!pGjHzeKP%L+fkHv-sM8K86eCgx6 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.13.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.13.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.14.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.18.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.18.png new file mode 100644 index 0000000000000000000000000000000000000000..17af894514d076e6ab7aadfdf2335546a39899f8 GIT binary patch literal 354 zcmV-o0iFJdP)wKpV0jfltzSZWzthy(`{*oWomY^;;fk}G*+)x$uhlRPmo)W$_}M< z63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t`=7LVe;C6w(GZHP%1Dbd3Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000f^2!bGZDyxarW4}7tOuT^ZXkW(; zbO0NFn47kJe=Jd&56E38cC|6~9DicxtZ*r(MUW&!I~hcq?B9gyc!dvV}axCHxR5^U% zMhs5E{@S6U@L6}O*F=X(s=uH?Et8`i-fE@H&e%W|d38aas0J$O2r({?RU$B0iv*xr zHJ2QnG?S)U$dyYs>{U{mJD_i3=7d&l#hK3ZJwPI(nhKw34#umbe4cZflV$4rK_>7( jMLYZno|9=11b@m0_-1Es^1Q7500000NkvXXu0mjf(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.22.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.22.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.26.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..39f9d5ef3428d45d06fe3bb3eff678b6fee53dd4 GIT binary patch literal 339 zcmV-Z0j&OsP)a+HE&4MEp$v zJy8QWV`(|c3FQ!G$uwtIPG5Jvf%?mtkQC}GF(fS1R|Rum59YuU%adT%R;z;xhtzZ_ zwCTL7V@0g}h|VAK|Gcr-<%VE)5gT0i&8PI9T(^7n=TzrwFLcJYLfP6Jv@L(MKjom% zP)6Sk-No8WQF6T1c%%e**1f>0L@7kd)#H)>1G1I2qdTU*Yn6Avh_%U{%Dt7$Iw&J| l-m_YR`S}R|0001RCLcK1y7{--SKR;r002ovPDHLkV1ke*m^}ah literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.27.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.27.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000f^2!bGZDyxarW4}7tOuT^ZXkW(; zbO0NFn47kJe=Jd&56E38cC|6~9DicxtZ*r(MUW&!I~hcq?B9gyc!dvV}axCHxR5^U% zMhs5E{@S6U@L6}O*F=X(s=uH?Et8`i-fE@H&e%W|d38aas0J$O2r({?RU$B0iv*xr zHJ2QnG?S)U$dyYs>{U{mJD_i3=7d&l#hK3ZJwPI(nhKw34#umbe4cZflV$4rK_>7( jMLYZno|9=11b@m0_-1Es^1Q7500000NkvXXu0mjf(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.30.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIwKpV0jfltzSZWzthy(`{*oWomY^;;fk}G*+)x$uhlRPmo)W$_}M< z63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t`=7LVe;C6w(GZHP%1Dbd3ItYRS*sBK5qE z><2et2EQ1p_!M}k05plQzqgnOkk>We8C)oObY}XDMIc~O3v!u&C5gj>-IV~vID7iv zWJ(_som>Ubs)KgMa#yrl^`Cec9smFU002f^2!bGZDyxarW4}7tOuT^ZXkW(; zbO0NFn47kJe=Jd&56E38cC|6~9DicxtZ*r(MUW&!I~hcq?B9gyc!dvV}axCHxR5^U% zMhs5E{@S6U@L6}O*F=X(s=uH?Et8`i-fE@H&e%W|d38aas0J$O2r({?RU$B0iv*xr zHJ2QnG?S)U$dyYs>{U{mJD_i3=7d&l#hK3ZJwPI(nhKw34#umbe4cZflV$4rK_>7( jMLYZno|9=11b@m0_-1Es^1Q7500000NkvXXu0mjf(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.38.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.38.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIwKpV0jfltzSZWzthy(`{*oWomY^;;fk}G*+)x$uhlRPmo)W$_}M< z63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t`=7LVe;C6w(GZHP%1Dbd3ItYRS*sBK5qE z><2et2EQ1p_!M}k05plQzqgnOkk>We8C)oObY}XDMIc~O3v!u&C5gj>-IV~vID7iv zWJ(_som>Ubs)KgMa#yrl^`Cec9smFU002(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.45.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.45.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Mon, 11 Jul 2022 09:14:47 +0200 Subject: [PATCH 42/83] Setdomainpub, xferdomain, remallnfts --- ledgerjs-fio/src/errors/invalidDataReason.ts | 3 +- .../transactionTemplates/template_all.ts | 6 + .../template_remallnfts.ts | 49 ++++++ .../template_setdomainpub.ts | 83 ++++++++++ .../template_xferdomain.ts | 52 ++++++ ledgerjs-fio/src/types/internal.ts | 27 ++- ledgerjs-fio/src/types/public.ts | 44 ++++- ledgerjs-fio/src/utils/parse.ts | 23 ++- ledgerjs-fio/src/utils/parseTxActions.ts | 36 +++- .../signTransactionOtherFioAddress.js | 155 ++++++++++++++++++ .../nanos.48.png | Bin 0 -> 314 bytes .../nanos.49.png | Bin 0 -> 357 bytes .../nanos.50.png | Bin 0 -> 354 bytes .../nanos.51.png | Bin 0 -> 290 bytes .../nanos.52.png | Bin 0 -> 393 bytes .../nanos.53.png | Bin 0 -> 424 bytes .../nanos.54.png | Bin 0 -> 356 bytes .../nanos.55.png | Bin 0 -> 426 bytes .../nanos.56.png | Bin 0 -> 322 bytes .../nanos.57.png | Bin 0 -> 357 bytes .../nanos.58.png | Bin 0 -> 354 bytes .../nanos.59.png | Bin 0 -> 306 bytes .../nanos.60.png | Bin 0 -> 393 bytes .../nanos.61.png | Bin 0 -> 424 bytes .../nanos.62.png | Bin 0 -> 356 bytes .../nanos.63.png | Bin 0 -> 426 bytes .../nanos.64.png | Bin 0 -> 322 bytes .../nanos.65.png | Bin 0 -> 363 bytes .../nanos.66.png | Bin 0 -> 354 bytes .../nanos.67.png | Bin 0 -> 457 bytes .../nanos.68.png | Bin 0 -> 393 bytes .../nanos.69.png | Bin 0 -> 424 bytes .../nanos.70.png | Bin 0 -> 356 bytes .../nanos.71.png | Bin 0 -> 426 bytes .../nanos.72.png | Bin 0 -> 322 bytes .../nanos.73.png | Bin 0 -> 368 bytes .../nanos.74.png | Bin 0 -> 508 bytes .../nanos.75.png | Bin 0 -> 393 bytes .../nanos.76.png | Bin 0 -> 424 bytes .../nanos.77.png | Bin 0 -> 356 bytes .../nanos.78.png | Bin 0 -> 426 bytes 41 files changed, 471 insertions(+), 7 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.51.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.52.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.53.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.54.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.55.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.56.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.57.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.58.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.59.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.60.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.61.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.62.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.63.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.64.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.65.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.66.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.67.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.68.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.69.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.70.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.71.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.72.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.73.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.74.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.75.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.76.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.77.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanos.78.png diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index 569c1373..deb63811 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -43,5 +43,6 @@ export enum InvalidDataReason { INVALID_CONTEXT = "invalid context", INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES = "incorrect number of public addresses", INCORRECT_NUMBER_OF_NFTS = "incorrect number of nfts", - INVALID_BUNDLE_SETS = "invalid bundle sets" + INVALID_BUNDLE_SETS = "invalid bundle sets", + INVALID_IS_PUBLIC = "ivalid is public", } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 66fb395a..2ee627ec 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -18,6 +18,9 @@ import { template_regaddress } from "./template_regaddress"; import { template_xferaddress } from "./template_xferaddress"; import { template_regdomain } from "./template_regdomain"; import { template_renewdomain } from "./template_renewdomain"; +import { template_setdomainpub } from "./template_setdomainpub"; +import { template_xferdomain } from "./template_xferdomain"; +import { template_remallnfts } from "./template_remallnfts"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -41,6 +44,9 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_xferaddress, template_regdomain, template_renewdomain, + template_setdomainpub, + template_xferdomain, + template_remallnfts, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts new file mode 100644 index 00000000..66ba40ee --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts @@ -0,0 +1,49 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterAddress, ParsedRemoveAllMappedAddresses, ParsedRemoveAllNFT, ParsedTransaction, ParsedTransferDomain, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("remallnfts", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_remallnfts(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedRemoveAllNFT = tx.actions[0].data as ParsedRemoveAllNFT; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Remove nft mappings"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts new file mode 100644 index 00000000..30b6ad8b --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts @@ -0,0 +1,83 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMakeDomainPublic, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("setdomainpub", InvalidDataReason.UNEXPECTED_ERROR); + +function template_setdomainpub_true(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + const actionData: ParsedMakeDomainPublic = tx.actions[0].data as ParsedMakeDomainPublic; + + //match template + if (!actionData.is_public) { + return []; + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + COMMAND_SHOW_MESSAGE("Make", "Public"), + ] +} + +function template_setdomainpub_false(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + const actionData: ParsedMakeDomainPublic = tx.actions[0].data as ParsedMakeDomainPublic; + + //match template + if (actionData.is_public) { + return []; + } + + return [ + COMMAND_APPEND_CONST_DATA("00" as HexString), + COMMAND_SHOW_MESSAGE("Make", "Private"), + ] +} + + +export function template_setdomainpub(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedMakeDomainPublic = tx.actions[0].data as ParsedMakeDomainPublic; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const isPublicCommands: Array = templateAlternative([template_setdomainpub_true, template_setdomainpub_false])(chainId, tx, parsedPath) + validate(isPublicCommands.length !== 0, InvalidDataReason.INVALID_IS_PUBLIC) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Set FIO Domain registration permission"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) + ]), + ...isPublicCommands, + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts new file mode 100644 index 00000000..4151566b --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts @@ -0,0 +1,52 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferDomain, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative, + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.address", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("xferdomain", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_xferdomain(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedTransferDomain = tx.actions[0].data as ParsedTransferDomain; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Transfer FIO Domain"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("New owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index adbbfcab..cb72ee11 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -181,6 +181,28 @@ export type ParsedRenewDomain = { tpid: VarlenAsciiString } +export type ParsedMakeDomainPublic = { + fio_domain: VarlenAsciiString + is_public: boolean + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedTransferDomain = { + fio_domain: VarlenAsciiString + new_owner_fio_public_key: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedRemoveAllNFT = { + fio_address: VarlenAsciiString + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} export type ParsedActionAuthorisation = { actor: NameString @@ -202,7 +224,10 @@ export type ParsedActionData = ParsedTransferAddress | ParsedBuyBundledTransaction | ParsedRegisterDomain | - ParsedRenewDomain + ParsedRenewDomain | + ParsedMakeDomainPublic | + ParsedTransferDomain | + ParsedRemoveAllNFT export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 02b7f827..77ec0b2d 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -390,6 +390,45 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Make domain public data. + * @category Basic types + * @see [[Action]] + */ + export type MakeDomainPublic = { + fio_domain: string + is_public: bigint_like + max_fee: bigint_like + actor: string + tpid: string +} + + +/** + * Transfer domain data. + * @category Basic types + * @see [[Action]] + */ + export type TransferDomain = { + fio_domain: string + new_owner_fio_public_key: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * RemoveAllNFT data. + * @category Basic types + * @see [[Action]] + */ + export type RemoveAllNFT = { + fio_address: string + max_fee: bigint_like + actor: string + tpid: string +} + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -425,7 +464,10 @@ export type Action = { RegisterAddress | TransferAddress | RegisterDomain | - RenewDomain + RenewDomain | + MakeDomainPublic | + TransferDomain | + RemoveAllNFT } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 419183da..98480d4e 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,8 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseBuyBundledTransaction, parseCancelRequestFunds, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseTransferAddress } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseBuyBundledTransaction, parseCancelRequestFunds, parseMakeDomainPublic, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveAllNFT, parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseTransferAddress, parseTransferDomain } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -142,6 +142,16 @@ export function parseUint8_t(value: number, errMsg: InvalidDataReason): Uint8_t return value } +export function parseBoolean(value: unknown, errMsg: InvalidDataReason): boolean { + if (value == 0) { + return false; + } + if (value == 1) { + return true; + } + validate(false, errMsg) +} + export function parseBIP32Path(value: unknown, errMsg: InvalidDataReason): ValidBIP32Path { validate(isValidPath(value), errMsg) return value @@ -257,6 +267,15 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "renewdomain") { parsedActionData = parseRenewDomain(action.data as RenewDomain) } + else if (action.account === "fio.address" && action.name === "setdomainpub") { + parsedActionData = parseMakeDomainPublic(action.data as MakeDomainPublic) + } + else if (action.account === "fio.address" && action.name === "xferdomain") { + parsedActionData = parseTransferDomain(action.data as TransferDomain) + } + else if (action.account === "fio.address" && action.name === "remallnfts") { + parsedActionData = parseRemoveAllNFT(action.data as RemoveAllNFT) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 145a74a3..c9ff7619 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,7 +1,7 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, - RenewDomain, + RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT } from "fio"; import { InvalidDataReason } from "../errors" import { @@ -26,8 +26,11 @@ import { ParsedTransferAddress, ParsedRegisterDomain, ParsedRenewDomain, + ParsedMakeDomainPublic, + ParsedTransferDomain, + ParsedRemoveAllNFT, } from "../types/internal" -import { parseAscii, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; +import { parseAscii, parseBoolean, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; export function parseActionDataTransferFIOToken(data: TransferFIOTokensData): ParsedTransferFIOTokensData { @@ -240,3 +243,32 @@ export function parseRenewDomain(data: RenewDomain): ParsedRenewDomain { tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } } + +export function parseMakeDomainPublic(data: MakeDomainPublic): ParsedMakeDomainPublic { + return { + fio_domain: parseAscii(data.fio_domain, InvalidDataReason.INVALID_FIO_ADDRESS, 1, 62), + is_public: parseBoolean(data.is_public, InvalidDataReason.INVALID_IS_PUBLIC), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseTransferDomain(data: TransferDomain): ParsedTransferDomain { + return { + fio_domain: parseAscii(data.fio_domain, InvalidDataReason.INVALID_FIO_ADDRESS, 1, 62), + new_owner_fio_public_key: parseAscii(data.new_owner_fio_public_key, InvalidDataReason.INVALID_PUBLIC_KEY), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseRemoveAllNFT(data: RemoveAllNFT): ParsedRemoveAllNFT { + return { + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} diff --git a/test-integration/signTransactionOtherFioAddress.js b/test-integration/signTransactionOtherFioAddress.js index 5f66d3e3..a926aa27 100644 --- a/test-integration/signTransactionOtherFioAddress.js +++ b/test-integration/signTransactionOtherFioAddress.js @@ -416,6 +416,161 @@ testStep(" - - -", "Sign mainnet transaction - renewdomain"); assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } +testStep(" - - -", "Sign mainnet transaction - setdomainpub true"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "setdomainpub", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "FIO DOMAIN", + is_public: 0x01, + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - setdomainpub false"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "setdomainpub", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "FIO DOMAIN", + is_public: 0x00, + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - xferdomain"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "xferdomain", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "FIO DOMAIN", + new_owner_fio_public_key: "My FIO Public Key", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - remallnfts"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.address", + name: "remallnfts", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + await transport.close() testEnd(scriptName); process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.48.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.48.png new file mode 100644 index 0000000000000000000000000000000000000000..06140342c291c111e9c068e5607f9a041bc53592 GIT binary patch literal 314 zcmV-A0mc4_P)EGD{ zcmhj$zTEb79%(4njVG5hSd-WZ0@>;XvJD>|?4rHR^tR?quQ)Cmwf_=?1v z0J@_lvd7YPlpXF(m^o7)06+j%Z=`Pkb1)yw!F(_WGm)~tImCMO!p8Y(B|j#+BA8h@lY`uS(zJgSSa zv7$wzO9j}((b}!HfT|3u!&(8N7@!er*a}X;bzX$vi z)(R+Bji^LE+Jwu`FXDq@&DnI&@h$}Y6#xJL0Kmir2_C}?t4YSO00000NkvXXu0mjf DAaItYRS*sBK5qE z><2et2EQ1p_!M}k05plQzqgnOkk>We8C)oObY}XDMIc~O3v!u&C5gj>-IV~vID7iv zWJ(_som>Ubs)KgMa#yrl^`Cec9smFU002 z2CgdWeOdLCjL0&zhWc{sB!cRzT2@`4rd$fq0p;Ma8|b34evh@>`cUlv$HE=L%L);9 z0s9w}1`51P2G}7CRYc)1`nNj~QbzwFLxE-VAH^KZ#~jQAa}wm6m;LrBD~&-{mE>wO z9pkrII{|*Qw}f*OZe_*jmBD2%XkP=7Z^Bvm^4$8J#?)+H6M*`JaGKWyM31|`IRk?7 o+5uJeNozC>@Utip5fM>LKd*6))i~Q`GXMYp07*qoM6N<$g32&_A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.52.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.52.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.53.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.53.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.57.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.57.png new file mode 100644 index 0000000000000000000000000000000000000000..dab5990b83791bd05c6e9a516b0b983619ce1aff GIT binary patch literal 357 zcmV-r0h<1aP)EGD{ zcmhj$zTEb79%(4njVG5hSd-WZ0@>;XvJD>|?4rHR^tR?quQ)Cmwf_=?1v z0J@_lvd7YPlpXF(m^o7)06+j%Z=`Pkb1)yw!F(_WGm)~tImCMO!p8Y(B|j#+BA8h@lY`uS(zJgSSa zv7$wzO9j}((b}!HfT|3u!&(8N7@!er*a}X;bzX$vi z)(R+Bji^LE+Jwu`FXDq@&DnI&@h$}Y6#xJL0Kmir2_C}?t4YSO00000NkvXXu0mjf DAaItYRS*sBK5qE z><2et2EQ1p_!M}k05plQzqgnOkk>We8C)oObY}XDMIc~O3v!u&C5gj>-IV~vID7iv zWJ(_som>Ubs)KgMa#yrl^`Cec9smFU002zv30DS ze=e^Cp%6=pso3pNJs%kq5y$tA%)2gz@q>tEhz%SXV zwwi%oo`yXKG$OmaNm<*0bwHNVdEf(bXOs{^2q9!cE>we_)vO8z8~^|S07*qoM6N<$ Ef@)NRuK)l5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.60.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.60.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.61.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.61.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.65.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.65.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f0d72264732afa4895992b857f1a2e0a8037f4 GIT binary patch literal 363 zcmV-x0hIoUP)eVE8mp9oqW%y80002t_#FN{ft3_fC91xawT?0RRMG^+Ng&AP4h74(5X#%tVU*cGrsIX^$T(JDd@9q5SRX z@NrbfYX@__^cm!%L^3h0ws6+hbykRmR<$x^0<(M}M#zqfpi(SrD@RQj}{W{hSW&ByYu z8MEI9JV5c+8M6W`G1WKK`?@Ait!PKAV12*-?3n}r0001Ri7(&_#Re0JIk^A;002ov JPDHLkV1o41p&tMM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.66.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.66.png new file mode 100644 index 0000000000000000000000000000000000000000..57c9a65e431a98d86615f8a5ee97bd7e58dc28c9 GIT binary patch literal 354 zcmV-o0iFJdP)ItYRS*sBK5qE z><2et2EQ1p_!M}k05plQzqgnOkk>We8C)oObY}XDMIc~O3v!u&C5gj>-IV~vID7iv zWJ(_som>Ubs)KgMa#yrl^`Cec9smFU002-%Y1G8-+p zi+lW0(lc()&*w-X$QJ+wknXS409}{8njO(DE(hW4bb2~80x}zPZ^$NVUX06h4nU$#SVd;T;|JlD*rceBiM{wxk5cP&7bzNkh{t@NWMM$H~>28?O&n8iW87}lU?_XVB&@p`hh_VXyUxgt)Pib-XiG%NQ+hXU$VsUfkDIO#--$QX4rkxmzIM>SGFQ|!bz zKB=!7@xWUn8Y24Y7GT#yM7hwblEd&(KvR59K;Oa~6Izi~M>^vcgeb*c(Yp%Ks1!B# zHSkqHZMjZ0r;F6#H8hwEvm`zN*NHR;f|K$FIXIgZ?Ske!00000NkvXXu0mjf`aH-~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.68.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.68.png new file mode 100644 index 0000000000000000000000000000000000000000..b42d7b08612d408956ed509afd4d555a52e6af02 GIT binary patch literal 393 zcmV;40e1e0P)(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.69.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.69.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.73.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.73.png new file mode 100644 index 0000000000000000000000000000000000000000..2c164fd2a777adf9067da2fe8a520fac72d9fdf7 GIT binary patch literal 368 zcmV-$0gwKPP)o?DoEcLa0DuE#FQoqfa$pZ~U=MO&$x!sqxje7rh;Mg4{oeyF*XZL7 zvu3aiV@Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.76.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.76.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Mon, 11 Jul 2022 11:05:31 +0200 Subject: [PATCH 43/83] Stakefio, unstakefio, voteproducer, voteproxy --- MakefileTest.mk | 2 + ledgerjs-fio/src/errors/invalidDataReason.ts | 3 + .../transactionTemplates/template_all.ts | 8 + .../transactionTemplates/template_stakefio.ts | 48 ++++ .../template_unstakefio.ts | 48 ++++ .../template_voteproducer.ts | 168 +++++++++++ .../template_voteproxy.ts | 47 +++ ledgerjs-fio/src/types/internal.ts | 36 ++- ledgerjs-fio/src/types/public.ts | 56 +++- ledgerjs-fio/src/utils/parse.ts | 24 +- ledgerjs-fio/src/utils/parseTxActions.ts | 52 +++- src/signTransaction.c | 6 +- test-integration/signTransactionOtherEosio.js | 228 +++++++++++++++ .../signTransactionOtherFioStaking.js | 269 ++++++++++++++++++ .../signTransactionOtherEosio/nanos.01.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.02.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.03.png | Bin 0 -> 382 bytes .../signTransactionOtherEosio/nanos.04.png | Bin 0 -> 288 bytes .../signTransactionOtherEosio/nanos.05.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.06.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.07.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.08.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.09.png | Bin 0 -> 426 bytes .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 382 bytes .../nanos.04.png | Bin 0 -> 508 bytes .../nanos.05.png | Bin 0 -> 320 bytes .../nanos.06.png | Bin 0 -> 393 bytes .../nanos.07.png | Bin 0 -> 424 bytes .../nanos.08.png | Bin 0 -> 356 bytes .../nanos.09.png | Bin 0 -> 426 bytes .../nanos.10.png | Bin 0 -> 314 bytes .../nanos.11.png | Bin 0 -> 380 bytes .../nanos.12.png | Bin 0 -> 508 bytes .../nanos.13.png | Bin 0 -> 320 bytes .../nanos.14.png | Bin 0 -> 393 bytes .../nanos.15.png | Bin 0 -> 424 bytes .../nanos.16.png | Bin 0 -> 356 bytes .../nanos.17.png | Bin 0 -> 426 bytes 40 files changed, 985 insertions(+), 10 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts create mode 100644 test-integration/signTransactionOtherEosio.js create mode 100644 test-integration/signTransactionOtherFioStaking.js create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanos.17.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 4ef0dc05..20763f65 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -44,6 +44,8 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionRemnft.js) $(call run_nodejs_test,5001,40001,signTransactionOtherFioAddress.js) $(call run_nodejs_test,5001,40001,signTransactionOtherFioReqobt.js) + $(call run_nodejs_test,5001,40001,signTransactionOtherFioStaking.js) + $(call run_nodejs_test,5001,40001,signTransactionOtherEosio.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal diff --git a/ledgerjs-fio/src/errors/invalidDataReason.ts b/ledgerjs-fio/src/errors/invalidDataReason.ts index deb63811..1b39d53a 100644 --- a/ledgerjs-fio/src/errors/invalidDataReason.ts +++ b/ledgerjs-fio/src/errors/invalidDataReason.ts @@ -45,4 +45,7 @@ export enum InvalidDataReason { INCORRECT_NUMBER_OF_NFTS = "incorrect number of nfts", INVALID_BUNDLE_SETS = "invalid bundle sets", INVALID_IS_PUBLIC = "ivalid is public", + INCORRECT_NUMBER_OF_PRODUCERS = "incorrect number of producers", + INVALID_PRODUCER = "invalid producer", + INVALID_PROXY = "invalid proxy", } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 2ee627ec..3fb36c85 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -21,6 +21,10 @@ import { template_renewdomain } from "./template_renewdomain"; import { template_setdomainpub } from "./template_setdomainpub"; import { template_xferdomain } from "./template_xferdomain"; import { template_remallnfts } from "./template_remallnfts"; +import { template_stakefio } from "./template_stakefio"; +import { template_unstakefio } from "./template_unstakefio"; +import { template_voteproducer } from "./template_voteproducer"; +import { template_voteproxy } from "./template_voteproxy"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -47,6 +51,10 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_setdomainpub, template_xferdomain, template_remallnfts, + template_stakefio, + template_unstakefio, + template_voteproducer, + template_voteproxy, ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts new file mode 100644 index 00000000..90cdf133 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts @@ -0,0 +1,48 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedStakeFIO, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.staking", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("stakefio", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_stakefio(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedStakeFIO = tx.actions[0].data as ParsedStakeFIO; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Stake FIO Tokens"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts new file mode 100644 index 00000000..c1394222 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts @@ -0,0 +1,48 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedStakeFIO, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.staking", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("unstakefio", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_unstakefio(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedStakeFIO = tx.actions[0].data as ParsedStakeFIO; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Unstake FIO Tokens"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts new file mode 100644 index 00000000..b690b9a2 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts @@ -0,0 +1,168 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedStakeFIO, ParsedTransaction, ParsedTransferFIOTokensData, ParsedVoteOnBlockProducers, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK, + templateAlternative} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("eosio", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("voteproducer", InvalidDataReason.UNEXPECTED_ERROR); + +function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != 1) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("01" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) + ]), + ] +} + +function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != 2) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("02" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) + ]), + ] +} + +function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != 3) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("03" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) + ]), + ] +} + +function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + const actionData: ParsedVoteOnBlockProducers = tx.actions[3].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != 4) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("04" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 4", Buffer.from(actionData.producers[3]), 3, 64) + ]), + ] +} + +function template5(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != 5) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA("05" as HexString), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 4", Buffer.from(actionData.producers[3]), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer 5", Buffer.from(actionData.producers[4]), 3, 64) + ]), + ] +} + +export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + const producerCommands: Array = templateAlternative([template1, template2, template3, template4, template5])(chainId, tx, parsedPath) + validate(producerCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Stake FIO Tokens"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...producerCommands, + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts new file mode 100644 index 00000000..4058ee95 --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts @@ -0,0 +1,47 @@ +import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedProxyVotesToRegisteredProxy, ParsedStakeFIO, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + ADD_STORAGE_CHECK } from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("eosio", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("voteproxy", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_voteproxy(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedProxyVotesToRegisteredProxy = tx.actions[0].data as ParsedProxyVotesToRegisteredProxy; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Proxy votes"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Proxy", Buffer.from(actionData.proxy), 3, 64) + ]), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) + ]), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index cb72ee11..9c0294f2 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -204,6 +204,36 @@ export type ParsedRemoveAllNFT = { tpid: VarlenAsciiString } +export type ParsedStakeFIO = { + fio_address: VarlenAsciiString + amount: Uint64_str + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedUnstakeFIO = { + fio_address: VarlenAsciiString + amount: Uint64_str + max_fee: Uint64_str + actor: NameString + tpid: VarlenAsciiString +} + +export type ParsedVoteOnBlockProducers = { + producers: Array + fio_address: VarlenAsciiString + max_fee: Uint64_str + actor: NameString +} + + export type ParsedProxyVotesToRegisteredProxy = { + proxy: VarlenAsciiString + fio_address: VarlenAsciiString + max_fee: Uint64_str + actor: NameString +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -227,7 +257,11 @@ export type ParsedActionData = ParsedRenewDomain | ParsedMakeDomainPublic | ParsedTransferDomain | - ParsedRemoveAllNFT + ParsedRemoveAllNFT | + ParsedStakeFIO | + ParsedUnstakeFIO | + ParsedVoteOnBlockProducers | + ParsedProxyVotesToRegisteredProxy export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 77ec0b2d..059a287d 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -429,6 +429,56 @@ export type TransferFIOTokensData = { tpid: string } +/** + * Stake fio data. + * @category Basic types + * @see [[Action]] + */ + export type StakeFIO = { + amount: bigint_like + fio_address: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Unstake fio data. + * @category Basic types + * @see [[Action]] + */ + export type UnstakeFIO = { + amount: bigint_like + fio_address: string + max_fee: bigint_like + actor: string + tpid: string +} + +/** + * Vote on block producers data. + * @category Basic types + * @see [[Action]] + */ + export type VoteOnBlockProducers = { + producers: Array + fio_address: string + max_fee: bigint_like + actor: string +} + +/** + * Proxy votes to registred proxy data. + * @category Basic types + * @see [[Action]] + */ + export type ProxyVotesToRegisteredProxy = { + proxy: string + fio_address: string + max_fee: bigint_like + actor: string +} + /** * Represents authorisation in transaction Actions. * @category Basic types @@ -467,7 +517,11 @@ export type Action = { RenewDomain | MakeDomainPublic | TransferDomain | - RemoveAllNFT + RemoveAllNFT | + StakeFIO | + UnstakeFIO | + VoteOnBlockProducers | + ProxyVotesToRegisteredProxy } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 98480d4e..175e31d1 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -1,8 +1,16 @@ import { InvalidData, InvalidDataReason } from "../errors" import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, ParsedActionAuthorisation, ParsedTransaction, Uint8_t, Uint16_t, Uint32_t, Uint64_str, ValidBIP32Path, VarlenAsciiString, ParsedAction, ParsedActionData, Base64String, ParsedContext } from "../types/internal" -import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT} from "../types/public" -import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, parseBuyBundledTransaction, parseCancelRequestFunds, parseMakeDomainPublic, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveAllNFT, parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseTransferAddress, parseTransferDomain } from "./parseTxActions" +import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, + MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, + RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain, MakeDomainPublic, + TransferDomain, RemoveAllNFT, StakeFIO, UnstakeFIO, VoteOnBlockProducers, ProxyVotesToRegisteredProxy} from "../types/public" +import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, + parseBuyBundledTransaction, parseCancelRequestFunds, parseMakeDomainPublic, parseMapBlockchainPublicAddress, parseMapNFTSignature, + parseProxyVotesToRegisteredProxy, + parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveAllNFT, + parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseStakeFIO, parseTransferAddress, + parseTransferDomain, parseUnstakeFIO, parseVoteOnBlockProducers } from "./parseTxActions" export const MAX_UINT_64_STR = "18446744073709551615" @@ -276,6 +284,18 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "fio.address" && action.name === "remallnfts") { parsedActionData = parseRemoveAllNFT(action.data as RemoveAllNFT) } + else if (action.account === "fio.staking" && action.name === "stakefio") { + parsedActionData = parseStakeFIO(action.data as StakeFIO) + } + else if (action.account === "fio.staking" && action.name === "unstakefio") { + parsedActionData = parseUnstakeFIO(action.data as UnstakeFIO) + } + else if (action.account === "eosio" && action.name === "voteproducer") { + parsedActionData = parseVoteOnBlockProducers(action.data as VoteOnBlockProducers) + } + else if (action.account === "eosio" && action.name === "voteproxy") { + parsedActionData = parseProxyVotesToRegisteredProxy(action.data as ProxyVotesToRegisteredProxy) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index c9ff7619..cc464e13 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -1,8 +1,8 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, - RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT - } from "fio"; + RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT, StakeFIO, UnstakeFIO, VoteOnBlockProducers, + ProxyVotesToRegisteredProxy } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -29,6 +29,11 @@ import { ParsedMakeDomainPublic, ParsedTransferDomain, ParsedRemoveAllNFT, + ParsedStakeFIO, + ParsedUnstakeFIO, + ParsedVoteOnBlockProducers, + VarlenAsciiString, + ParsedProxyVotesToRegisteredProxy, } from "../types/internal" import { parseAscii, parseBoolean, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -272,3 +277,46 @@ export function parseRemoveAllNFT(data: RemoveAllNFT): ParsedRemoveAllNFT { tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), } } + +export function parseStakeFIO(data: StakeFIO): ParsedStakeFIO { + return { + amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function parseUnstakeFIO(data: UnstakeFIO): ParsedUnstakeFIO { + return { + amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +function parseProducers(a: Array): Array { + validate(1 <= a.length && a.length <= 5, InvalidDataReason.INCORRECT_NUMBER_OF_PRODUCERS) + return a.map( e => parseAscii(e, InvalidDataReason.INVALID_PRODUCER, 3, 64)) +} + +export function parseVoteOnBlockProducers(data: VoteOnBlockProducers): ParsedVoteOnBlockProducers { + return { + producers: parseProducers(data.producers), + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + } +} + +export function parseProxyVotesToRegisteredProxy(data: ProxyVotesToRegisteredProxy): ParsedProxyVotesToRegisteredProxy { + return { + proxy: parseAscii(data.proxy, InvalidDataReason.INVALID_PROXY, 3, 64), + fio_address: parseAscii(data.fio_address, InvalidDataReason.INVALID_FIO_ADDRESS, 3, 64), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + } +} diff --git a/src/signTransaction.c b/src/signTransaction.c index dfd9b729..3cdcbb0e 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -1019,12 +1019,10 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( TRACE_BUFFER(G_io_apdu_buffer, PUBKEY_LENGTH); if (check_canonical(G_io_apdu_buffer + 1)) { + TRACE("Try %d succesfull!", tries); break; } else { - TRACE( - "Try %d unsuccesfull! We will not get correct " - "signature!!!!!!!!!!!!!!!!!!!!!!!!!", - tries); + TRACE("Try %d unsuccesfull!", tries); tries++; } } diff --git a/test-integration/signTransactionOtherEosio.js b/test-integration/signTransactionOtherEosio.js new file mode 100644 index 00000000..4599a368 --- /dev/null +++ b/test-integration/signTransactionOtherEosio.js @@ -0,0 +1,228 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, txtype, pubkey) { + // We serialize the transaction + // Get the action type + const actionType = networkInfo[network].typesTransaction2.get(txtype) + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionType.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction - voteproducer one producer"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: ["Producer 1", ], + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/signTransactionOtherFioStaking.js b/test-integration/signTransactionOtherFioStaking.js new file mode 100644 index 00000000..d6838141 --- /dev/null +++ b/test-integration/signTransactionOtherFioStaking.js @@ -0,0 +1,269 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + +//import {base64ToBinary, arrayToHex} from "@fioprotocol/fiojs/dist/chain-numeric" + + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.staking"}`, + method: 'POST', +})).json() +const abiAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.staking"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiAddressTestnet.abi) + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, txtype, pubkey) { + // We serialize the transaction + // Get the action type + const actionType = networkInfo[network].typesTransaction2.get(txtype) + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionType.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +//const privateKey = PrivateKey(hex_to_buf(privateKeyDHex)) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +//const otherPrivateKey = PrivateKey(hex_to_buf(otherPrivateKeyDHex)) +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction - stakefio"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.staking", + name: "stakefio", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + amount: 0x44, + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - unstakefio"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.staking", + name: "unstakefio", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + amount: 0x44, + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.01.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.03.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9c1cfb6fd69170c56f40e746317c0cbf7f98af GIT binary patch literal 382 zcmV-^0fGLBP)EG1> zSRhGHU*i$3GsJ`1@R58FJit4kn0@kDKj?HtdIJ38&|t?_yU?Vk4=uLUTc;5*{4 z0Qrp?vO6|Ej*`KB2@~Vo=3m);-}wgFAC4iV$o?c$iADCOf*Py`HCRb0v9W5Zd5yEm zEXry5*N(1?sfiZAPzQxV(= zQ5Dysk9^kBu2T{z`JkY2YBqI$2MDg^sFX3=>Fa=+B#@{TgLgxX*Q9(?RPuvHMjSzc zXk6@HuJ#Bszk?|%V$)ZH75@kLRQa2u>RV1<2M8xV-}^<{^h>^G<+Dn6O0!LrR{#J2 c0DuMj0EQ#t`aA~3vj6}907*qoM6N<$g0l>*i2wiq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.04.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ac2fda11264a5b806f9e178bf6a3f001ebda6 GIT binary patch literal 288 zcmV+*0pI?KP)-zQ-78MTp?&>(tGsHx)pPyB$o0*;nNx)rSE@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~ID zRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.07.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.03.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9c1cfb6fd69170c56f40e746317c0cbf7f98af GIT binary patch literal 382 zcmV-^0fGLBP)EG1> zSRhGHU*i$3GsJ`1@R58FJit4kn0@kDKj?HtdIJ38&|t?_yU?Vk4=uLUTc;5*{4 z0Qrp?vO6|Ej*`KB2@~Vo=3m);-}wgFAC4iV$o?c$iADCOf*Py`HCRb0v9W5Zd5yEm zEXry5*N(1?sfiZAPzQxV(= zQ5Dysk9^kBu2T{z`JkY2YBqI$2MDg^sFX3=>Fa=+B#@{TgLgxX*Q9(?RPuvHMjSzc zXk6@HuJ#Bszk?|%V$)ZH75@kLRQa2u>RV1<2M8xV-}^<{^h>^G<+Dn6O0!LrR{#J2 c0DuMj0EQ#t`aA~3vj6}907*qoM6N<$g0l>*i2wiq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.04.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.04.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000+u}L&X?Bgzj(!80ZQVHD>B`MJ0U~0vmCy7Xgjs@;>0SwAfL_^i z5WoOlIq9_ueXWhnvP>5LLKop=(=ZrN|L+(ih59G)ldw?#RN#R>@W7Lnu%#Pn-JcD1 zb$V!i52>SuPE`mbHpF_=#12VqPZy2BkW0gq>b~Fs{ook?1zn#0+z)UPJ{z$F)gyF_ zGjIX}#H|3oCm5H3DGnttz{K>|0yW?=Z0qPgOKbz8_2`^?zoLEs00000zyTh5vFKJC SNW>HX0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.07.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.07.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIS|Nn#g&^?$Kf{4;;W#*oz)lp<1y55EW0002E<2uJ%f?iTimCWvv^zZ5b zEU=`f%XozA4DsML

=F4ayD>v(G;F54z#AIsl2hqSNZ$8n0W>?s?C6Er7U#?})zw z&=WO~GnQ^g$sixX%$V8$035LUM*0t+2J1l$)`J?XM9O}=P4 zo3{^%N?}-{6ivo@uj$*Su_*rNo_l5-vT4+vjC&9hMMwHrMD;Z$^01|$tD93%rcCRuk6qS)z-UpaueV^|DrbT7%0R8-A)LsylYri>H|Dr3C)p>8{bkJM@00000 a9`ggn_}dc5VCQ`R0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000+u}L&X?Bgzj(!80ZQVHD>B`MJ0U~0vmCy7Xgjs@;>0SwAfL_^i z5WoOlIq9_ueXWhnvP>5LLKop=(=ZrN|L+(ih59G)ldw?#RN#R>@W7Lnu%#Pn-JcD1 zb$V!i52>SuPE`mbHpF_=#12VqPZy2BkW0gq>b~Fs{ook?1zn#0+z)UPJ{z$F)gyF_ zGjIX}#H|3oCm5H3DGnttz{K>|0yW?=Z0qPgOKbz8_2`^?zoLEs00000zyTh5vFKJC SNW>HX0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.15.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.15.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Mon, 11 Jul 2022 13:00:39 +0200 Subject: [PATCH 44/83] Add integrity hashes, fix missing tests --- .../template_addaddress.ts | 2 +- .../template_addbundles.ts | 4 +- .../transactionTemplates/template_addnft.ts | 2 +- .../template_cancelfndreq.ts | 2 +- .../template_newfundsreq.ts | 2 +- .../template_recordobt.ts | 4 +- .../template_regaddress.ts | 4 +- .../template_regdomain.ts | 4 +- .../template_rejectfndreq.ts | 2 +- .../template_remaddress.ts | 2 +- .../template_remalladdr.ts | 2 +- .../template_remallnfts.ts | 4 +- .../transactionTemplates/template_remnft.ts | 2 +- .../template_renewdomain.ts | 4 +- .../template_setdomainpub.ts | 2 +- .../transactionTemplates/template_stakefio.ts | 2 +- .../template_trnsfiopubky.ts | 4 +- .../template_unstakefio.ts | 2 +- .../template_voteproducer.ts | 4 +- .../template_xferaddress.ts | 4 +- .../template_xferdomain.ts | 2 +- src/signTransactionIntegrity.c | 165 +++++++++++++-- test-integration/signTransactionOtherEosio.js | 194 ++++++++++++++++++ .../snapshots/getVersion/nanos.01.png | Bin 415 -> 426 bytes .../signTransactionNewfundsreq/nanos.04.png | Bin 463 -> 483 bytes .../signTransactionNewfundsreq/nanos.05.png | Bin 468 -> 486 bytes .../signTransactionNewfundsreq/nanos.20.png | Bin 463 -> 483 bytes .../signTransactionNewfundsreq/nanos.21.png | Bin 468 -> 486 bytes .../signTransactionNewfundsreq/nanos.36.png | Bin 463 -> 483 bytes .../signTransactionNewfundsreq/nanos.37.png | Bin 468 -> 486 bytes .../signTransactionNewfundsreq/nanos.52.png | Bin 463 -> 483 bytes .../signTransactionNewfundsreq/nanos.53.png | Bin 468 -> 486 bytes .../signTransactionOtherEosio/nanos.03.png | Bin 382 -> 358 bytes .../signTransactionOtherEosio/nanos.10.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.11.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.12.png | Bin 0 -> 288 bytes .../signTransactionOtherEosio/nanos.13.png | Bin 0 -> 293 bytes .../signTransactionOtherEosio/nanos.14.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.15.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.16.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.17.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.18.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.19.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.20.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.21.png | Bin 0 -> 288 bytes .../signTransactionOtherEosio/nanos.22.png | Bin 0 -> 293 bytes .../signTransactionOtherEosio/nanos.23.png | Bin 0 -> 295 bytes .../signTransactionOtherEosio/nanos.24.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.25.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.26.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.27.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.28.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.29.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.30.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.31.png | Bin 0 -> 288 bytes .../signTransactionOtherEosio/nanos.32.png | Bin 0 -> 293 bytes .../signTransactionOtherEosio/nanos.33.png | Bin 0 -> 295 bytes .../signTransactionOtherEosio/nanos.34.png | Bin 0 -> 290 bytes .../signTransactionOtherEosio/nanos.35.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.36.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.37.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.38.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.39.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.40.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.41.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.42.png | Bin 0 -> 288 bytes .../signTransactionOtherEosio/nanos.43.png | Bin 0 -> 293 bytes .../signTransactionOtherEosio/nanos.44.png | Bin 0 -> 295 bytes .../signTransactionOtherEosio/nanos.45.png | Bin 0 -> 290 bytes .../signTransactionOtherEosio/nanos.46.png | Bin 0 -> 301 bytes .../signTransactionOtherEosio/nanos.47.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.48.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.49.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.50.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.51.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.52.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.53.png | Bin 0 -> 345 bytes .../signTransactionOtherEosio/nanos.54.png | Bin 0 -> 280 bytes .../signTransactionOtherEosio/nanos.55.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.56.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.57.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.58.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.59.png | Bin 0 -> 426 bytes .../nanos.10.png | Bin 354 -> 355 bytes .../nanos.18.png | Bin 354 -> 394 bytes .../nanos.26.png | Bin 339 -> 380 bytes .../nanos.34.png | Bin 354 -> 385 bytes .../nanos.42.png | Bin 354 -> 374 bytes .../nanos.73.png | Bin 368 -> 353 bytes .../signTransactionRecordobt/nanos.03.png | Bin 341 -> 357 bytes .../signTransactionRecordobt/nanos.04.png | Bin 390 -> 371 bytes .../signTransactionRecordobt/nanos.05.png | Bin 463 -> 483 bytes .../signTransactionRecordobt/nanos.06.png | Bin 468 -> 486 bytes .../signTransactionRecordobt/nanos.23.png | Bin 341 -> 357 bytes .../signTransactionRecordobt/nanos.24.png | Bin 390 -> 371 bytes .../signTransactionRecordobt/nanos.25.png | Bin 463 -> 483 bytes .../signTransactionRecordobt/nanos.26.png | Bin 468 -> 486 bytes .../signTransactionRecordobt/nanos.43.png | Bin 341 -> 357 bytes .../signTransactionRecordobt/nanos.44.png | Bin 390 -> 371 bytes .../signTransactionRecordobt/nanos.45.png | Bin 463 -> 483 bytes .../signTransactionRecordobt/nanos.46.png | Bin 468 -> 486 bytes .../signTransactionRecordobt/nanos.63.png | Bin 341 -> 357 bytes .../signTransactionRecordobt/nanos.64.png | Bin 390 -> 371 bytes .../signTransactionRecordobt/nanos.65.png | Bin 463 -> 483 bytes .../signTransactionRecordobt/nanos.66.png | Bin 468 -> 486 bytes 105 files changed, 370 insertions(+), 49 deletions(-) create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.22.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.23.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.24.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.25.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.47.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.48.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.49.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.50.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.51.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.52.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.53.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.54.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.55.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.56.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.57.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.58.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.59.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts index 47eabf6d..11bdf896 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -162,7 +162,7 @@ export function template_addaddress(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts index 17ec1054..a7adad0f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts @@ -30,7 +30,7 @@ export function template_addbundles(chainId: HexString, tx: ParsedTransaction, p return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_SHOW_MESSAGE("Action", "Add Bundles"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -42,7 +42,7 @@ export function template_addbundles(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_UINT64_SHOW("Bundle sets", uint64_to_buf(actionData.bundle_sets).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts index 28d2dacf..9ea0de62 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -164,7 +164,7 @@ export function template_addnft(chainId: HexString, tx: ParsedTransaction, parse ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts index 41a2afc1..55d026d0 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts @@ -39,7 +39,7 @@ export function template_cancelfndreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index b0980724..77705a2e 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -58,7 +58,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index ec96c621..842c9f79 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -24,7 +24,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Record other blockchain transaction metadata"), + COMMAND_SHOW_MESSAGE("Action", "Record metadata"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(authorization.actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -71,7 +71,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts index f0e04ec2..d12d08df 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts @@ -29,7 +29,7 @@ export function template_regaddress(chainId: HexString, tx: ParsedTransaction, p return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_SHOW_MESSAGE("Action", "Register FIO Crypto Handle"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -45,7 +45,7 @@ export function template_regaddress(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts index 87c3c3a5..ce08549c 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts @@ -29,7 +29,7 @@ export function template_regdomain(chainId: HexString, tx: ParsedTransaction, pa return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_SHOW_MESSAGE("Action", "Register FIO Domain"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -45,7 +45,7 @@ export function template_regdomain(chainId: HexString, tx: ParsedTransaction, pa ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts index c43ee0a6..f5c83c5f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts @@ -39,7 +39,7 @@ export function template_rejectfndreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts index 590dd984..6dbf2b1d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts @@ -162,7 +162,7 @@ export function template_remaddress(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts index d8f84df8..67522133 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts @@ -42,7 +42,7 @@ export function template_remalladdr(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts index 66ba40ee..bfcdcf74 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts @@ -29,7 +29,7 @@ export function template_remallnfts(chainId: HexString, tx: ParsedTransaction, p return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Remove nft mappings"), + COMMAND_SHOW_MESSAGE("Action", "Remove all nft mappings"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -42,7 +42,7 @@ export function template_remallnfts(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts index 47af3211..ab9cdec6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -110,7 +110,7 @@ export function template_remnft(chainId: HexString, tx: ParsedTransaction, parse ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts index fa5ced5f..b5b9a202 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts @@ -29,7 +29,7 @@ export function template_renewdomain(chainId: HexString, tx: ParsedTransaction, return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Remove all public address mappings"), + COMMAND_SHOW_MESSAGE("Action", "Renew FIO domain"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -40,7 +40,7 @@ export function template_renewdomain(chainId: HexString, tx: ParsedTransaction, ]), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts index 30b6ad8b..902b98c9 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts @@ -76,7 +76,7 @@ export function template_setdomainpub(chainId: HexString, tx: ParsedTransaction, ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts index 90cdf133..1ebc91f3 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts @@ -39,7 +39,7 @@ export function template_stakefio(chainId: HexString, tx: ParsedTransaction, par COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index 9639fd0d..0a532f07 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -34,14 +34,14 @@ export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Pubkey", Buffer.from(actionData.payee_public_key), 0, 55), + COMMAND_APPEND_DATA_STRING_SHOW("Payee Pubkey", Buffer.from(actionData.payee_public_key)), ]), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts index c1394222..841a6642 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts @@ -39,7 +39,7 @@ export function template_unstakefio(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts index b690b9a2..93647358 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts @@ -77,7 +77,7 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - const actionData: ParsedVoteOnBlockProducers = tx.actions[3].data as ParsedVoteOnBlockProducers; + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; //Matching template if (actionData.producers.length != 4) { @@ -150,7 +150,7 @@ export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Stake FIO Tokens"), + COMMAND_SHOW_MESSAGE("Action", "Vote for FIO Block producers"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts index 1fb48bf5..731d7715 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts @@ -30,7 +30,7 @@ export function template_xferaddress(chainId: HexString, tx: ParsedTransaction, return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), - COMMAND_SHOW_MESSAGE("Action", "Add bundles"), + COMMAND_SHOW_MESSAGE("Action", "Transfer FIO Crypto Handle"), COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), @@ -46,7 +46,7 @@ export function template_xferaddress(chainId: HexString, tx: ParsedTransaction, ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts index 4151566b..e3182930 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts @@ -45,7 +45,7 @@ export function template_xferdomain(chainId: HexString, tx: ParsedTransaction, p ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid), 0, 21), + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]), ]; diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index ba56b54a..270e0a94 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -45,24 +45,151 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { 0xbb, 0x66, 0xea, 0x0e, 0xff, 0xde, 0x09, 0x43, 0x50, 0xca, 0xba, 0xd4, 0x6f, 0xbf, 0x94, 0xc5, 0x4d, 0x7c, 0x5c, 0xb3, 0x41}, #endif - // trnsfiopubky - {0xb2, 0xaa, 0xb0, 0x41, 0xd8, 0xc0, 0x0c, 0x45, 0x22, 0x4c, 0xca, - 0x7f, 0x76, 0x60, 0x20, 0x7a, 0xcc, 0x16, 0x71, 0x71, 0x84, 0x17, - 0x3c, 0xb1, 0x12, 0x83, 0xb7, 0xe0, 0xe6, 0xe2, 0xaa, 0x98}, - // newfundsreq memo - {0x5c, 0x74, 0x2a, 0x3f, 0x32, 0x12, 0xd7, 0x38, 0x4b, 0xaa, 0x15, - 0x64, 0x59, 0xf4, 0x78, 0xdf, 0x05, 0x9f, 0x2a, 0xcc, 0x44, 0xda, - 0xb8, 0xed, 0x75, 0x48, 0xf3, 0x49, 0xf5, 0x06, 0xed, 0xd6}, - {0xb5, 0x17, 0x03, 0x78, 0x02, 0x22, 0xe8, 0x6d, 0xdb, 0xf8, 0xba, - 0x45, 0x58, 0xc6, 0x99, 0x55, 0xb4, 0xb4, 0xb5, 0x24, 0x7d, 0x6c, - 0xee, 0x87, 0x12, 0x13, 0xae, 0xd1, 0x76, 0x27, 0xc6, 0xf1}, - // newfundsreq hash - {0xd2, 0x8d, 0x3c, 0x74, 0xaa, 0xb6, 0x55, 0x80, 0x2b, 0x25, 0x5d, - 0x1a, 0x77, 0x41, 0x21, 0x37, 0xd7, 0x94, 0xb6, 0x8f, 0x73, 0x79, - 0x53, 0x1f, 0xf6, 0x26, 0xdb, 0x12, 0x1e, 0xfa, 0xb7, 0xf3}, - {0xa1, 0x9d, 0x9e, 0x94, 0x34, 0xe9, 0x7d, 0xce, 0x09, 0x5d, 0x2c, - 0x77, 0x8a, 0xfb, 0x0b, 0x4f, 0xf9, 0xf5, 0x41, 0xe6, 0xda, 0x89, - 0x8c, 0xe2, 0x2a, 0x8d, 0x58, 0x92, 0x64, 0xc0, 0x97, 0x78}, + // transfiopubkey + {0x60, 0x26, 0x4a, 0x32, 0xc0, 0x54, 0x40, 0x2b, 0xb3, 0x41, 0xcc, + 0xd5, 0xb7, 0x8f, 0xef, 0xfe, 0xe0, 0xe2, 0x8f, 0xa5, 0xfc, 0x8c, + 0x03, 0x3f, 0xcc, 0x3d, 0x51, 0x33, 0x0c, 0x8a, 0x70, 0xca}, + // newfundsreq (DH finalize and sign tx) + {0x25, 0xde, 0xe5, 0x00, 0xed, 0xa3, 0x1d, 0x5f, 0xad, 0x3d, 0x5e, + 0xc5, 0x9d, 0xf1, 0x73, 0xf4, 0x8f, 0x63, 0xd1, 0xf4, 0x02, 0x02, + 0x8b, 0x0a, 0x2a, 0x39, 0x53, 0xc1, 0xf7, 0x55, 0xbb, 0xea}, + {0x3f, 0x0e, 0xfa, 0x4a, 0x88, 0x02, 0xdc, 0x89, 0x52, 0x0c, 0x61, + 0x89, 0xcd, 0xa4, 0x2e, 0xc1, 0xf4, 0x99, 0x8e, 0xa6, 0xba, 0xa0, + 0x72, 0x0f, 0xd3, 0xc5, 0x74, 0x12, 0x33, 0x79, 0xaa, 0xd9}, + // reqobt (DH finalize and sign tx) + {0x7c, 0x0e, 0x02, 0x59, 0x92, 0xf4, 0x0f, 0x0f, 0xfd, 0x8c, 0xc0, + 0x19, 0xed, 0x83, 0xf9, 0x98, 0x9a, 0x75, 0x21, 0xa2, 0xa9, 0x1e, + 0x7b, 0x18, 0x8c, 0x3b, 0x7c, 0x2e, 0x21, 0x4b, 0x7f, 0x77}, + {0x4e, 0x14, 0x84, 0xed, 0x2b, 0xcc, 0x25, 0x99, 0xb4, 0xf9, 0x06, + 0x02, 0xc1, 0x5a, 0x7d, 0x78, 0x3e, 0x5a, 0xf6, 0x74, 0x40, 0xdf, + 0xd9, 0x8c, 0x7e, 0x29, 0x64, 0x53, 0xc5, 0x2a, 0xa7, 0x8b}, + // addaddress (1 to 5 addresses) + {0xbb, 0x08, 0x25, 0xcd, 0x94, 0x83, 0x17, 0x1e, 0xb9, 0x2c, 0x6d, + 0x2e, 0x47, 0x35, 0x43, 0xdc, 0xc5, 0xbf, 0xaf, 0x39, 0x91, 0x5b, + 0xed, 0x3a, 0xcd, 0xcc, 0x00, 0x72, 0x64, 0xca, 0x1b, 0xa2}, + {0x76, 0xd3, 0x46, 0x0b, 0xc6, 0x86, 0x3a, 0xc2, 0x3c, 0xbe, 0x70, + 0x9e, 0xef, 0xed, 0xc0, 0xd1, 0x17, 0x50, 0x35, 0x95, 0x6f, 0xf0, + 0xb2, 0x17, 0x66, 0x0a, 0x08, 0x08, 0x5c, 0x31, 0xdc, 0x00}, + {0x13, 0x10, 0x9b, 0x7f, 0x21, 0x46, 0x11, 0xc7, 0xce, 0x9a, 0xfb, + 0x61, 0x40, 0x9d, 0x4e, 0xf8, 0xe5, 0x05, 0x3d, 0x9e, 0x24, 0x1e, + 0xf4, 0xf7, 0xb6, 0x61, 0x76, 0xfe, 0x7c, 0x2e, 0x0b, 0xca}, + {0xff, 0xba, 0xdf, 0x34, 0x4c, 0x1a, 0x18, 0xdf, 0x4b, 0x21, 0xb8, + 0xfd, 0xf8, 0xea, 0x7a, 0x7f, 0x4e, 0xb1, 0x6f, 0x05, 0xd8, 0xe1, + 0x05, 0x29, 0x0d, 0xa4, 0x0d, 0xa2, 0x49, 0x0d, 0x36, 0x12}, + {0xe2, 0xc0, 0x28, 0x29, 0xaf, 0xf7, 0x73, 0xa2, 0xf0, 0xaf, 0x20, + 0x0b, 0x0b, 0xc0, 0x01, 0xac, 0x61, 0x08, 0x5d, 0x39, 0xf6, 0x86, + 0xad, 0xa8, 0xf1, 0xce, 0xb9, 0x90, 0xe7, 0x4e, 0xb4, 0x4e}, + // remaddress (1 to 5 addresses) + {0x87, 0x2c, 0x69, 0x5d, 0xac, 0x27, 0x71, 0xe1, 0xf4, 0xd6, 0xeb, + 0x4e, 0x73, 0x9c, 0xec, 0x9c, 0x42, 0x4d, 0x94, 0x86, 0xf1, 0x3d, + 0x5a, 0x65, 0x58, 0xd0, 0xae, 0xbf, 0x02, 0x0d, 0x8c, 0xed}, + {0x5e, 0x42, 0x16, 0x16, 0xbf, 0xab, 0x3f, 0xde, 0x4d, 0xcc, 0x0f, + 0x1c, 0x86, 0x93, 0x03, 0x5a, 0x1f, 0x46, 0x74, 0xd7, 0xf6, 0xce, + 0x47, 0xf4, 0xdc, 0x76, 0xe4, 0xab, 0xce, 0x17, 0x84, 0xe1}, + {0x34, 0xca, 0x69, 0x49, 0x7f, 0xce, 0x90, 0x31, 0xbb, 0x72, 0x0b, + 0xad, 0x27, 0xe1, 0x17, 0xdc, 0xe3, 0xdb, 0x4f, 0x01, 0x9d, 0xfb, + 0x35, 0xcb, 0xa7, 0x72, 0xb1, 0x9b, 0x1f, 0x36, 0x92, 0x37}, + {0xe0, 0x42, 0xe1, 0x69, 0xf3, 0xbc, 0xb8, 0x3a, 0x07, 0xc0, 0xed, + 0x0b, 0x0a, 0x4d, 0x3c, 0x89, 0xa2, 0xcb, 0x3a, 0x2d, 0x0d, 0x43, + 0x3d, 0x36, 0xdf, 0xb2, 0x5a, 0x96, 0x75, 0xc8, 0x6f, 0xe2}, + {0xbf, 0xbd, 0xd1, 0xef, 0xef, 0x67, 0x88, 0xc1, 0x03, 0xbd, 0xc7, + 0x51, 0x0d, 0xee, 0xa9, 0x62, 0x9c, 0x2a, 0xc2, 0xb0, 0xac, 0x60, + 0x37, 0x30, 0x48, 0xcf, 0x2a, 0xf5, 0xb5, 0x3c, 0x73, 0x67}, + // addnft (1 to 3 nfts) + {0xb5, 0x7a, 0x5b, 0xd1, 0xc1, 0xd8, 0xd5, 0x00, 0x3f, 0xe1, 0x76, + 0x4a, 0xbb, 0x0a, 0x88, 0x16, 0xda, 0x38, 0x41, 0xc3, 0xd5, 0x93, + 0xfe, 0x4c, 0xf0, 0xe4, 0xe6, 0x93, 0xbe, 0x30, 0xf6, 0x94}, + {0x46, 0xc7, 0xf7, 0x84, 0x5c, 0x80, 0xcf, 0x88, 0x0e, 0x63, 0x3e, + 0xb7, 0xe6, 0x10, 0xed, 0x18, 0x8e, 0xdf, 0x38, 0x32, 0xa5, 0x43, + 0x4f, 0x11, 0xc1, 0xbb, 0x1d, 0xc8, 0x67, 0x58, 0x10, 0xdf}, + {0x12, 0x97, 0xe7, 0x66, 0xb4, 0xf1, 0x4a, 0x69, 0x4e, 0x69, 0xa4, + 0x89, 0x12, 0x01, 0xcc, 0xff, 0xb8, 0x9c, 0x8c, 0xba, 0x90, 0xd7, + 0xb9, 0x0a, 0x1d, 0x73, 0x5a, 0xea, 0x71, 0x21, 0x06, 0xd4}, + // remnft (1 to 3 nfts) + {0x1b, 0x25, 0x90, 0xd8, 0xa5, 0xe7, 0x5b, 0xc1, 0x02, 0x46, 0xae, + 0x6e, 0x73, 0xe6, 0xd5, 0x13, 0xf3, 0x40, 0xa3, 0x15, 0xae, 0x9f, + 0x7d, 0x96, 0xed, 0x46, 0x72, 0x84, 0x00, 0xac, 0xf9, 0x3f}, + {0xb2, 0xc5, 0x9b, 0x73, 0x3d, 0x84, 0x37, 0xb5, 0x9b, 0xf9, 0xa5, + 0x9a, 0x05, 0xcf, 0xc6, 0xd2, 0x21, 0xf9, 0x78, 0xec, 0x6b, 0xa1, + 0x7a, 0x51, 0xbd, 0x87, 0xd6, 0x43, 0x44, 0xc2, 0x14, 0x2b}, + {0x76, 0xe3, 0xa5, 0xf2, 0x6c, 0x3e, 0xb9, 0x9d, 0x04, 0xc1, 0x49, + 0x05, 0x5e, 0x6f, 0xae, 0xbc, 0x97, 0x7a, 0x75, 0xaa, 0xe7, 0x8b, + 0x32, 0x26, 0x19, 0xb9, 0x24, 0xdf, 0x16, 0x22, 0x39, 0x6e}, + // remalladdr + {0x0c, 0xc1, 0xac, 0x65, 0x14, 0x53, 0xa8, 0xe6, 0x4c, 0x0c, 0x83, + 0xcb, 0x5a, 0x08, 0xc1, 0x50, 0x11, 0x0e, 0xc8, 0x59, 0x91, 0xcc, + 0xec, 0xb5, 0xb3, 0xd8, 0xa3, 0xc6, 0x4c, 0x4e, 0x42, 0x7e}, + // addbundles + {0x7e, 0x95, 0xf7, 0xd5, 0x10, 0xa1, 0x22, 0x90, 0xbc, 0x0c, 0xa9, + 0x9e, 0xfc, 0xae, 0x01, 0x08, 0x9b, 0x53, 0x07, 0x1a, 0xf5, 0x96, + 0xda, 0xaf, 0x6d, 0x20, 0x1b, 0x99, 0x9e, 0x1c, 0xe7, 0xfe}, + // regaddress + {0x31, 0x75, 0x60, 0x8d, 0xb5, 0x99, 0x15, 0x21, 0x91, 0x2b, 0x03, + 0xf2, 0xf4, 0x05, 0x21, 0x6c, 0x6c, 0x56, 0x10, 0x85, 0x87, 0xdc, + 0x3c, 0x17, 0x58, 0x09, 0x77, 0x3e, 0x75, 0xb0, 0x0e, 0x99}, + // xferaddress + {0xf1, 0x4c, 0x79, 0xd4, 0x6c, 0x49, 0x8b, 0x89, 0xba, 0x69, 0xa8, + 0xf8, 0x7c, 0x85, 0x7c, 0xc9, 0x35, 0x81, 0x1e, 0x1b, 0x61, 0x41, + 0x74, 0x9a, 0x49, 0xa2, 0xe9, 0x66, 0xcf, 0xcd, 0x0d, 0x36}, + // regdomain + {0x60, 0xd8, 0xec, 0x6f, 0x61, 0x65, 0x77, 0x4c, 0xad, 0xf6, 0xae, + 0x63, 0x51, 0x2a, 0xbd, 0x78, 0xa1, 0x25, 0xb7, 0x31, 0xf5, 0x6c, + 0xe2, 0x95, 0x48, 0x5f, 0x49, 0xf2, 0x4a, 0xf0, 0xe4, 0x46}, + // renewdomain + {0x56, 0x06, 0x75, 0xf9, 0xab, 0x9f, 0xbd, 0x46, 0x3c, 0x0d, 0x60, + 0xf1, 0x02, 0x4b, 0x44, 0xea, 0xd4, 0xe3, 0xe6, 0x9e, 0x3a, 0x3c, + 0xf9, 0xb4, 0xf7, 0xee, 0xbd, 0xf3, 0xe8, 0xbb, 0x8a, 0x82}, + //setdomainpub(true, false) + {0x0a, 0x20, 0xee, 0x2e, 0x7b, 0x8b, 0x69, 0xcd, 0x80, 0xf0, 0xdc, + 0xed, 0xaa, 0x49, 0x0a, 0xa1, 0xef, 0x1d, 0x45, 0x92, 0x17, 0xd2, + 0xfc, 0x49, 0x14, 0x5e, 0x08, 0xad, 0xfa, 0x09, 0xda, 0xb0}, + {0xd4, 0x19, 0x5a, 0xae, 0x6f, 0x0d, 0x6d, 0x41, 0xd0, 0xcb, 0x2e, + 0xd1, 0xc7, 0xdb, 0xa8, 0x16, 0x5d, 0x91, 0x78, 0xa2, 0x91, 0x0c, + 0xab, 0x88, 0x5b, 0x0a, 0x44, 0xcb, 0xed, 0x6b, 0x8d, 0xc1}, + // xferdomain + {0xc1, 0x34, 0x06, 0xc6, 0xb1, 0x9f, 0xbd, 0xff, 0xf5, 0xba, 0xe0, + 0x2b, 0x3a, 0x4d, 0x5f, 0x1b, 0xfd, 0x7f, 0x59, 0x48, 0xc4, 0xba, + 0x23, 0x22, 0xc3, 0x63, 0xf5, 0x6d, 0xda, 0x6c, 0xb6, 0x67}, + // remallnfts + {0xf4, 0xaa, 0x02, 0xff, 0x5c, 0x51, 0xea, 0x15, 0x33, 0x80, 0x53, + 0xbc, 0xec, 0x1f, 0x2c, 0x19, 0x85, 0x64, 0xb3, 0xd3, 0xaf, 0x24, + 0x7a, 0x4c, 0x3c, 0xe2, 0xe2, 0x06, 0xec, 0x52, 0xce, 0x65}, + // cancelfndreq + {0x92, 0xdc, 0xfb, 0x2f, 0xdc, 0x06, 0x15, 0xe3, 0x0f, 0xfe, 0x47, + 0x7c, 0x6b, 0x57, 0xe0, 0xf4, 0xbd, 0x12, 0x59, 0x13, 0xe1, 0xa6, + 0x97, 0x4a, 0xa1, 0x82, 0x36, 0xe1, 0x06, 0x69, 0x28, 0xc3}, + // rejectfndreq + {0x1f, 0xcd, 0x65, 0xe4, 0x5c, 0x2f, 0xd4, 0x78, 0x38, 0x01, 0xad, + 0xc5, 0x4a, 0x98, 0xdc, 0x6c, 0xa1, 0x5a, 0xd9, 0x84, 0xe0, 0x60, + 0x1e, 0x40, 0x06, 0xa9, 0x35, 0xb6, 0x05, 0xc4, 0x1e, 0x24}, + // stakefio + {0x41, 0xe9, 0xb6, 0xee, 0x12, 0x64, 0xf8, 0xac, 0xd8, 0x26, 0x79, + 0x6b, 0x8a, 0xed, 0x5a, 0x73, 0xe9, 0x95, 0xef, 0xe2, 0x94, 0xb9, + 0x71, 0x48, 0x14, 0x44, 0x99, 0x2e, 0x17, 0xb4, 0x99, 0xf5}, + // unstakefio + {0x0d, 0x99, 0x33, 0x50, 0x1d, 0x74, 0xfb, 0x4e, 0xd0, 0x1c, 0xb4, + 0xa1, 0x12, 0xfd, 0x05, 0x76, 0x5f, 0x73, 0xda, 0x96, 0x2a, 0x29, + 0x42, 0xb8, 0x96, 0xfd, 0xb9, 0x87, 0xeb, 0xd8, 0xd5, 0x28}, + // voteproducer (1 to 5 producers) + {0xb5, 0xd9, 0xdb, 0x9f, 0x0b, 0x3b, 0x7c, 0xad, 0x2d, 0xc5, 0xd2, + 0xd0, 0xa8, 0xe9, 0xc6, 0xfb, 0x24, 0x31, 0x87, 0x9c, 0x8f, 0x6b, + 0xd7, 0x6a, 0x23, 0x04, 0x78, 0xbd, 0xdc, 0x5b, 0x7e, 0xcb}, + {0xf1, 0x7a, 0xeb, 0xe7, 0x79, 0xc9, 0xf7, 0xee, 0x31, 0x08, 0x67, + 0xc8, 0x43, 0x5c, 0x49, 0x55, 0xba, 0x2c, 0xef, 0x75, 0xc8, 0x1a, + 0x29, 0x80, 0xe7, 0x13, 0x66, 0xb6, 0xfe, 0x31, 0xf8, 0xfd}, + {0x09, 0x64, 0xeb, 0xb4, 0x1d, 0x86, 0xff, 0xae, 0x0b, 0x84, 0xbc, + 0x9a, 0x6f, 0xba, 0x6e, 0x72, 0x9c, 0x5f, 0x6c, 0xf4, 0x96, 0x1a, + 0xfa, 0xb1, 0x31, 0x69, 0x22, 0xb1, 0x18, 0x49, 0x77, 0xd6}, + {0x7e, 0x29, 0x19, 0x93, 0xf5, 0x69, 0x4a, 0xc9, 0x5b, 0x35, 0xaa, + 0xef, 0xb2, 0x49, 0x25, 0x9f, 0x36, 0x74, 0x70, 0xbb, 0x77, 0xc9, + 0xf5, 0x18, 0xea, 0x58, 0x5e, 0x8b, 0xc5, 0x3a, 0x73, 0x61}, + {0x7c, 0xe8, 0x5f, 0x32, 0xe7, 0x70, 0xe2, 0x29, 0xe6, 0x3d, 0x4a, + 0xf7, 0x2e, 0x17, 0x70, 0x32, 0xd8, 0x4b, 0xd3, 0x97, 0x8c, 0xbf, + 0xe2, 0x65, 0xdd, 0x12, 0x02, 0xe7, 0x1e, 0x49, 0xc0, 0xe3}, + // voteproxy + {0xfb, 0x3a, 0x27, 0x7f, 0xb6, 0x52, 0x01, 0xc2, 0x1d, 0xb9, 0x6e, + 0x00, 0x02, 0xb0, 0xc5, 0x4b, 0x3b, 0x41, 0xe1, 0xf3, 0xb9, 0xe9, + 0xab, 0xd6, 0x06, 0x3e, 0x30, 0x31, 0x98, 0x18, 0xd7, 0xe4}, }; enum { @@ -99,7 +226,7 @@ __noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity uint16_t allowedHashesLength) { PRINTF("Integrity check for: {"); for (size_t i = 0; i < SIZEOF(integrity->integrityHash) - 1; i++) { - PRINTF("0x%x ,", integrity->integrityHash[i]); + PRINTF("0x%02x, ", integrity->integrityHash[i]); } PRINTF("0x%x}\n", integrity->integrityHash[SIZEOF(integrity->integrityHash) - 1]); #if defined(DEVEL) && defined(NO_INTEGRITY_CHECK) diff --git a/test-integration/signTransactionOtherEosio.js b/test-integration/signTransactionOtherEosio.js index 4599a368..27771f97 100644 --- a/test-integration/signTransactionOtherEosio.js +++ b/test-integration/signTransactionOtherEosio.js @@ -222,6 +222,200 @@ testStep(" - - -", "Sign testnet transaction - voteproducer one producer"); assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } +testStep(" - - -", "Sign testnet transaction - voteproducer two producer"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: ["Producer 1", "Producer 2"], + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - voteproducer three producer"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: ["Producer 1", "Producer 2", "Producer 3"], + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign testnet transaction - voteproducer four producer"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: ["Producer 1", "Producer 2", "Producer 3", "Producer 4"], + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - voteproducer five producer"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: ["Producer 1", "Producer 2", "Producer 3", "Producer 4", "Producer 5"], + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - voteproxy"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproxy", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + proxy: "Proxy", + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, + }], + + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} await transport.close() testEnd(scriptName); diff --git a/test-integration/snapshots/getVersion/nanos.01.png b/test-integration/snapshots/getVersion/nanos.01.png index 0b8230043cd1d5d8700b6e706fc50c591984d5b6..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}F1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX|Kfc!h delta 388 zcmV-~0ek+c1D^wsB!6Z}L_t(|ob8#>lEWYfMajF-kvbwsJl<1icCP53zd8mR}xKe4;!`oe7Ha&kN$%^-k@tgxY^_rPPR7&|>hl zAYbf!S$g!<&3(Al$TvgG^Ow`B1?&O3)Z;%mO>Uso?d6PGN5#}`@+Si=BZ^TukRA|k zxAtUm<;iFscUxD7c=I!0zL=^9t~i;I2FMf|%Qju`B4fXnBl!yeU=PrR%XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.03.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.03.png index 4a9c1cfb6fd69170c56f40e746317c0cbf7f98af..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 100644 GIT binary patch delta 331 zcmV-R0kr=90_FmcB!4YQL_t(|ob8$24#OY_g>_lq|ABkaU6>Ig)PDzc=gTfOhlZk{ zo;n8r005ZdI_F!0T0%@Sk=-TeZ*2!!NP-@I`omqP^G9mKTjEAgfM z4oJ|74y$`>td^kN<4#ze0I`Dah`kAjcT^Ycv2i&H2DAw$#(%L50Kfpd7t$wyInW1l zpbzFi6Dj(Bbj0Me$6NY_b?xWKjxL#?g%)ag<; zah7jimR-ceOH;hG#Tyeh6D?J4TN#Ioo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un z2L`48IKzIGTSR(V(26H~p#Ed>eZW64BLjH-xl<)+cdeH#rwE+<#f~^srYeeVKzs!N d0002!$r!O<;!gko002ovPDHLkV1ka^o2mc+ delta 355 zcmV-p0i6Ek0{#M!B!5LoL_t(|ob8$24#OY_g>_lq|ABkaU6?cml!8B%ne$z3h6;jc zcNPKw007{Q>l|+hw4|I0ncXGn-_-$FAW2VO;}Nbi#Dm)Kk$ez5z&oIreezj9=!Vbg z07~3DI_>VQ@p=U9p7$HC1t^~2JL0bZ`HdQ~J2pR#lEHlm6My5}=3m);-}wgFAC4iV z$o?c$iADCOf*Py`HCRb0v9W5Zd5yEmEXry5*N(1?sfiZAPzQxV(=Q5Dysk9^kBu2T{z`JkY2YBqI$2MDg^sFX3= z>Fa=+B#@{TgIsq*jn|}nQ&jSUMn)V#f@oaqU#|8DGrxl=Dq_=DgBAY=_*D6uqv~5u zUk3;$KHvLA+Vo4lX63U=cS^HOlve-%004jm`~Zd{;`%%W#j^ka002ovPDHLkV1jzO BtO)=B diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.10.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.10.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.11.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.11.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.12.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.12.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ac2fda11264a5b806f9e178bf6a3f001ebda6 GIT binary patch literal 288 zcmV+*0pI?KP)-zQ-78MTp?&>(tGsHx)pPyB$o0*;nNx)rSE@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~ID zRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000sudXn+Km6p4u)vE6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8! z*R;jy^2B2TI{(PbbRN|gkyrne5jj;~q8!57G#md>dQiI#o*p-&nPMHz-OnN@RKL0} zN=o$`$to<>Z;Cna#~gSHaT2V{{wa=7-H%@>Gernvc0=#O#&{9?`)+86m%9z!&?CB` r$2;kUx}~EV>WOaXj&3Lb0Kfn~Fh#`Zj<9W)00000NkvXXu0mjf`K5m! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.14.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.16.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.20.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.20.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.21.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.21.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ac2fda11264a5b806f9e178bf6a3f001ebda6 GIT binary patch literal 288 zcmV+*0pI?KP)-zQ-78MTp?&>(tGsHx)pPyB$o0*;nNx)rSE@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~ID zRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000sudXn+Km6p4u)vE6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8! z*R;jy^2B2TI{(PbbRN|gkyrne5jj;~q8!57G#md>dQiI#o*p-&nPMHz-OnN@RKL0} zN=o$`$to<>Z;Cna#~gSHaT2V{{wa=7-H%@>Gernvc0=#O#&{9?`)+86m%9z!&?CB` r$2;kUx}~EV>WOaXj&3Lb0Kfn~Fh#`Zj<9W)00000NkvXXu0mjf`K5m! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.23.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.23.png new file mode 100644 index 0000000000000000000000000000000000000000..b81e3642d9421f2d3b692fa4d671cd85d0dd7e18 GIT binary patch literal 295 zcmV+?0oeYDP)Ne&zcOF-E zhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0TsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ` z*I;2-fBn(7Gb|F&x%YklYChHn7#$y%uwR)5gZWx$GH$v zqTh(3z!LqYkOONs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.26.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.30.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.31.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ac2fda11264a5b806f9e178bf6a3f001ebda6 GIT binary patch literal 288 zcmV+*0pI?KP)-zQ-78MTp?&>(tGsHx)pPyB$o0*;nNx)rSE@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~ID zRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000sudXn+Km6p4u)vE6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8! z*R;jy^2B2TI{(PbbRN|gkyrne5jj;~q8!57G#md>dQiI#o*p-&nPMHz-OnN@RKL0} zN=o$`$to<>Z;Cna#~gSHaT2V{{wa=7-H%@>Gernvc0=#O#&{9?`)+86m%9z!&?CB` r$2;kUx}~EV>WOaXj&3Lb0Kfn~Fh#`Zj<9W)00000NkvXXu0mjf`K5m! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.33.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.33.png new file mode 100644 index 0000000000000000000000000000000000000000..b81e3642d9421f2d3b692fa4d671cd85d0dd7e18 GIT binary patch literal 295 zcmV+?0oeYDP)Ne&zcOF-E zhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0TsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ` z*I;2-fBn(7Gb|F&x%YklYChHn7#$y%uwR)5gZWx$GH$v zqTh(3z!LqYkOOILLJNuxM>_t7#f@QUVMiW#8CeN z4r)+zIj`9D06)v^NyNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.37.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.37.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIjxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.42.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.42.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ac2fda11264a5b806f9e178bf6a3f001ebda6 GIT binary patch literal 288 zcmV+*0pI?KP)-zQ-78MTp?&>(tGsHx)pPyB$o0*;nNx)rSE@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~ID zRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000sudXn+Km6p4u)vE6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8! z*R;jy^2B2TI{(PbbRN|gkyrne5jj;~q8!57G#md>dQiI#o*p-&nPMHz-OnN@RKL0} zN=o$`$to<>Z;Cna#~gSHaT2V{{wa=7-H%@>Gernvc0=#O#&{9?`)+86m%9z!&?CB` r$2;kUx}~EV>WOaXj&3Lb0Kfn~Fh#`Zj<9W)00000NkvXXu0mjf`K5m! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.44.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.44.png new file mode 100644 index 0000000000000000000000000000000000000000..b81e3642d9421f2d3b692fa4d671cd85d0dd7e18 GIT binary patch literal 295 zcmV+?0oeYDP)Ne&zcOF-E zhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0TsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ` z*I;2-fBn(7Gb|F&x%YklYChHn7#$y%uwR)5gZWx$GH$v zqTh(3z!LqYkOOILLJNuxM>_t7#f@QUVMiW#8CeN z4r)+zIj`9D06)v^NyT&O>Qb#}=76mC&r4HBHN=1ONcLa;z@+eu?7eq{7_9zGmij z@mR>E%HuhOyRgt4&m%;8D;L(7^_kN76rp3ei0(K|NGaz%El|4!hO3Fbsy{gvHiE_L6 zy_Ny)8*sr=+&5y#Sll;-9{58KJgFJmNJA|W$MPb!N<-}|y~dttXj?zVAF;nrL)*1t zG$4_Nu7osHKpN@{X{a+{o&g!sPyhe`fDQNnZjzhT?HR$!00000NkvXXu0mjf5zUHl literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.47.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.47.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.49.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.49.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI&;CqZB}!FbmFO?#k-(&NooMI}MUT{XwXNh5AE54eUV;EHT~*j`;aJ5c_}a z$CH_V_4*a9y&%>TvPGDurm^JYiR=eN00000NkvXXu0mjfCjXTc literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.54.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.54.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7355f1a1e0a957ca4daa911cd6c80ac8a74137 GIT binary patch literal 280 zcmV+z0q6dSP)YC|HoY8|wQs!5eZU9aZXBck4 zfE07v%EJ6_0=5CAvSPQm6RaLtBk=Zum$=Eob`E5)5OTd2 z1ZB>no@5oUjX0Zz*0;cE=qd27ikyb(<1|zmP7!AqZomLeL(k)U8tRGFbZzzHB ebde?^`hy487@o|2lss?%0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.57.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.57.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI8?)3L zPzNOf0002oabM#{f>wg21!Z>;{cSyg9um>R*W;x7qT@`*NDDWD3UUQx)lWXR8{P1- zo2KFEZmROzyy=^sVysxio$Yf@wnq^v-Tbu0xDBsdMpa1>*@I--KA=apS z)d{bed4U$-Lg~qX1+Z$XR1@SD-3NHYx?@)!?b2-whqu+6)Z|r533? zTBdAJQ&zwde?hB~e3$D+hbiv^V&*P~{tF4^70}Y!OnxnUYcxvA&YxPXw0c(+00000 az$qV}&c746DMVWU00004uc>JMRA$`|G_@E2NKp`sjWb$a8G=gj)hLH(XZ$>;3Gve$Wk{ z(FSm&H#)xEQ{y!S&F=Sv*8s2?d`A2QfL7E%YAj7hQILvoCV!?H0DuE#Po!@EF&GbG zFdoEUB#pg)9{jfltzSZWzthy(`{*o zWomY^;;fk}G*+)x$uhlRPmo)W$_}M<63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t` z=7LVe;C6w(Ge8n8&I6iv?c;=N6!z9d*xHX&>SdWJ{Q9(6Zy3n&m!@1ENv;F}0002% Z@&l1?%K;I4+YSH#002ovPDHLkV1ijCmazZ; diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.18.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.18.png index 17af894514d076e6ab7aadfdf2335546a39899f8..9d69500cd471337e4f907a855ae218d6938b8ae1 100644 GIT binary patch delta 367 zcmV-#0g(RU0*V8WB!5v!L_t(|ob8#*62l+}MNOyq{}0ZhT{z<~2tE?5Xzy921}Omr zLqY%m007+ax$GrDE77L~&+g*%_iO`tU`~%ek28F(aGYEwAEASwLcRk;@3ZUnK{vc+ z8z7NZbX?tA<242C?)QY(0EiiUNBjkVR@6XhEKNsIAQfRIOn+qn01ntak*)w@FdxKV zK8V3gB<~-VO1n;e?6_%VL(scJ>26uWp!2KY^K!l7wTZ&pQ^ZD4VPte>(De^{5ffjU z5_FMLN!o+U@8&4uc>JMRA$`|G_@E2NKp`sjWb$a8G=gj)hLH(XZ$>;3Gve$Wk{ z(FSm&H#)xEQ{y!S&F=Sv*8s2?d`A2QfL7E%YAj7hQILvoCV!?H0DuE#Po!@EF&GbG zFdoEUB#pg)9{jfltzSZWzthy(`{*o zWomY^;;fk}G*+)x$uhlRPmo)W$_}M<63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t` z=7LVe;C6w(Ge8n8&I6iv?c;=N6!z9d*xHX&>SdWJ{Q9(6Zy3n&m!@1ENv;F}0002% Z@&l1?%K;I4+YSH#002ovPDHLkV1nqamRSG* diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.26.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.26.png index 39f9d5ef3428d45d06fe3bb3eff678b6fee53dd4..2e873ea27e130e53f705a22ee1ee403ebde0ec32 100644 GIT binary patch delta 353 zcmV-n0iOQT0{jAyB!5FmL_t(|ob8$04uc>JhH;ti|G-}81qo?rEudu-_J3Ei!%BJr zN(cY|0DwEr!+s>FCE8T6>?%h8j-EgZnbG6pwukcw+n$f%5-J1*cm{~p&wken-S8Pb z0f`jRF}jz=YYAH2?g_6B5G(kK_;UbVQ3F|HX*r4m(juGI}Die1G|1GGc=${i|!}v4zdH*Oq!cDCBR6y&y%>wK&`>w?2r`a}bXy zG0ONWSq6ybuV5XgT-#kv#8__1n2x7HrAf(!#crkYs6@0VY|Q{&r#_7r+0(NX(R8Jy z#7L!{Is5*dds;!f@+f2OtX65wd5lhRb009g^Is-#0k9Yq_3e z-=+_t^ZHY2wj1rZDM9~=zY7_MJUE#H0Kg1f@|(vJxNtPg00000NkvXXu0mjfUR$SY delta 312 zcmV-80muIQ0@DJJB!3!7L_t(|ob8!G4#OY}1WDEW|G^yS0SQ?KTu^ar=+22c7C{S` zunhqK003}Dit97MC|OfM*;7P+TMu9cCVKvP-66$r-8`p`&>;9iy#t!+v-Wt<4KM2f zv?wb&ukNGqT7pj3z2J2Mnic#+{7nEoQ3E++X*tRX0L@7kd)#H)> z1G1I2qdTU*YcZ8~z=*ZUp31$I%sMC|ciyvFgZcRh00000a3&u(*t+?*+E?8G0000< KMNUMnLSTY!0G53K diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.34.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.34.png index 17af894514d076e6ab7aadfdf2335546a39899f8..49420c185144544f43b2c74e20b584ccd42bfacb 100644 GIT binary patch delta 358 zcmV-s0h#{d0)YdNB!5UrL_t(|ob8#*5`!QNMX^)=|ASq$3uc&1NFY2ck>0aX3>X3i zxP|}#006k-bIrE|R$@#Gk=-Te@6`^pz=9rck28F(aGcyGFQJ8?LjDDa(P!88LN~lt zJ0Ou}be!E=<242C9`}UT0T46zj`$k@x}pZM#?o{Y4bmdajDM*O0KfseC(ZyfpY93DZyev94T{JbQRjJzBzkoiGwcuxs-Y-C$l}#QLa-y*v zCqn;N`sy73Enmqna=C_87XxRErXRIOjE0S|{{dCKK8k4F)&GEbi?FCfYU`(FDXN|$ zo)p>4uc>JMRA$`|G_@E2NKp`sjWb$a8G=gj)hLH(XZ$>;3Gve$Wk{ z(FSm&H#)xEQ{y!S&F=Sv*8s2?d`A2QfL7E%YAj7hQILvoCV!?H0DuE#Po!@EF&GbG zFdoEUB#pg)9{jfltzSZWzthy(`{*o zWomY^;;fk}G*+)x$uhlRPmo)W$_}M<63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t` z=7LVe;C6w(Ge8n8&I6iv?c;=N6!z9d*xHX&>SdWJ{Q9(6Zy3n&m!@1ENv;F}0002% Z@&l1?%K;I4+YSH#002ovPDHLkV1nH)mQVly diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.42.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.42.png index 17af894514d076e6ab7aadfdf2335546a39899f8..5bb45cccade90c9a2cfac25e28104e8b442c72fa 100644 GIT binary patch delta 347 zcmV-h0i^!o0`>xsB!4|gL_t(|ob8#>4#OY_MeVZw{|EPBdoVEs&{B()xqBX#j*)^_ zi$a!Qk+z-tNDDQB6XX-1s?V(VD*kj9QW@O#|&Kft9~Pj>>gEBpseo3ODB t>E5lBi$LC1T_}B-;DiJK0002s#23A`+~O27dO`pI002ovPDHLkV1fn#tLOj# delta 327 zcmV-N0l5D50^$OYB!4MML_t(|ob8#>4uc>JMRA$`|G_@E2NKp`sjWb$a8G=gj)hLH(XZ$>;3Gve$Wk{ z(FSm&H#)xEQ{y!S&F=Sv*8s2?d`A2QfL7E%YAj7hQILvoCV!?H0DuE#Po!@EF&GbG zFdoEUB#pg)9{jfltzSZWzthy(`{*o zWomY^;;fk}G*+)x$uhlRPmo)W$_}M<63q#LAg=78n(Wb0w*uJUcPa^`X}wh-BQ0t` z=7LVe;C6w(Ge8n8&I6iv?c;=N6!z9d*xHX&>SdWJ{Q9(6Zy3n&m!@1ENv;F}0002% Z@&l1?%K;I4+YSH#002ovPDHLkV1jXKmc#%6 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.73.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.73.png index 2c164fd2a777adf9067da2fe8a520fac72d9fdf7..23819998008b41a23dd1cf55653cbdea7c63ad83 100644 GIT binary patch delta 326 zcmV-M0lEJ00^tIXB!4JLL_t(|ob8#>4#OY_MeVZw{|EP>doW={5izpL%stt|YN(~4 z5^hrh0002OabNzHz)Fs(64_mX{$B0C2u0BI<#DF_O2=8+)FXTlbf|ZL82#eEeJ~8K z)ecC|iq5NhYoZ=OyT_e~ngHEAfo}eSLqS5EY2-Ef2hf^CQ9vETaifBqm4N(|R{zVy{Faid0GVyn&+2R(mz1 zbk@dP@+0@^{!V`jix2)?p{_d`<;l@WET0Dy4#OY_MeVZw{|EP>doXcCP;s_}={?!QYOtlC z5N|^O0002oaUR!O0xdD7mB`K#^tZJGJ!CCKijJ#$YP^=9+2fw@ngFqa&xpSS(2g2NkEP`(8l)zi8Gln70DuE#FQoqfa$pZ~ zU=MO&$x!sqxlTN<W100000NkvXXu0mjfF~*{U diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.03.png b/test-integration/snapshots/signTransactionRecordobt/nanos.03.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..959a70fad0ab7c7609d498e1816667519a983348 100644 GIT binary patch delta 330 zcmV-Q0k!_s0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f|2u|5&!@I delta 314 zcmV-A0mc610@VVLB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=oqB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1m8JuW0}P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.05.png b/test-integration/snapshots/signTransactionRecordobt/nanos.05.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.06.png b/test-integration/snapshots/signTransactionRecordobt/nanos.06.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.23.png b/test-integration/snapshots/signTransactionRecordobt/nanos.23.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..959a70fad0ab7c7609d498e1816667519a983348 100644 GIT binary patch delta 330 zcmV-Q0k!_s0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f|2u|5&!@I delta 314 zcmV-A0mc610@VVLB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=oqB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1m8JuW0}P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.25.png b/test-integration/snapshots/signTransactionRecordobt/nanos.25.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.26.png b/test-integration/snapshots/signTransactionRecordobt/nanos.26.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.43.png b/test-integration/snapshots/signTransactionRecordobt/nanos.43.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..959a70fad0ab7c7609d498e1816667519a983348 100644 GIT binary patch delta 330 zcmV-Q0k!_s0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f|2u|5&!@I delta 314 zcmV-A0mc610@VVLB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=oqB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1m8JuW0}P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.46.png b/test-integration/snapshots/signTransactionRecordobt/nanos.46.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.63.png b/test-integration/snapshots/signTransactionRecordobt/nanos.63.png index c0150041dd070cf4bc71a173bba9b4fb4ff7d507..959a70fad0ab7c7609d498e1816667519a983348 100644 GIT binary patch delta 330 zcmV-Q0k!_s0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f|2u|5&!@I delta 314 zcmV-A0mc610@VVLB!3)9L_t(|ob8$24#OY_h3&Gw{{#1;yD)J?5wU8Z=6u;j=YTNq zXP$)s0002EfS#y{?~POxgjjLhzWWmy+COUH1Vly zSBtO7p_Y8}Q_aZHVQdA+Gr|=oqB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000TL)iDLo_vzZBwZ31h}-+vp$5KBP!Zr<#VC%unt ztrs04mVoXEhd=!)TfASH^09V+plr}i$7iGd41kd{YY>}I%ZInMD@f_8` z!jY?7e1+t~+Z#^0hzH`uVV0j>f^kaZz@Er~C9Q=e)X?YWlx{)P7C9YMJN)_ENK*%; z%@q$~OhJ@+Ze*(NnOp}oX#J)HhA&;*)-<`kdTqifYQ=v7GLjuI)2!bG3mmdWD>pzC(YCr%0002ov JPDHLkV1m8JuW0}P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png index b1fbe22ce3eb57a0a62a8e33766658e822f72279..03ce20464f95e49db96bbf4acf2c53b7eedcb45c 100644 GIT binary patch delta 457 zcmV;)0XF{61LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{w0euMGYGM|ASe;f>Ega%EQ-$3LmkcY3jIk zoRAAqQ4~e-t6UbJd)yB;ZV*>Y`>!D$_xC{Zu4QEEmec?1IEH|Q18$$SIJab@<(u=! zXZb@KV`af6RJ&~5)XP)`Do1<2Vt^2M^>?LSxn>VNlzMmAimZUPk`Ge79c zLbut;)v8Sv;sR>Q)#9EfkN|Z^R+ZxqE_bs4F6hjY_Kq#bw4Q@&)H$Em1l;oL;&S`{ zd-aODvm?)YtYa#k#*mi8JgQ2eH$rvM0elilPr<){yeDp-M?XF|})7 z?a5kzQfStMW{RVFN$yMfcbCOf$5gNpDuq&F1uOs*Q&Ug!I4P7c3216bywKocYCIE} zQYhuBp>Zj6qnPRgl0s?c64c#1RmR0sshFNd3I$@l-Y)oj`TkQyjO0ILiXNHg0E!hR fYGW^oq9_cWEXY=S?B&a?00000NkvXXu0mjfu|(XG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.66.png b/test-integration/snapshots/signTransactionRecordobt/nanos.66.png index 8524d356e7311bd4f4a905c37048883fe3cae241..dece1ade132494f6640325ea4ffed9e72d8f6e28 100644 GIT binary patch delta 460 zcmV;-0W<#81LgyeB!8_*L_t(|ob8#*a>FnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-GM3K?y-vR~tA=jFu`@u%>CnYc&&I=~Wq*KrJyFPpbL7oz1{i_d z+0ZCat44#XSz9*iWff9=^wn|F$nZ@VmAt2a)%^>AUdstM z81Mry_S5?{U4Pz4mxYpZu%4WQm4J5wxyo;}?w_y3H9Bt`#5Ry*x1xO-g&xFOtCxuc}2221KQ$vrFASsjp6Hs&# zf0hM_ss5P=lR_y_4fRW*%f(b1gcM54mLPTGf{UqAF*Dsm3Ps^xop(7^IEeg1Cg~vT k96-L5L~ZOzk|ar+7joiadp#1;y#N3J07*qoM6N<$f>`6vX8-^I From 8261a59e4307879a02ede2c4013de2fa90cc15dc Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 12 Jul 2022 14:49:53 +0200 Subject: [PATCH 45/83] Max number of producets in voteproducer to 30 --- .../template_voteproducer.ts | 143 ++-------- ledgerjs-fio/src/utils/parseTxActions.ts | 2 +- src/signTransactionIntegrity.c | 79 +++++- test-integration/signTransactionOtherEosio.js | 255 +++++------------- .../signTransactionOtherEosio/nanos.04.png | Bin 288 -> 303 bytes .../signTransactionOtherEosio/nanos.100.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.101.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.102.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.103.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.104.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.105.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.106.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.107.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.108.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.109.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.110.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.111.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.112.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.113.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.114.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.115.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.116.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.117.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.118.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.119.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.12.png | Bin 288 -> 303 bytes .../signTransactionOtherEosio/nanos.120.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.121.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.122.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.123.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.124.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.125.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.126.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.127.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.128.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.129.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.13.png | Bin 293 -> 316 bytes .../signTransactionOtherEosio/nanos.130.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.131.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.132.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.133.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.134.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.135.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.136.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.137.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.138.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.139.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.140.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.141.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.142.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.143.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.144.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.145.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.146.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.147.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.148.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.149.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.150.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.151.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.152.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.153.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.154.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.155.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.156.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.157.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.158.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.159.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.160.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.161.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.162.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.163.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.164.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.165.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.166.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.167.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.168.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.169.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.170.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.171.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.172.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.173.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.174.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.175.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.176.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.177.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.178.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.179.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.180.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.181.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.182.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.183.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.184.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.185.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.186.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.187.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.188.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.189.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.190.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.191.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.192.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.193.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.194.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.195.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.196.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.197.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.198.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.199.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.200.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.201.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.202.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.203.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.204.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.205.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.206.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.207.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.208.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.209.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.21.png | Bin 288 -> 303 bytes .../signTransactionOtherEosio/nanos.210.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.211.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.212.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.213.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.214.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.215.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.216.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.217.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.218.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.219.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.22.png | Bin 293 -> 316 bytes .../signTransactionOtherEosio/nanos.220.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.221.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.222.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.223.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.224.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.225.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.226.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.227.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.228.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.229.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.23.png | Bin 295 -> 317 bytes .../signTransactionOtherEosio/nanos.230.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.231.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.232.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.233.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.234.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.235.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.236.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.237.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.238.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.239.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.240.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.241.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.242.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.243.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.244.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.245.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.246.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.247.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.248.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.249.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.250.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.251.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.252.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.253.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.254.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.255.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.256.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.257.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.258.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.259.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.260.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.261.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.262.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.263.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.264.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.265.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.266.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.267.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.268.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.269.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.270.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.271.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.272.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.273.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.274.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.275.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.276.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.277.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.278.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.279.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.280.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.281.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.282.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.283.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.284.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.285.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.286.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.287.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.288.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.289.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.290.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.291.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.292.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.293.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.294.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.295.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.296.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.297.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.298.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.299.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.300.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.301.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.302.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.303.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.304.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.305.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.306.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.307.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.308.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.309.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.31.png | Bin 288 -> 303 bytes .../signTransactionOtherEosio/nanos.310.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.311.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.312.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.313.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.314.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.315.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.316.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.317.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.318.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.319.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.32.png | Bin 293 -> 316 bytes .../signTransactionOtherEosio/nanos.320.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.321.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.322.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.323.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.324.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.325.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.326.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.327.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.328.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.329.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.33.png | Bin 295 -> 317 bytes .../signTransactionOtherEosio/nanos.330.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.331.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.332.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.333.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.334.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.335.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.336.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.337.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.338.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.339.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.34.png | Bin 290 -> 314 bytes .../signTransactionOtherEosio/nanos.340.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.341.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.342.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.343.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.344.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.345.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.346.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.347.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.348.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.349.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.350.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.351.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.352.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.353.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.354.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.355.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.356.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.357.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.358.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.359.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.360.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.361.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.362.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.363.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.364.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.365.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.366.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.367.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.368.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.369.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.370.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.371.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.372.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.373.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.374.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.375.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.376.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.377.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.378.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.379.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.380.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.381.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.382.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.383.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.384.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.385.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.386.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.387.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.388.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.389.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.390.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.391.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.392.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.393.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.394.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.395.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.396.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.397.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.398.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.399.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.40.png | Bin 314 -> 322 bytes .../signTransactionOtherEosio/nanos.400.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.401.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.402.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.403.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.404.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.405.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.406.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.407.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.408.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.409.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.410.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.411.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.412.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.413.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.414.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.415.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.416.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.417.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.418.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.419.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.42.png | Bin 288 -> 303 bytes .../signTransactionOtherEosio/nanos.420.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.421.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.422.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.423.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.424.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.425.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.426.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.427.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.428.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.429.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.43.png | Bin 293 -> 316 bytes .../signTransactionOtherEosio/nanos.430.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.431.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.432.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.433.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.434.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.435.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.436.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.437.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.438.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.439.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.44.png | Bin 295 -> 317 bytes .../signTransactionOtherEosio/nanos.440.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.441.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.442.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.443.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.444.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.445.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.446.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.447.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.448.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.449.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.45.png | Bin 290 -> 314 bytes .../signTransactionOtherEosio/nanos.450.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.451.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.452.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.453.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.454.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.455.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.456.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.457.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.458.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.459.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.46.png | Bin 301 -> 323 bytes .../signTransactionOtherEosio/nanos.460.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.461.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.462.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.463.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.464.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.465.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.466.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.467.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.468.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.469.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.470.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.471.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.472.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.473.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.474.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.475.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.476.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.477.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.478.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.479.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.480.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.481.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.482.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.483.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.484.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.485.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.486.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.487.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.488.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.489.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.490.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.491.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.492.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.493.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.494.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.495.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.496.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.497.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.498.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.499.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.500.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.501.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.502.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.503.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.504.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.505.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.506.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.507.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.508.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.509.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.510.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.511.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.512.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.513.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.514.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.515.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.516.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.517.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.518.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.519.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.52.png | Bin 314 -> 322 bytes .../signTransactionOtherEosio/nanos.520.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.521.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.522.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.523.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.524.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.525.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.526.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.527.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.528.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.529.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.53.png | Bin 345 -> 358 bytes .../signTransactionOtherEosio/nanos.530.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.531.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.532.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.533.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.534.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.535.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.536.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.537.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.538.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.539.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.54.png | Bin 280 -> 303 bytes .../signTransactionOtherEosio/nanos.540.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.541.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.542.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.543.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.544.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.545.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.546.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.547.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.548.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.549.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.55.png | Bin 508 -> 316 bytes .../signTransactionOtherEosio/nanos.550.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.551.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.552.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.553.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.554.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.555.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.556.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.557.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.558.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.559.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.56.png | Bin 393 -> 317 bytes .../signTransactionOtherEosio/nanos.560.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.561.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.562.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.563.png | Bin 0 -> 327 bytes .../signTransactionOtherEosio/nanos.564.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.565.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.566.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.567.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.568.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.569.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.57.png | Bin 424 -> 314 bytes .../signTransactionOtherEosio/nanos.570.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.571.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.572.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.573.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.574.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.575.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.576.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.577.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.578.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.579.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.58.png | Bin 356 -> 323 bytes .../signTransactionOtherEosio/nanos.580.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.581.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.582.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.583.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.584.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.585.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.586.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.587.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.588.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.589.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.59.png | Bin 426 -> 317 bytes .../signTransactionOtherEosio/nanos.590.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.591.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.592.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.593.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.594.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.595.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.596.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.597.png | Bin 0 -> 327 bytes .../signTransactionOtherEosio/nanos.598.png | Bin 0 -> 337 bytes .../signTransactionOtherEosio/nanos.599.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.60.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.600.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.601.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.602.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.603.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.604.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.605.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.606.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.607.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.608.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.609.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.61.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.610.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.611.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.612.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.613.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.614.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.615.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.616.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.617.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.618.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.619.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.62.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.620.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.621.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.622.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.623.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.624.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.625.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.626.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.627.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.628.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.629.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.63.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.630.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.631.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.632.png | Bin 0 -> 327 bytes .../signTransactionOtherEosio/nanos.633.png | Bin 0 -> 337 bytes .../signTransactionOtherEosio/nanos.634.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.635.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.636.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.637.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.638.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.639.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.64.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.640.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.641.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.642.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.643.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.644.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.645.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.646.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.647.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.648.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.649.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.65.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.650.png | Bin 0 -> 320 bytes .../signTransactionOtherEosio/nanos.651.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.652.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.653.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.654.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.655.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.656.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.657.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.658.png | Bin 0 -> 321 bytes .../signTransactionOtherEosio/nanos.659.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.66.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.660.png | Bin 0 -> 329 bytes .../signTransactionOtherEosio/nanos.661.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.662.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.663.png | Bin 0 -> 333 bytes .../signTransactionOtherEosio/nanos.664.png | Bin 0 -> 335 bytes .../signTransactionOtherEosio/nanos.665.png | Bin 0 -> 346 bytes .../signTransactionOtherEosio/nanos.666.png | Bin 0 -> 332 bytes .../signTransactionOtherEosio/nanos.667.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.668.png | Bin 0 -> 327 bytes .../signTransactionOtherEosio/nanos.669.png | Bin 0 -> 337 bytes .../signTransactionOtherEosio/nanos.67.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.670.png | Bin 0 -> 331 bytes .../signTransactionOtherEosio/nanos.671.png | Bin 0 -> 330 bytes .../signTransactionOtherEosio/nanos.672.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.673.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.674.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.675.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.676.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.677.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.678.png | Bin 0 -> 345 bytes .../signTransactionOtherEosio/nanos.679.png | Bin 0 -> 280 bytes .../signTransactionOtherEosio/nanos.68.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.680.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.681.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.682.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.683.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.684.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.69.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.70.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.71.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.72.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.73.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.74.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.75.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.76.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.77.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.78.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.79.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.80.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.81.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.82.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.83.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.84.png | Bin 0 -> 314 bytes .../signTransactionOtherEosio/nanos.85.png | Bin 0 -> 323 bytes .../signTransactionOtherEosio/nanos.86.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.87.png | Bin 0 -> 306 bytes .../signTransactionOtherEosio/nanos.88.png | Bin 0 -> 318 bytes .../signTransactionOtherEosio/nanos.89.png | Bin 0 -> 508 bytes .../signTransactionOtherEosio/nanos.90.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanos.91.png | Bin 0 -> 424 bytes .../signTransactionOtherEosio/nanos.92.png | Bin 0 -> 356 bytes .../signTransactionOtherEosio/nanos.93.png | Bin 0 -> 426 bytes .../signTransactionOtherEosio/nanos.94.png | Bin 0 -> 322 bytes .../signTransactionOtherEosio/nanos.95.png | Bin 0 -> 358 bytes .../signTransactionOtherEosio/nanos.96.png | Bin 0 -> 303 bytes .../signTransactionOtherEosio/nanos.97.png | Bin 0 -> 316 bytes .../signTransactionOtherEosio/nanos.98.png | Bin 0 -> 317 bytes .../signTransactionOtherEosio/nanos.99.png | Bin 0 -> 314 bytes 653 files changed, 167 insertions(+), 312 deletions(-) create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.100.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.101.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.102.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.103.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.104.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.105.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.106.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.107.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.108.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.109.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.110.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.111.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.112.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.113.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.114.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.115.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.116.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.117.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.118.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.119.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.120.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.121.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.122.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.123.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.124.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.125.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.126.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.127.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.128.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.129.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.130.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.131.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.132.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.133.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.134.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.135.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.136.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.137.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.138.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.139.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.140.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.141.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.142.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.143.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.144.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.145.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.146.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.147.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.148.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.149.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.150.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.151.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.152.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.153.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.154.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.155.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.156.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.157.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.158.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.159.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.160.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.161.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.162.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.163.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.164.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.165.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.166.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.167.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.168.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.169.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.170.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.171.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.172.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.173.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.174.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.175.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.176.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.177.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.178.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.179.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.180.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.181.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.182.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.183.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.184.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.185.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.186.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.187.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.188.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.189.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.190.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.191.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.192.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.193.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.194.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.195.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.196.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.197.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.198.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.199.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.200.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.201.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.202.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.203.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.204.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.205.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.206.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.207.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.208.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.209.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.210.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.211.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.212.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.213.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.214.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.215.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.216.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.217.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.218.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.219.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.220.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.221.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.222.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.223.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.224.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.225.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.226.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.227.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.228.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.229.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.230.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.231.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.232.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.233.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.234.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.235.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.236.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.237.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.238.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.239.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.240.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.241.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.242.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.243.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.244.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.245.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.246.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.247.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.248.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.249.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.250.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.251.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.252.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.253.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.254.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.255.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.256.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.257.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.258.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.259.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.260.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.261.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.262.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.263.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.264.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.265.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.266.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.267.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.268.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.269.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.270.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.271.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.272.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.273.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.274.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.275.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.276.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.277.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.278.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.279.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.280.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.281.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.282.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.283.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.284.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.285.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.286.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.287.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.288.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.289.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.290.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.291.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.292.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.293.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.294.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.295.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.296.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.297.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.298.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.299.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.300.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.301.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.302.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.303.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.304.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.305.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.306.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.307.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.308.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.309.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.310.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.311.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.312.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.313.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.314.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.315.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.316.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.317.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.318.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.319.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.320.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.321.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.322.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.323.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.324.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.325.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.326.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.327.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.328.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.329.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.330.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.331.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.332.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.333.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.334.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.335.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.336.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.337.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.338.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.339.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.340.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.341.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.342.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.343.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.344.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.345.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.346.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.347.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.348.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.349.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.350.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.351.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.352.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.353.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.354.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.355.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.356.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.357.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.358.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.359.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.360.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.361.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.362.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.363.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.364.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.365.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.366.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.367.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.368.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.369.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.370.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.371.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.372.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.373.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.374.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.375.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.376.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.377.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.378.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.379.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.380.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.381.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.382.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.383.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.384.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.385.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.386.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.387.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.388.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.389.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.390.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.391.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.392.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.393.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.394.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.395.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.396.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.397.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.398.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.399.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.400.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.401.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.402.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.403.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.404.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.405.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.406.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.407.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.408.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.409.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.410.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.411.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.412.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.413.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.414.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.415.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.416.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.417.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.418.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.419.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.420.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.421.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.422.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.423.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.424.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.425.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.426.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.427.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.428.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.429.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.430.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.431.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.432.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.433.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.434.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.435.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.436.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.437.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.438.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.439.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.440.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.441.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.442.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.443.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.444.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.445.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.446.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.447.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.448.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.449.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.450.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.451.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.452.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.453.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.454.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.455.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.456.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.457.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.458.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.459.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.460.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.461.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.462.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.463.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.464.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.465.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.466.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.467.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.468.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.469.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.470.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.471.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.472.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.473.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.474.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.475.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.476.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.477.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.478.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.479.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.480.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.481.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.482.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.483.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.484.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.485.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.486.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.487.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.488.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.489.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.490.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.491.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.492.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.493.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.494.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.495.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.496.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.497.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.498.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.499.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.500.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.501.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.502.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.503.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.504.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.505.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.506.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.507.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.508.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.509.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.510.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.511.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.512.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.513.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.514.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.515.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.516.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.517.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.518.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.519.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.520.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.521.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.522.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.523.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.524.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.525.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.526.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.527.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.528.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.529.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.530.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.531.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.532.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.533.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.534.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.535.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.536.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.537.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.538.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.539.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.540.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.541.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.542.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.543.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.544.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.545.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.546.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.547.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.548.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.549.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.550.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.551.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.552.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.553.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.554.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.555.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.556.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.557.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.558.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.559.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.560.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.561.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.562.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.563.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.564.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.565.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.566.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.567.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.568.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.569.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.570.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.571.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.572.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.573.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.574.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.575.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.576.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.577.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.578.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.579.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.580.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.581.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.582.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.583.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.584.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.585.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.586.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.587.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.588.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.589.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.590.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.591.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.592.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.593.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.594.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.595.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.596.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.597.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.598.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.599.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.60.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.600.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.601.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.602.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.603.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.604.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.605.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.606.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.607.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.608.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.609.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.61.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.610.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.611.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.612.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.613.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.614.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.615.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.616.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.617.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.618.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.619.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.62.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.620.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.621.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.622.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.623.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.624.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.625.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.626.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.627.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.628.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.629.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.63.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.630.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.631.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.632.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.633.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.634.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.635.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.636.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.637.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.638.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.639.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.64.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.640.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.641.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.642.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.643.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.644.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.645.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.646.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.647.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.648.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.649.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.65.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.650.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.651.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.652.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.653.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.654.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.655.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.656.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.657.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.658.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.659.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.66.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.660.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.661.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.662.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.663.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.664.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.665.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.666.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.667.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.668.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.669.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.67.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.670.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.671.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.672.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.673.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.674.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.675.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.676.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.677.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.678.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.679.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.68.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.680.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.681.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.682.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.683.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.684.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.69.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.70.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.71.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.72.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.73.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.74.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.75.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.76.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.77.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.78.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.79.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.80.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.81.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.82.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.83.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.84.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.85.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.86.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.87.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.88.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.89.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.90.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.91.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.92.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.93.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.94.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.95.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.96.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.97.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.98.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanos.99.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts index 93647358..1ea1a7d6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts @@ -4,131 +4,32 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative} from "./commands" -import { uint64_to_buf } from "../../utils/serialize" +import { uint64_to_buf, uint8_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; const CONTRACT_ACCOUNT = parseNameString("eosio", InvalidDataReason.UNEXPECTED_ERROR); const CONTRACT_NAME = parseNameString("voteproducer", InvalidDataReason.UNEXPECTED_ERROR); -function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - - const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; - - //Matching template - if (actionData.producers.length != 1) { - return [] - } - - return [ - COMMAND_APPEND_CONST_DATA("01" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) - ]), - ] -} - -function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - - const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; - - //Matching template - if (actionData.producers.length != 2) { - return [] - } - - return [ - COMMAND_APPEND_CONST_DATA("02" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) - ]), - ] -} - -function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - - const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; - - //Matching template - if (actionData.producers.length != 3) { - return [] - } - - return [ - COMMAND_APPEND_CONST_DATA("03" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) - ]), - ] -} - -function template4(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - - const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; - - //Matching template - if (actionData.producers.length != 4) { - return [] - } - - return [ - COMMAND_APPEND_CONST_DATA("04" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 4", Buffer.from(actionData.producers[3]), 3, 64) - ]), - ] -} - -function template5(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { - validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); - - const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; - - //Matching template - if (actionData.producers.length != 5) { - return [] +function template_n(n: number) { + return (chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array => { + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; + + //Matching template + if (actionData.producers.length != n) { + return [] + } + + return [ + COMMAND_APPEND_CONST_DATA(uint8_to_buf(n as Uint8_t).toString("hex") as HexString), + ... [...Array(n).keys()].flatMap( + k => COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_SHOW("Producer " + (k+1), Buffer.from(actionData.producers[k]), 3, 64) + ]), + ) + ] } - - return [ - COMMAND_APPEND_CONST_DATA("05" as HexString), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 1", Buffer.from(actionData.producers[0]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 2", Buffer.from(actionData.producers[1]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 3", Buffer.from(actionData.producers[2]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 4", Buffer.from(actionData.producers[3]), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer 5", Buffer.from(actionData.producers[4]), 3, 64) - ]), - ] } export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { @@ -145,8 +46,10 @@ export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, const actionData: ParsedVoteOnBlockProducers = tx.actions[0].data as ParsedVoteOnBlockProducers; const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; - const producerCommands: Array = templateAlternative([template1, template2, template3, template4, template5])(chainId, tx, parsedPath) - validate(producerCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PUBLIC_ADDRESSES) + const producerCommands: Array = templateAlternative( + [...Array(actionData.producers.length).keys()].map(k=>template_n(k+1)) + )(chainId, tx, parsedPath) + validate(producerCommands.length !== 0, InvalidDataReason.INCORRECT_NUMBER_OF_PRODUCERS) return [ COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index cc464e13..011af4a8 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -299,7 +299,7 @@ export function parseUnstakeFIO(data: UnstakeFIO): ParsedUnstakeFIO { } function parseProducers(a: Array): Array { - validate(1 <= a.length && a.length <= 5, InvalidDataReason.INCORRECT_NUMBER_OF_PRODUCERS) + validate(1 <= a.length && a.length <= 30, InvalidDataReason.INCORRECT_NUMBER_OF_PRODUCERS) return a.map( e => parseAscii(e, InvalidDataReason.INVALID_PRODUCER, 3, 64)) } diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 270e0a94..a3442fdf 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -139,7 +139,7 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x56, 0x06, 0x75, 0xf9, 0xab, 0x9f, 0xbd, 0x46, 0x3c, 0x0d, 0x60, 0xf1, 0x02, 0x4b, 0x44, 0xea, 0xd4, 0xe3, 0xe6, 0x9e, 0x3a, 0x3c, 0xf9, 0xb4, 0xf7, 0xee, 0xbd, 0xf3, 0xe8, 0xbb, 0x8a, 0x82}, - //setdomainpub(true, false) + // setdomainpub(true, false) {0x0a, 0x20, 0xee, 0x2e, 0x7b, 0x8b, 0x69, 0xcd, 0x80, 0xf0, 0xdc, 0xed, 0xaa, 0x49, 0x0a, 0xa1, 0xef, 0x1d, 0x45, 0x92, 0x17, 0xd2, 0xfc, 0x49, 0x14, 0x5e, 0x08, 0xad, 0xfa, 0x09, 0xda, 0xb0}, @@ -170,7 +170,7 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x0d, 0x99, 0x33, 0x50, 0x1d, 0x74, 0xfb, 0x4e, 0xd0, 0x1c, 0xb4, 0xa1, 0x12, 0xfd, 0x05, 0x76, 0x5f, 0x73, 0xda, 0x96, 0x2a, 0x29, 0x42, 0xb8, 0x96, 0xfd, 0xb9, 0x87, 0xeb, 0xd8, 0xd5, 0x28}, - // voteproducer (1 to 5 producers) + // voteproducer (1 to 30 producers) {0xb5, 0xd9, 0xdb, 0x9f, 0x0b, 0x3b, 0x7c, 0xad, 0x2d, 0xc5, 0xd2, 0xd0, 0xa8, 0xe9, 0xc6, 0xfb, 0x24, 0x31, 0x87, 0x9c, 0x8f, 0x6b, 0xd7, 0x6a, 0x23, 0x04, 0x78, 0xbd, 0xdc, 0x5b, 0x7e, 0xcb}, @@ -186,6 +186,81 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x7c, 0xe8, 0x5f, 0x32, 0xe7, 0x70, 0xe2, 0x29, 0xe6, 0x3d, 0x4a, 0xf7, 0x2e, 0x17, 0x70, 0x32, 0xd8, 0x4b, 0xd3, 0x97, 0x8c, 0xbf, 0xe2, 0x65, 0xdd, 0x12, 0x02, 0xe7, 0x1e, 0x49, 0xc0, 0xe3}, + {0xdb, 0x33, 0x34, 0x5a, 0xb8, 0x0f, 0x2a, 0x73, 0x2e, 0x8a, 0xae, + 0xd6, 0x54, 0x11, 0x88, 0x78, 0x85, 0x32, 0xc0, 0x4b, 0xeb, 0xf2, + 0x15, 0x48, 0x3e, 0x13, 0xf2, 0xe8, 0x21, 0xc4, 0x20, 0x27}, + {0x85, 0xa4, 0xb9, 0x25, 0x94, 0xcd, 0x9c, 0xea, 0x49, 0xfd, 0xf1, + 0x56, 0x0b, 0xed, 0x72, 0x1f, 0x85, 0x54, 0x84, 0x9b, 0x37, 0xa0, + 0x83, 0x74, 0xc1, 0x9d, 0xf8, 0x89, 0x2e, 0x38, 0x7f, 0x5f}, + {0x71, 0x36, 0x5d, 0x7a, 0xa6, 0x14, 0x0f, 0x81, 0x8b, 0x44, 0x75, + 0xe4, 0x95, 0x7d, 0x39, 0xc9, 0x31, 0xa2, 0x92, 0xde, 0xf7, 0xa5, + 0xdc, 0x34, 0xb2, 0x7d, 0xcf, 0x67, 0xf7, 0x4f, 0xac, 0xdc}, + {0xb6, 0x76, 0x02, 0x1f, 0xdc, 0xdf, 0x22, 0xed, 0xba, 0xd2, 0x5e, + 0x3c, 0x0e, 0x92, 0x68, 0xb6, 0x60, 0xe1, 0x9b, 0xba, 0xfa, 0x3d, + 0xae, 0x63, 0xbe, 0x1b, 0x56, 0x2c, 0x24, 0x11, 0x18, 0xaa}, + {0xf7, 0x76, 0x65, 0x06, 0x9b, 0x59, 0xe4, 0xa6, 0x48, 0xc5, 0xa8, + 0xf1, 0x05, 0x8b, 0x3e, 0x7b, 0xa3, 0x27, 0xc5, 0x5b, 0x42, 0xfd, + 0x77, 0xde, 0x51, 0xcf, 0x01, 0xcd, 0x90, 0x4c, 0xf2, 0xdf}, + {0x45, 0x50, 0x1a, 0xcf, 0x24, 0x58, 0x8c, 0x72, 0xb1, 0x01, 0x53, + 0x18, 0x60, 0xcf, 0x2e, 0xe7, 0x69, 0xcc, 0xe1, 0x33, 0x4d, 0xcf, + 0x9c, 0xca, 0x16, 0x39, 0x0a, 0x42, 0x86, 0x46, 0xa9, 0xd7}, + {0xf8, 0x6b, 0x64, 0x55, 0x5d, 0xd5, 0x5e, 0x60, 0x17, 0xdf, 0x0a, + 0xa9, 0xd6, 0x4a, 0x40, 0x00, 0xae, 0x3c, 0xea, 0x05, 0xef, 0x72, + 0xcc, 0x44, 0xf3, 0x1e, 0x8e, 0x68, 0xaa, 0x29, 0x7d, 0x82}, + {0x4e, 0x9f, 0x93, 0x73, 0x98, 0x6b, 0xde, 0x3f, 0x48, 0x29, 0x6a, + 0x31, 0xc3, 0x90, 0x65, 0x27, 0x52, 0x62, 0xa9, 0x3d, 0x7e, 0x7c, + 0xc9, 0x6b, 0xae, 0x39, 0x1f, 0x5e, 0x67, 0x79, 0xfb, 0x84}, + {0x1b, 0x66, 0x75, 0xc2, 0x2c, 0xa5, 0xd2, 0x8f, 0x47, 0x19, 0x50, + 0x91, 0x18, 0x8e, 0xac, 0xba, 0x2d, 0x30, 0x66, 0x4b, 0xd6, 0x52, + 0xe2, 0x22, 0xe3, 0x06, 0x09, 0x4b, 0x9b, 0x6f, 0xc7, 0x5c}, + {0x9d, 0xc2, 0xe2, 0x5e, 0x25, 0xc1, 0x2e, 0xb2, 0x67, 0x14, 0x0f, + 0xaa, 0x1c, 0x72, 0x47, 0x34, 0x6d, 0x48, 0x9f, 0xec, 0xcb, 0xa2, + 0x1a, 0x6f, 0x6d, 0xec, 0xca, 0x78, 0xf7, 0xec, 0x29, 0x4c}, + {0xdf, 0xca, 0xa4, 0x89, 0x8d, 0xf6, 0x1c, 0x97, 0x9c, 0xd1, 0x0b, + 0x6f, 0xba, 0x85, 0xcd, 0xd0, 0xf6, 0x35, 0x8d, 0xb5, 0x53, 0x38, + 0xb5, 0x89, 0x26, 0xb2, 0xdc, 0xae, 0xf9, 0x7e, 0x23, 0xf4}, + {0x5f, 0x38, 0xb6, 0x06, 0x72, 0x61, 0x3a, 0xc7, 0xfc, 0xd5, 0xab, + 0xed, 0x51, 0x97, 0x22, 0xe4, 0xda, 0xa7, 0x58, 0xd6, 0x24, 0xa9, + 0x37, 0x8b, 0x1b, 0x5e, 0x81, 0x99, 0x12, 0xcc, 0x0c, 0xcf}, + {0x12, 0x76, 0x66, 0x77, 0x12, 0xaf, 0x51, 0xaf, 0x50, 0xa1, 0x70, + 0xb2, 0x76, 0x1f, 0xa7, 0x52, 0xec, 0x85, 0x2e, 0x5c, 0x45, 0x4a, + 0xad, 0xce, 0x6f, 0xfb, 0xd3, 0xf6, 0xda, 0xf0, 0x33, 0x17}, + {0x78, 0xdf, 0xd7, 0x19, 0xec, 0xfe, 0x3e, 0x95, 0xb8, 0x28, 0xb0, + 0x0c, 0x0d, 0x31, 0x25, 0xb9, 0x06, 0x9f, 0x5b, 0x00, 0x7c, 0xe4, + 0x91, 0x9b, 0x93, 0xc3, 0x9b, 0xc8, 0x2b, 0xcc, 0x7a, 0x89}, + {0xb9, 0x66, 0xe2, 0x78, 0xf5, 0x33, 0x7d, 0x9d, 0x5c, 0xbe, 0x89, + 0x3d, 0xfe, 0xde, 0x97, 0x17, 0xa6, 0x33, 0x2a, 0xfb, 0x59, 0xb8, + 0xf7, 0x81, 0x8b, 0x2b, 0x66, 0xf3, 0x38, 0xf9, 0xc0, 0xb9}, + {0x91, 0x8e, 0x76, 0xb2, 0xf3, 0x8e, 0xdf, 0x00, 0x0b, 0xc2, 0x0a, + 0xc8, 0xda, 0x49, 0x12, 0x2c, 0x3a, 0x96, 0x14, 0x44, 0x49, 0x75, + 0x78, 0x85, 0xc8, 0xa0, 0x4f, 0xf8, 0xba, 0xf8, 0x82, 0x93}, + {0x53, 0x87, 0x2e, 0x7e, 0x59, 0x35, 0x0f, 0x30, 0x0d, 0x46, 0x84, + 0x20, 0x82, 0x74, 0x66, 0x0a, 0xe8, 0x3d, 0xc8, 0xe5, 0x6b, 0x5c, + 0x20, 0xb6, 0x4e, 0x10, 0xde, 0x18, 0x91, 0x0c, 0x78, 0x52}, + {0x7f, 0x6e, 0x3a, 0x9f, 0x5d, 0x69, 0x1c, 0xad, 0xcd, 0xe6, 0xb2, + 0xc6, 0x94, 0xde, 0xaf, 0x2d, 0x21, 0x6e, 0xaf, 0x39, 0x29, 0xdc, + 0xe3, 0xe6, 0xef, 0x58, 0x64, 0xf6, 0xeb, 0x84, 0x40, 0x81}, + {0x08, 0x3d, 0x6f, 0x76, 0x8b, 0x20, 0x08, 0x45, 0x46, 0xd8, 0xd2, + 0x38, 0x21, 0xb9, 0x7f, 0xbd, 0x61, 0xc2, 0xcc, 0xfe, 0x78, 0x60, + 0xc6, 0x2b, 0xbf, 0x2b, 0x4f, 0xe9, 0x7f, 0x61, 0x80, 0x7a}, + {0xc2, 0xf6, 0x07, 0x83, 0x02, 0xa9, 0x14, 0x68, 0xef, 0xaf, 0x24, + 0xd0, 0x16, 0x2d, 0x7f, 0xc3, 0x5f, 0x21, 0x90, 0xb4, 0xe0, 0x8c, + 0x7b, 0x0f, 0x6c, 0xe6, 0x25, 0x67, 0x1e, 0x1a, 0xcd, 0x1c}, + {0xdd, 0x03, 0x47, 0x27, 0xee, 0x95, 0x75, 0x7e, 0x74, 0x35, 0x3e, + 0x6a, 0x32, 0x75, 0x9b, 0xb1, 0x38, 0x5d, 0xa4, 0xa7, 0x46, 0x15, + 0xe1, 0xb5, 0xef, 0x4b, 0xdb, 0x4d, 0xbc, 0xd8, 0x8e, 0xed}, + {0xb1, 0xb9, 0xf9, 0x13, 0xa5, 0x38, 0xca, 0x62, 0xa6, 0x76, 0xb0, + 0x87, 0xc2, 0xd9, 0x62, 0x27, 0xc2, 0xa5, 0xa2, 0xdc, 0xe6, 0x2c, + 0xc2, 0x50, 0xa7, 0x79, 0x07, 0x56, 0x48, 0x5d, 0x8a, 0xdf}, + {0xd8, 0xec, 0x4a, 0x46, 0x3a, 0x77, 0x2b, 0x60, 0xcf, 0x9c, 0xa3, + 0x73, 0xec, 0x7f, 0x4e, 0x57, 0x16, 0x58, 0x49, 0x8f, 0xd7, 0xa8, + 0x09, 0x03, 0xd1, 0xb5, 0x05, 0x93, 0x3d, 0x76, 0xb8, 0x58}, + {0x22, 0x56, 0x94, 0x3d, 0x42, 0x3c, 0x7a, 0x12, 0x99, 0x09, 0xa3, + 0x2a, 0x36, 0x26, 0x17, 0x27, 0x2f, 0x88, 0x9e, 0x31, 0xcf, 0xa0, + 0x11, 0x14, 0x6c, 0x89, 0x75, 0x38, 0x2b, 0x94, 0x0e, 0x8c}, + {0xc7, 0x6a, 0x3b, 0xb6, 0x5a, 0xc7, 0xd5, 0xfc, 0x2a, 0xa8, 0x19, + 0x2e, 0xa2, 0xba, 0x30, 0x78, 0xda, 0x25, 0xd2, 0x53, 0xfe, 0x69, + 0xee, 0xec, 0xa3, 0xc2, 0xbd, 0x4b, 0x81, 0x99, 0x2a, 0x85}, // voteproxy {0xfb, 0x3a, 0x27, 0x7f, 0xb6, 0x52, 0x01, 0xc2, 0x1d, 0xb9, 0x6e, 0x00, 0x02, 0xb0, 0xc5, 0x4b, 0x3b, 0x41, 0xe1, 0xf3, 0xb9, 0xe9, diff --git a/test-integration/signTransactionOtherEosio.js b/test-integration/signTransactionOtherEosio.js index 27771f97..f3be5137 100644 --- a/test-integration/signTransactionOtherEosio.js +++ b/test-integration/signTransactionOtherEosio.js @@ -183,200 +183,77 @@ const device = getButtonsAndSnapshots(scriptName, speculosConf); await device.makeStartingScreenshot(); -testStep(" - - -", "Sign testnet transaction - voteproducer one producer"); -{ - const network = "TESTNET" - const tx = { - ...basicTx, - actions: [{ - account: "eosio", - name: "voteproducer", - authorization: [{ - actor: "aftyershcu22", - permission: "active", +async function test(i) { + testStep(" - - -", "Sign testnet transaction - voteproducer "+ i +" producers"); + { + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "eosio", + name: "voteproducer", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + producers: [...Array(i).keys()].map(k => "Pr. " + (k+1)), + fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + max_fee: 0x11223344, + actor: "aftyershcu22", + }, }], - data: { - producers: ["Producer 1", ], - fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - max_fee: 0x11223344, - actor: "aftyershcu22", - }, - }], - - } - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); -} - -testStep(" - - -", "Sign testnet transaction - voteproducer two producer"); -{ - const network = "TESTNET" - const tx = { - ...basicTx, - actions: [{ - account: "eosio", - name: "voteproducer", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - producers: ["Producer 1", "Producer 2"], - fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - max_fee: 0x11223344, - actor: "aftyershcu22", - }, - }], - - } - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); -} - -testStep(" - - -", "Sign testnet transaction - voteproducer three producer"); -{ - const network = "TESTNET" - const tx = { - ...basicTx, - actions: [{ - account: "eosio", - name: "voteproducer", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - producers: ["Producer 1", "Producer 2", "Producer 3"], - fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - max_fee: 0x11223344, - actor: "aftyershcu22", - }, - }], + + } + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); - } - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); -} - -testStep(" - - -", "Sign testnet transaction - voteproducer four producer"); -{ - const network = "TESTNET" - const tx = { - ...basicTx, - actions: [{ - account: "eosio", - name: "voteproducer", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - producers: ["Producer 1", "Producer 2", "Producer 3", "Producer 4"], - fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - max_fee: 0x11223344, - actor: "aftyershcu22", - }, - }], + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 2, ...[...Array(i)].map(k => 1), 2, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - } - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); + } } -testStep(" - - -", "Sign mainnet transaction - voteproducer five producer"); -{ - const network = "MAINNET" - const tx = { - ...basicTx, - actions: [{ - account: "eosio", - name: "voteproducer", - authorization: [{ - actor: "aftyershcu22", - permission: "active", - }], - data: { - producers: ["Producer 1", "Producer 2", "Producer 3", "Producer 4", "Producer 5"], - fio_address: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", - max_fee: 0x11223344, - actor: "aftyershcu22", - }, - }], - - } - - // Lets sign the transaction with fiojs - const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) - console.log("Full message:") - console.log(fullMsg.toString("hex")); - - // Lets sign the transaction with ledger - const chainId = networkInfo[network].chainId - const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 2], "Review sign"); - const ledgerResponse = await ledgerPromise; - const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) - - assert.equal(ledgerResponse.txHashHex, hash); - assert.equal(signatureLedger.verify(fullMsg, publicKey), true); - assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); -} +//We need all tests so that final integrity hashes are in the logs and we can take them all +await test(1); +await test(2); +await test(3); +await test(4); +await test(5); +await test(6); +await test(7); +await test(8); +await test(9); +await test(10); +await test(11); +await test(12); +await test(13); +await test(14); +await test(15); +await test(16); +await test(17); +await test(18); +await test(19); +await test(20); +await test(21); +await test(22); +await test(23); +await test(24); +await test(25); +await test(26); +await test(27); +await test(28); +await test(29); +await test(30); testStep(" - - -", "Sign mainnet transaction - voteproxy"); { diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.04.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.04.png index d52ac2fda11264a5b806f9e178bf6a3f001ebda6..04e1766071b5ac70ad3eca9cd1de3c1a47415311 100644 GIT binary patch delta 276 zcmV+v0qg#t0J24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J000010-yqrB!A~gL_t(|ob8z14uc>JMs=C*|G-|j3lr9{3XTb_a8A6?2EJm; zPv|rO0KllstsQQwaK02Oly%I?PNhS-6EXqvy-eXMcFh{fIiBrZDuh4ZCt&m$wUL(4 zAbL-zsp9=l{D8Uwj+RBbLDs0+6VrT@6`;<+2JT#9k$}eQ-F^4=@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~IDRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000< KMNUMnLSTYuPkwv= diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.100.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.100.png new file mode 100644 index 0000000000000000000000000000000000000000..c72f2a1f7c8ea3e46feb8f48df8826f2284808fe GIT binary patch literal 323 zcmV-J0lfZ+P)$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.102.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.102.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.103.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.103.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.104.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.104.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{BNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.107.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.107.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.111.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.111.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.112.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.112.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.113.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.113.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.115.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.115.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.118.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.118.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.119.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.119.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.12.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.12.png index d52ac2fda11264a5b806f9e178bf6a3f001ebda6..04e1766071b5ac70ad3eca9cd1de3c1a47415311 100644 GIT binary patch delta 276 zcmV+v0qg#t0J24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J000010-yqrB!A~gL_t(|ob8z14uc>JMs=C*|G-|j3lr9{3XTb_a8A6?2EJm; zPv|rO0KllstsQQwaK02Oly%I?PNhS-6EXqvy-eXMcFh{fIiBrZDuh4ZCt&m$wUL(4 zAbL-zsp9=l{D8Uwj+RBbLDs0+6VrT@6`;<+2JT#9k$}eQ-F^4=@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~IDRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000< KMNUMnLSTYuPkwv= diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.120.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.120.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.122.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.122.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.124.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.124.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.128.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.128.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.129.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.129.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.13.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.13.png index 3ace1d8593b9ef28cea2fb5083c1d011136a35a8..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 100644 GIT binary patch delta 290 zcmV+-0p0$k0=xo{BYyz{Nklp;GF#Hz6BKwU8hmk}# z31CDBA%yJ8;qCDIQO?gs3vCnAHZQtchC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3 zwo$U1m=zE!i}VB8L32Ev<6BgKa}JhkI%0RpF(UxZA6e*bhJX4Z^740y$RzazWfRsM zr?E!qLCt+Im~L7#!P=bN_adU8`rWCJlr6vkjajKNGSVI$qpdFNt-h6XCu znNmc+B(3A01}aE3$6o{QN30OQ98VB`$z=l|i%6eikpQ&i`@+jE6op-&+6ORrXg747 o+VkL52gc}e-2q6TIAE-l%O$$Ym?*IS*07*qoM6N<$f=vQ}r2qf` delta 267 zcmV+m0rdX70;K|wBYyzwNklsudXn+Km6p4u)vE z6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8!*R;jy^2B2TI{(PbbblVz7m-*0lo2^qU!oks z+B6&gQF>6j4xS!2qnTnI&fU)$ RmjD0&07*qoLp;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.132.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.132.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.135.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.135.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.136.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.136.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.137.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.137.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.139.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.139.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.142.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.142.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.146.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.146.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.147.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.147.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.148.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.148.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.150.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.150.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.153.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.153.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.154.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.154.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.155.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.155.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.157.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.157.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.161.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.161.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.165.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.165.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.166.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.166.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.167.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.167.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.169.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.169.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.172.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.172.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.173.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.173.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.174.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.174.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.176.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.176.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.179.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.179.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.181.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.181.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.185.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.185.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.186.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.186.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.187.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.187.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.189.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.189.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.192.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.192.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.193.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.193.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.194.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.194.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.196.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.196.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.199.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.199.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.200.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.200.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.202.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.202.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.206.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.206.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.207.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.207.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.208.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.208.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.21.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.21.png index d52ac2fda11264a5b806f9e178bf6a3f001ebda6..04e1766071b5ac70ad3eca9cd1de3c1a47415311 100644 GIT binary patch delta 276 zcmV+v0qg#t0J24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J000010-yqrB!A~gL_t(|ob8z14uc>JMs=C*|G-|j3lr9{3XTb_a8A6?2EJm; zPv|rO0KllstsQQwaK02Oly%I?PNhS-6EXqvy-eXMcFh{fIiBrZDuh4ZCt&m$wUL(4 zAbL-zsp9=l{D8Uwj+RBbLDs0+6VrT@6`;<+2JT#9k$}eQ-F^4=@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~IDRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000< KMNUMnLSTYuPkwv= diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.210.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.210.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.213.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.213.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.214.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.214.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.215.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.215.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.217.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.217.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.22.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.22.png index 3ace1d8593b9ef28cea2fb5083c1d011136a35a8..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 100644 GIT binary patch delta 290 zcmV+-0p0$k0=xo{BYyz{Nklp;GF#Hz6BKwU8hmk}# z31CDBA%yJ8;qCDIQO?gs3vCnAHZQtchC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3 zwo$U1m=zE!i}VB8L32Ev<6BgKa}JhkI%0RpF(UxZA6e*bhJX4Z^740y$RzazWfRsM zr?E!qLCt+Im~L7#!P=bN_adU8`rWCJlr6vkjajKNGSVI$qpdFNt-h6XCu znNmc+B(3A01}aE3$6o{QN30OQ98VB`$z=l|i%6eikpQ&i`@+jE6op-&+6ORrXg747 o+VkL52gc}e-2q6TIAE-l%O$$Ym?*IS*07*qoM6N<$f=vQ}r2qf` delta 267 zcmV+m0rdX70;K|wBYyzwNklsudXn+Km6p4u)vE z6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8!*R;jy^2B2TI{(PbbblVz7m-*0lo2^qU!oks z+B6&gQF>6j4xS!2qnTnI&fU)$ RmjD0&07*qoL}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.221.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.221.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.224.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.224.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.228.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.228.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.229.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.229.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.23.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.23.png index b81e3642d9421f2d3b692fa4d671cd85d0dd7e18..d382599aa1314593ff0c7595f9db2041aabaa124 100644 GIT binary patch delta 291 zcmV+;0o?wl0=)u|BYyz|Nklks@b_Y!WeQt};ouR=wzRL6QL$CBfYtGF2vfG5 z*`w$nB^``DXQK&myx7I!I08SQes?M)h5Cai5*F$Y1v#(>Ik1EiHq#ANzYt0^G*I3B zRyvckjyDZdCvMI!!{0@$5QjA`kYD7q2?$Tp-x+eBo=FnWQ13?F%~~c&fNv4sfNrQU plQ=*o-Dl=Hq8tGL0002i;{w^he~C8L;e!AG002ovPDHLkV1i?`g17(x delta 269 zcmV+o0rLL60;d9yBYyzyNklNe&zcOF-EhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0T zsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ`*I;2-fBn(7Gb|F&xqtV4|7t$g2N)e6m#}1- zm4B2pO3ub;yQ-Ga@zO39*AW~L{l~cwQlj68qQDaUrjP@B$bls;Zi4;Af9Kub;%qmM zROrG5V@^ZUvOXSSub+l`dEW)5p)pKD5159&#N9=hh8pAJ5|%Ix1poj57=R5B2f*k| T$?tXm0000p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.232.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.232.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.235.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.235.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.236.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.236.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.237.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.237.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.239.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.239.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.242.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.242.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.243.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.243.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.247.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.247.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.251.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.251.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.252.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.252.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.253.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.253.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.255.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.255.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.258.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.258.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.259.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.259.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.260.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.260.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.262.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.262.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.265.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.265.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.266.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.266.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.269.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.269.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.271.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.271.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.275.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.275.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.276.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.276.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.277.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.277.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.279.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.279.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.282.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.282.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.283.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.283.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.284.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.284.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.286.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.286.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.289.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.289.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.290.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.290.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.293.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.293.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.294.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.294.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.296.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.296.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.300.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.300.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.301.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.301.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.302.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.302.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.304.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.304.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.307.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.307.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.308.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.308.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.309.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.309.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{BJ24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J000010-yqrB!A~gL_t(|ob8z14uc>JMs=C*|G-|j3lr9{3XTb_a8A6?2EJm; zPv|rO0KllstsQQwaK02Oly%I?PNhS-6EXqvy-eXMcFh{fIiBrZDuh4ZCt&m$wUL(4 zAbL-zsp9=l{D8Uwj+RBbLDs0+6VrT@6`;<+2JT#9k$}eQ-F^4=@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~IDRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000< KMNUMnLSTYuPkwv= diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.310.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.310.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b2a6cdfe181b3ba4112990bb480d71bac735ce GIT binary patch literal 323 zcmV-J0lfZ+P)g zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.311.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.311.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.314.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.314.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.315.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.315.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.318.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.318.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.319.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.319.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.32.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.32.png index 3ace1d8593b9ef28cea2fb5083c1d011136a35a8..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 100644 GIT binary patch delta 290 zcmV+-0p0$k0=xo{BYyz{Nklp;GF#Hz6BKwU8hmk}# z31CDBA%yJ8;qCDIQO?gs3vCnAHZQtchC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3 zwo$U1m=zE!i}VB8L32Ev<6BgKa}JhkI%0RpF(UxZA6e*bhJX4Z^740y$RzazWfRsM zr?E!qLCt+Im~L7#!P=bN_adU8`rWCJlr6vkjajKNGSVI$qpdFNt-h6XCu znNmc+B(3A01}aE3$6o{QN30OQ98VB`$z=l|i%6eikpQ&i`@+jE6op-&+6ORrXg747 o+VkL52gc}e-2q6TIAE-l%O$$Ym?*IS*07*qoM6N<$f=vQ}r2qf` delta 267 zcmV+m0rdX70;K|wBYyzwNklsudXn+Km6p4u)vE z6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8!*R;jy^2B2TI{(PbbblVz7m-*0lo2^qU!oks z+B6&gQF>6j4xS!2qnTnI&fU)$ RmjD0&07*qoLNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.322.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.322.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.326.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.326.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.327.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.327.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.328.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.328.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.33.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.33.png index b81e3642d9421f2d3b692fa4d671cd85d0dd7e18..d382599aa1314593ff0c7595f9db2041aabaa124 100644 GIT binary patch delta 291 zcmV+;0o?wl0=)u|BYyz|Nklks@b_Y!WeQt};ouR=wzRL6QL$CBfYtGF2vfG5 z*`w$nB^``DXQK&myx7I!I08SQes?M)h5Cai5*F$Y1v#(>Ik1EiHq#ANzYt0^G*I3B zRyvckjyDZdCvMI!!{0@$5QjA`kYD7q2?$Tp-x+eBo=FnWQ13?F%~~c&fNv4sfNrQU plQ=*o-Dl=Hq8tGL0002i;{w^he~C8L;e!AG002ovPDHLkV1i?`g17(x delta 269 zcmV+o0rLL60;d9yBYyzyNklNe&zcOF-EhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0T zsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ`*I;2-fBn(7Gb|F&xqtV4|7t$g2N)e6m#}1- zm4B2pO3ub;yQ-Ga@zO39*AW~L{l~cwQlj68qQDaUrjP@B$bls;Zi4;Af9Kub;%qmM zROrG5V@^ZUvOXSSub+l`dEW)5p)pKD5159&#N9=hh8pAJ5|%Ix1poj57=R5B2f*k| T$?tXm0000EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.333.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.333.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.334.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.334.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.335.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.335.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.337.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.337.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.34.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.34.png index ae6e9bc40d405e5513751db71d2ad49a81d98376..f3864e790e911b7867fe99b6db820246b8512a5a 100644 GIT binary patch delta 288 zcmV+*0pI?j0=fc_BYyz_NklEGp@ilF*$I(1xK@b?2 z3AO4F2qA_@8x zPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF13KT}(&bRG%KKss2*vfj#uV5|^3a&jKpcL0r;Lvkme%H8dqfc+De(-#*?{VpC1@LEm~;lY4e-A${Tw?kNlo0^V< m&m^1zFEJs65E()UDfs|CeV+Ze$+Or10000|A{RC delta 264 zcmV+j0r&p80-^$tBYyztNklILLJNuxM>_t7#f@QUVMiW#8CeN4r)+zIj`9D06)v^Nq@>e0>zhf&;!gVnvHIW zI7>j@24f(4y|FeHk2k&j2JU~Ie+|*Uof9D?`a*mZSfVcqIk1NuSYqD^W>!O8lyy(` zx#r<^zNw6%=MD}IVl$|rUXFpNp%tj1#-N6xhMI#Knm`Q&0001(gBM3y(8Y;?-PQmA O002ovPDHLkU;%=$5PFmV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.340.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.340.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.341.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.341.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.344.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.344.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.345.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.345.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.346.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.346.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.347.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.347.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.349.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.349.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.353.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.353.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.354.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.354.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.355.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.355.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.357.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.357.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.360.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.360.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.361.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.361.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.362.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.362.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.364.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.364.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.367.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.367.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.368.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.368.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.371.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.371.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.372.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.372.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.373.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.373.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.374.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.374.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.377.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.377.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.381.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.381.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.382.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.382.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.383.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.383.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.385.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.385.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.388.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.388.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.389.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.389.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.390.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.390.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.392.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.392.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.395.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.395.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.396.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.396.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.399.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.399.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.40.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.40.png index 06140342c291c111e9c068e5607f9a041bc53592..076a821e03587e469d3c6332c0b098513e95630d 100644 GIT binary patch delta 295 zcmV+?0oeY!0>T22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1kSTf?fas delta 287 zcmV+)0pR|^0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gN>f`I@4 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.400.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.400.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.401.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.401.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.402.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.402.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.404.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.404.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.406.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.406.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.410.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.410.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.411.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.411.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.412.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.412.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.414.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.414.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.417.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.417.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.418.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.418.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.419.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.419.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{BJ24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J000010-yqrB!A~gL_t(|ob8z14uc>JMs=C*|G-|j3lr9{3XTb_a8A6?2EJm; zPv|rO0KllstsQQwaK02Oly%I?PNhS-6EXqvy-eXMcFh{fIiBrZDuh4ZCt&m$wUL(4 zAbL-zsp9=l{D8Uwj+RBbLDs0+6VrT@6`;<+2JT#9k$}eQ-F^4=@~|Gj==eB+Hb&i5wHx4j-|QWte>p#dl;~IDRA7mIRmg!oX000001MmWEn6~bUP6#Ui0000< KMNUMnLSTYuPkwv= diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.420.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.420.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b2a6cdfe181b3ba4112990bb480d71bac735ce GIT binary patch literal 323 zcmV-J0lfZ+P)g zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.421.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.421.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.424.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.424.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.425.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.425.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.428.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.428.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.429.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.429.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.43.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.43.png index 3ace1d8593b9ef28cea2fb5083c1d011136a35a8..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 100644 GIT binary patch delta 290 zcmV+-0p0$k0=xo{BYyz{Nklp;GF#Hz6BKwU8hmk}# z31CDBA%yJ8;qCDIQO?gs3vCnAHZQtchC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3 zwo$U1m=zE!i}VB8L32Ev<6BgKa}JhkI%0RpF(UxZA6e*bhJX4Z^740y$RzazWfRsM zr?E!qLCt+Im~L7#!P=bN_adU8`rWCJlr6vkjajKNGSVI$qpdFNt-h6XCu znNmc+B(3A01}aE3$6o{QN30OQ98VB`$z=l|i%6eikpQ&i`@+jE6op-&+6ORrXg747 o+VkL52gc}e-2q6TIAE-l%O$$Ym?*IS*07*qoM6N<$f=vQ}r2qf` delta 267 zcmV+m0rdX70;K|wBYyzwNklsudXn+Km6p4u)vE z6&SH10Dw_Vy%VmBNnLFTaTcmGz95lz%YkY_u(0L8!*R;jy^2B2TI{(PbbblVz7m-*0lo2^qU!oks z+B6&gQF>6j4xS!2qnTnI&fU)$ RmjD0&07*qoL_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.431.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.431.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.433.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.433.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrXNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.436.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.436.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.44.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.44.png index b81e3642d9421f2d3b692fa4d671cd85d0dd7e18..d382599aa1314593ff0c7595f9db2041aabaa124 100644 GIT binary patch delta 291 zcmV+;0o?wl0=)u|BYyz|Nklks@b_Y!WeQt};ouR=wzRL6QL$CBfYtGF2vfG5 z*`w$nB^``DXQK&myx7I!I08SQes?M)h5Cai5*F$Y1v#(>Ik1EiHq#ANzYt0^G*I3B zRyvckjyDZdCvMI!!{0@$5QjA`kYD7q2?$Tp-x+eBo=FnWQ13?F%~~c&fNv4sfNrQU plQ=*o-Dl=Hq8tGL0002i;{w^he~C8L;e!AG002ovPDHLkV1i?`g17(x delta 269 zcmV+o0rLL60;d9yBYyzyNklNe&zcOF-EhfIK6*C{+sQ*n)NXMZ|T0jl+Q4vlPuXq{0T zsMuB14oI~{{)4|p)t;*Hb?IOJ!KMQ`*I;2-fBn(7Gb|F&xqtV4|7t$g2N)e6m#}1- zm4B2pO3ub;yQ-Ga@zO39*AW~L{l~cwQlj68qQDaUrjP@B$bls;Zi4;Af9Kub;%qmM zROrG5V@^ZUvOXSSub+l`dEW)5p)pKD5159&#N9=hh8pAJ5|%Ix1poj57=R5B2f*k| T$?tXm0000jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.441.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.441.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.442.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.442.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.444.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.444.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.447.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.447.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.448.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.448.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.449.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.449.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{BEGp@ilF*$I(1xK@b?2 z3AO4F2qA_@8x zPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF13KT}(&bRG%KKss2*vfj#uV5|^3a&jKpcL0r;Lvkme%H8dqfc+De(-#*?{VpC1@LEm~;lY4e-A${Tw?kNlo0^V< m&m^1zFEJs65E()UDfs|CeV+Ze$+Or10000|A{RC delta 264 zcmV+j0r&p80-^$tBYyztNklILLJNuxM>_t7#f@QUVMiW#8CeN4r)+zIj`9D06)v^Nq@>e0>zhf&;!gVnvHIW zI7>j@24f(4y|FeHk2k&j2JU~Ie+|*Uof9D?`a*mZSfVcqIk1NuSYqD^W>!O8lyy(` zx#r<^zNw6%=MD}IVl$|rUXFpNp%tj1#-N6xhMI#Knm`Q&0001(gBM3y(8Y;?-PQmA O002ovPDHLkU;%=$5PFmV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.450.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.450.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b2a6cdfe181b3ba4112990bb480d71bac735ce GIT binary patch literal 323 zcmV-J0lfZ+P)g zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.451.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.451.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.454.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.454.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.455.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.455.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.458.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.458.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.459.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.459.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.46.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.46.png index db61ea909efa8eb4dad3c8f5c65547771adc3670..c72f2a1f7c8ea3e46feb8f48df8826f2284808fe 100644 GIT binary patch delta 297 zcmV+^0oMMl0>c83BYy!3Nkl$-~WMosE5ulDL*Nsh9tv&CrfpK zT|rGs0001XErWy?+d*tAIrSi`Tx7t)|Dr zdH}oQ<{6MV&c+@^8!2^Tad}gX(ebie>|VT&O>Qb#}=76mC&r4 zHBHN=1ONcLa;z@+eu?7eq{7_9zGmij@mR>E%HuhOyRgt4&mw&FHNC3V(TQ@q_`Q|^?i+ByQrtIU$XMJrg&z1r4?L+E+ekw# z636l)wn{_oEWO5_X=qzN#vif2Pea?aVl*I;hOUG(R6rW)3~8t{VV(gQ(og^Z0Dukn Z0B(|-)$JL<$_xMi002ovPDHLkV1nUzh%5jA diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.460.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.460.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.461.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.461.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.463.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.463.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.467.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.467.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.471.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.471.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.472.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.472.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.473.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.473.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.475.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.475.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.478.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.478.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.479.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.479.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.480.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.480.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.482.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.482.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.485.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.485.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.486.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.486.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.489.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.489.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.490.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.490.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.491.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.491.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.492.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.492.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.494.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.494.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjtVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.497.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.497.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.499.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.499.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.503.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.503.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.504.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.504.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.505.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.505.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.507.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.507.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.510.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.510.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.511.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.511.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.512.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.512.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.514.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.514.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.517.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.517.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.518.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.518.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000T22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1kSTf?fas delta 287 zcmV+)0pR|^0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gN>f`I@4 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.520.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.520.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2b76e099d384c9795b6c2a1f3ebd25cb693b55 GIT binary patch literal 321 zcmV-H0lxl;P)JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.521.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.521.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.522.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.522.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.523.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.523.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.524.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.524.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.526.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.526.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjtVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.529.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.529.png new file mode 100644 index 0000000000000000000000000000000000000000..f291c98c684b8f203ce039170a8471351c4c385f GIT binary patch literal 331 zcmV-R0kr;!P)VSQL)D56oPfZIJ!jj3SnMQtGh008i>97cKGFP8Hhj4(E_9`gf_ ztPXAuH-JBnMVL+szBG%*(>UJ^QET;jY}m59fbrgMuXoo&>EW2$A8+-^{|-nTr*cN|K~6p>rmN9Z#A|7y zvoYphV}Jqmr_&)R)L%rCuuy*~@W3B<;E5(|p&J_D19@5(AxIY}f~0+X(?Ip>Zt9em z5#~p%ks#&VOL?`s89@Eg$M!6?0b|;^b~k&8ZNNay?snJxRyTAv^(p!esH4gqw7Ura d00000Zd}4(iQ9J}eFFdh002ovPDHLkV1n=8j~@U4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.53.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.53.png index d1c0e10626741b23971189092d71653d0c112355..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 100644 GIT binary patch delta 331 zcmV-R0kr_lq|ABkaU6>Ig)PDzc=gTfOhlZk{ zo;n8r005ZdI_F!0T0%@Sk=-TeZ*2!!NP-@I`omqP^G9mKTjEAgfM z4oJ|74y$`>td^kN<4#ze0I`Dah`kAjcT^Ycv2i&H2DAw$#(%L50Kfpd7t$wyInW1l zpbzFi6Dj(Bbj0Me$6NY_b?xWKjxL#?g%)ag<; zah7jimR-ceOH;hG#Tyeh6D?J4TN#Ioo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un z2L`48IKzIGTSR(V(26H~p#Ed>eZW64BLjH-xl<)+cdeH#rwE+<#f~^srYeeVKzs!N d0002!$r!O<;!gko002ovPDHLkV1i!-n}q-X delta 318 zcmV-E0m1&}0@(tPB!3`DL_t(|ob8#x5`!QNM6px<|ART`fti#^z=jq`#C_9)WnxV? z1au7n0001R#}WHS0xe0?3uRXk{cW8<3rzI%b=$)c!?yDnIg$^8FUSrks?Uz~gKl_P zCs2ZBbei2u<8=vIU3bE30g5a5iufx)zN3b0kIk2(6hNCW3xCdI?#k-(&NooMI}MUT z{XwXNh5AE54eUV;EHT~*j`;aJ5c_}a$CH_V_4*a9y&%>TvPGDurm^JYiR=wY9?#P92Ug>p1K>>x1r!>JoZ5v000JX0thSCkL~~J QlK=n!07*qoM6N<$g5&m+O8@`> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.530.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.530.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.532.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.532.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.536.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.536.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.537.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.537.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.538.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.538.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.54.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.54.png index aa7355f1a1e0a957ca4daa911cd6c80ac8a74137..04e1766071b5ac70ad3eca9cd1de3c1a47415311 100644 GIT binary patch delta 276 zcmV+v0qg#l0J24Gy~`#-Q3dSSvER!)u37XL51a6}7h zK_?*q0Ki*qvpYNw()lioAiJ;{Hb{r$2`vCUmPL5V9dktFn(zEB8S$6j6EOLjoI_jU z3CVFG8XJ85i65~mAh#^aCsZ5R_QEuO%L-uU;Dqi>(kQ^>^?z>r_VUplz}wk)2vgh6 z+@okC_1~CW&PH><_I-18$o}IxQi|*k(v(yzL-exKf}>@YQ$K7tKY zz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0CMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001> a%>_1oe@Y%}UJa)J0000=^&qtBBx8$pHt{b^pqpUq2Xe^Am zYX_(+CF?%}!j`{Td21ZB>no@5oUjX0Zz*0;cE=qd27ikyb(<1|zm zP7!AqZomLeL(k)U8tRGFbZzzHBbde?^`hy487@o|2lss?%0000EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.543.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.543.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.544.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.544.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.545.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.545.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.547.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.547.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.55.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.55.png index 330c081f1dc3c187fb6e28017d500599d32e9e63..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 100644 GIT binary patch delta 289 zcmV++0p9-n1H1x|B!2@*L_t(|ob8y+5`!QNgkz_^{{#2X9=v2Q{1(C@`;7;OkwiBM zU_=NZgzU=U?eP0i&d){*Z4=WrFS=WXLkB?Lw^``UP~#SFXMZ+90-E`FmqwRDaG$WY zQL>wu6%Z?n^aI&Jb3C2nTU3B^4wh>=Vt2_gBLL1HS?F$t`hOzw@^^{IB=rSl6V@E3 zu}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH> zQbfQct>d2tDo8cQUjy$)tPsE)PY{2}Wdk6KNS|Yo0JP=%!pklcgYWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8B}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.551.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.551.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.554.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.554.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.555.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.555.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.556.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.556.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.557.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.557.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.559.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.559.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrXhwf$@j(xZ6C@pZ@Ncz2TcHdZi~>Jp}{%6%JcC=1<2N8Dh;(l^ejYM zsMuLp2jpxazwkK7j^}FpJoL*y*f>DB1`B2V`$N|m770-HzJKqn=3~8p)$wr%Q?{Mi zqv#+d9gIF_qX}`m*u~;F0zaUBcPb=>`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7j zI+L`HHw{!LZq6^m-$kqthczycU*xn22v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2Pn oI6x-dXXZMh0UH1S007qG0@=WSi8j^Yg8%>k07*qoM6N<$fJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjtVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.562.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.562.png new file mode 100644 index 0000000000000000000000000000000000000000..f291c98c684b8f203ce039170a8471351c4c385f GIT binary patch literal 331 zcmV-R0kr;!P)VSQL)D56oPfZIJ!jj3SnMQtGh008i>97cKGFP8Hhj4(E_9`gf_ ztPXAuH-JBnMVL+szBG%*(>UJ^QET;jY}m59fbrgMuXoo&>EW2$A8+-^{|-nTr*cN|K~6p>rmN9Z#A|7y zvoYphV}Jqmr_&)R)L%rCuuy*~@W3B<;E5(|p&J_D19@5(AxIY}f~0+X(?Ip>Zt9em z5#~p%ks#&VOL?`s89@Eg$M!6?0b|;^b~k&8ZNNay?snJxRyTAv^(p!esH4gqw7Ura d00000Zd}4(iQ9J}eFFdh002ovPDHLkV1n=8j~@U4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.563.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.563.png new file mode 100644 index 0000000000000000000000000000000000000000..2a46cda2800800f95205156441719492bf577e60 GIT binary patch literal 327 zcmV-N0l5B&P)VLg~^8fl@TlwqA04~9sq(^jA<5kd%gDoc=`???Dt8!fa=EZf}q zS-$?BpvVuC_iYw#CpX^Jo!}kgM(2=#c|ImX8kw+p@~YNU;}1fu0IMv@4^#)$@p496 z)B6)x0l_)w7qQ3c;wCTv!5`^#m#ZHek5`x{M26=6&d^0zvaHHKN)Af$!NYXbnhNOR z9JmUR461)SCnTl%op1?D^}E6tjE6B8i6*Sk4F%XBw=^b^yPF7-p5sabbzFB-$Mz0$ z5OV^0ZmMCw?Q8)^P0|CGKXw4x@*P<2sc?3Ist;gq>i(-6I$`e59003C_KOfg2qA<3 ZvjK!2n>8ctOv?ZO002ovPDHLkV1n4TifRA= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.564.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.564.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.566.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.566.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.57.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.57.png index d1eac39e479dd964eb87fa54d56480cf7e8bf195..f3864e790e911b7867fe99b6db820246b8512a5a 100644 GIT binary patch delta 287 zcmV+)0pR|q1G)l`B!2-(L_t(|ob8xP4#OY}L}}ID|G-(Ki&O;hHEpoR(L7~A5Ez&V zwdxQEA%qYO_U(LrjxIYr+t|0W4T8G*!N7o$c@^#c_Ef#>N2>-; zgIIW=NP4{3u67Ow3_Gj+Eq#XrmZ5$FI^W>ZE zU7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAjxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.571.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.571.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.572.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.572.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.574.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.574.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.577.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.577.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.578.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.578.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.579.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.579.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bc83B!3D?L_t(|ob8y+5`!QNgt1fK|ABj`ht4o5KPjY!B*T6uOLc)= zK}|{k004I7Sl!|KMLIu)3bG4%&CKoMzMxa3$1;Vx(9j&?Y1Q!;dH$cfulQM7#vVl*DRpCUc~gzi@v>a(UdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJ zaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.581.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.581.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.584.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.584.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.585.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.585.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.588.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.588.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.589.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.589.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.59.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.59.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..e5890ad3fa8413057a2f8bbecfe0d40ad43a5201 100644 GIT binary patch delta 290 zcmV+-0p0$p1HA%}B!2`+L_t(|ob8xP4#F@DL{miXe_$4LfmE6NV{klC=B=vI*y)U8 zz#$Mq2-%fmcEa~dBtMlAbPJndKUf3@LK+~ibrJrBMa({)UWvbmsxMoNsYdcBMAwyQ zV3m$xKnO)CZ`D$LvqTL_Mo4o-3oDw7;53vp oY0g1Q55V^yLK_Gngph5y0OB=wzf{B0S^xk507*qoM6N<$g80dU2LJ#7 delta 400 zcmV;B0dM}j0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYgkiPT) diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.590.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.590.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.591.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.591.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.593.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.593.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjtVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.596.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.596.png new file mode 100644 index 0000000000000000000000000000000000000000..f291c98c684b8f203ce039170a8471351c4c385f GIT binary patch literal 331 zcmV-R0kr;!P)VSQL)D56oPfZIJ!jj3SnMQtGh008i>97cKGFP8Hhj4(E_9`gf_ ztPXAuH-JBnMVL+szBG%*(>UJ^QET;jY}m59fbrgMuXoo&>EW2$A8+-^{|-nTr*cN|K~6p>rmN9Z#A|7y zvoYphV}Jqmr_&)R)L%rCuuy*~@W3B<;E5(|p&J_D19@5(AxIY}f~0+X(?Ip>Zt9em z5#~p%ks#&VOL?`s89@Eg$M!6?0b|;^b~k&8ZNNay?snJxRyTAv^(p!esH4gqw7Ura d00000Zd}4(iQ9J}eFFdh002ovPDHLkV1n=8j~@U4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.597.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.597.png new file mode 100644 index 0000000000000000000000000000000000000000..2a46cda2800800f95205156441719492bf577e60 GIT binary patch literal 327 zcmV-N0l5B&P)VLg~^8fl@TlwqA04~9sq(^jA<5kd%gDoc=`???Dt8!fa=EZf}q zS-$?BpvVuC_iYw#CpX^Jo!}kgM(2=#c|ImX8kw+p@~YNU;}1fu0IMv@4^#)$@p496 z)B6)x0l_)w7qQ3c;wCTv!5`^#m#ZHek5`x{M26=6&d^0zvaHHKN)Af$!NYXbnhNOR z9JmUR461)SCnTl%op1?D^}E6tjE6B8i6*Sk4F%XBw=^b^yPF7-p5sabbzFB-$Mz0$ z5OV^0ZmMCw?Q8)^P0|CGKXw4x@*P<2sc?3Ist;gq>i(-6I$`e59003C_KOfg2qA<3 ZvjK!2n>8ctOv?ZO002ovPDHLkV1n4TifRA= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.598.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.598.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6e55f298b01aac79b41701c5f9662f1a1bee54 GIT binary patch literal 337 zcmV-X0j~auP)VSO+$4AH4m!1bP|#waWosOt>@006*UIh69eUnJ)_7-8&SJ!XVP zj*HWC8AA&|pT{ChCk4+R7W33eBf}c7(vR#^+Q6PG(Zt|4LY#ooSkyOsT@=^r9nE5D zwSQ2Z0OcNR7f~Fk6<3agVgZzAzcHPb&?O#*x$Uu5KNw%al;afMQFM`#FS6reG!eEf z9W*YC;w=O+p#F3^B!&8mXc89cF9kKQ2Q{!n61L!mI{1S;VxW3b_X(&Y j%I(zM1ONa40019cVsEKEkr|g;00000NkvXXu0mjfblHtv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.599.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.599.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000Ns=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.601.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.601.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.605.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.605.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.606.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.606.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.607.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.607.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.609.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.609.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.610.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.610.png new file mode 100644 index 0000000000000000000000000000000000000000..c72f2a1f7c8ea3e46feb8f48df8826f2284808fe GIT binary patch literal 323 zcmV-J0lfZ+P)$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.612.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.612.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.613.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.613.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.614.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.614.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.616.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.616.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.619.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.619.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.62.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.62.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.623.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.623.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.624.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.624.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.625.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.625.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.626.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.626.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.628.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.628.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjWIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19tVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.631.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.631.png new file mode 100644 index 0000000000000000000000000000000000000000..f291c98c684b8f203ce039170a8471351c4c385f GIT binary patch literal 331 zcmV-R0kr;!P)VSQL)D56oPfZIJ!jj3SnMQtGh008i>97cKGFP8Hhj4(E_9`gf_ ztPXAuH-JBnMVL+szBG%*(>UJ^QET;jY}m59fbrgMuXoo&>EW2$A8+-^{|-nTr*cN|K~6p>rmN9Z#A|7y zvoYphV}Jqmr_&)R)L%rCuuy*~@W3B<;E5(|p&J_D19@5(AxIY}f~0+X(?Ip>Zt9em z5#~p%ks#&VOL?`s89@Eg$M!6?0b|;^b~k&8ZNNay?snJxRyTAv^(p!esH4gqw7Ura d00000Zd}4(iQ9J}eFFdh002ovPDHLkV1n=8j~@U4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.632.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.632.png new file mode 100644 index 0000000000000000000000000000000000000000..2a46cda2800800f95205156441719492bf577e60 GIT binary patch literal 327 zcmV-N0l5B&P)VLg~^8fl@TlwqA04~9sq(^jA<5kd%gDoc=`???Dt8!fa=EZf}q zS-$?BpvVuC_iYw#CpX^Jo!}kgM(2=#c|ImX8kw+p@~YNU;}1fu0IMv@4^#)$@p496 z)B6)x0l_)w7qQ3c;wCTv!5`^#m#ZHek5`x{M26=6&d^0zvaHHKN)Af$!NYXbnhNOR z9JmUR461)SCnTl%op1?D^}E6tjE6B8i6*Sk4F%XBw=^b^yPF7-p5sabbzFB-$Mz0$ z5OV^0ZmMCw?Q8)^P0|CGKXw4x@*P<2sc?3Ist;gq>i(-6I$`e59003C_KOfg2qA<3 ZvjK!2n>8ctOv?ZO002ovPDHLkV1n4TifRA= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.633.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.633.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6e55f298b01aac79b41701c5f9662f1a1bee54 GIT binary patch literal 337 zcmV-X0j~auP)VSO+$4AH4m!1bP|#waWosOt>@006*UIh69eUnJ)_7-8&SJ!XVP zj*HWC8AA&|pT{ChCk4+R7W33eBf}c7(vR#^+Q6PG(Zt|4LY#ooSkyOsT@=^r9nE5D zwSQ2Z0OcNR7f~Fk6<3agVgZzAzcHPb&?O#*x$Uu5KNw%al;afMQFM`#FS6reG!eEf z9W*YC;w=O+p#F3^B!&8mXc89cF9kKQ2Q{!n61L!mI{1S;VxW3b_X(&Y j%I(zM1ONa40019cVsEKEkr|g;00000NkvXXu0mjfblHtv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.634.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.634.png new file mode 100644 index 0000000000000000000000000000000000000000..114c5860f0325dcfd9b3cce6d8f12104653b488c GIT binary patch literal 331 zcmV-R0kr;!P)VS8v|D568BK)ZXMjH$5P%cvzK00030%4U@3{USN{!3bjq+c6Jl zc94C2BfP=|BcuNjMcmAbn`|ir$EXFqS|n;Y3TKC8o^so8&U3{(@g*X d0001R;sbh!k(CP}GWP%g002ovPDHLkV1keVj0*q& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.635.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.635.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.637.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.637.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.641.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.641.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.642.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.642.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.643.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.643.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.645.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.645.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.648.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.648.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.649.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.649.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.65.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.65.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.650.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.650.png new file mode 100644 index 0000000000000000000000000000000000000000..fea8c6478c3a1e12957c68097f0105e468e04fa4 GIT binary patch literal 320 zcmV-G0l)rVa|5H(YovR3A|DqEm< zgt9LOEDE4J2ZgJO`r>o3D1h<=lyoQjc`fi#?hi6<_JCyDD{Bg zDdmxrCyY$I$k1-d*W?^-i6p+*2W@Uz0HUIlQMFuO zkz|A79`ab8P%MDhg9_n%qgVjt26Wl)IWOx3o{sfBAhPYk9>tBE+?XsEy>+Ew`~zBK z1HCCw|8hDch5D0d5*F%D1vRh-HLzr{JHdH;KfSB!785+=(8s_4)xmUArX1bPgIFW= z$1AtvhjL=86@VP8JcRE8C=XCA@LhoW>K?%~)R>hE(DKJ7OgAUJ&<6kj0001^d;o*4 Vg@iXnLrDMt002ovPDHLkV1geAhU)+T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.652.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.652.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51194a53f2a56a79e7581b87f28ba1b9b48c94 GIT binary patch literal 316 zcmV-C0mJ@@P)2M0RRBNQ`waAoCnFdcSh*j_&03$ zEs3w(0crrf?u#&rD<-dPMy?ERwM+u>cV6w5d`<45EAfWpx)4na&f8qQ@l6c~AuDB6 zjq59t98fd@&*ce41H>LwNaq_x1C$%kWxsP?)&)Er>t{e@+l4cVE>ienvR#a}5{n$5 zHwEesr$JJvKZz<~q5f3hfj#iRlEt0`=kfit?kcaC;Gu>#ItHi?rkgVP0^GcaRZ@Pv zaxmSL$(OO30l|%?gYa#@+T(;Od>e3I-6NQW8ndzi=KpN~00000KrbJY0)L7v^NC*o O0000^W&+F-OZk-YO9{d>A zTuG_U8M#*C4e-}}5k|4cgpp^YLp);AV6t|D-B$|X{|edlK{Obgpv{*WU{;kfsaEO> z$p(~@*)@jU0D0ZHv_lyP5$;ta2CJ28^2E#PgTifFY_8t8c%*4dqtfu5Cd3(P;k( eA%qY@2pZngyM?vJnMbey00003(K?`FWFU=-# zr1P9Bd_^JyAfLx9%;INLwY4biSCEKp_D7h#p7qjiEwH8o* zLmj_Dq=4#Ar$bVzzlbJbss2(JgLoK&NHk$9(@?K_pvBk#6?VFbAZZ^115|+NrcT{E z%tfpbJELJ!tbVY&1t9gSoHZpdumdoqgZoZ5d%+F>q-1m9G&C6O3b1MEDmcHPgb+dq bAw+Nh$GDAm$8|~|00000NkvXXu0mjfP(6$| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.655.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.655.png new file mode 100644 index 0000000000000000000000000000000000000000..3a656d5925c98d001d7507f7b5e85a21a491c85a GIT binary patch literal 322 zcmV-I0lof-P)}lnLevsFACi?gNl9Q9zAR-K6PzzgrGt6@E|f)lFae z1Bme_JdRY#2H!VrN2u&%pDbyG^<0IcIt-IS6l3D+e1ssjK30000#?BhMM U&0K}Vi2wiq07*qoM6N<$f-$IutN;K2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.656.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.656.png new file mode 100644 index 0000000000000000000000000000000000000000..8f09cd87b92d65948dac6c48147001a3922c941c GIT binary patch literal 333 zcmV-T0kZyyP)bP=r?jj7HnF)YBV)CK#jW^5JFbUOEtAQ zq(lu$Mo9N6qgu5LLj!DYth1R^`aKUr1B{<{fc8?u%R7OmJKaQ(w2h7-CBSr3 zC!Yq)L9CMUK?%0R@`?SM0ij)Gl*6qKwgKbXnNK%c!8QQ0X6M3bs5974K$)69cGxcf fLI@#*kjHWWAKZPhI~Xr5ysQg&I@a%i$hI>xir%E;HTRdzCh3ivi)h<3W$O)0(&aM`nC!8X*Gl?`Z_D(7}{y-z>@ e0001hKj#3kp?}R0A`?{r0000JNoAm=9|(6C`Y58)|zPDdup{o{Zb=rUyyyp;(|g*luFV(cK)x z8mS+z+_qRbv1kQIDwQ3NzwZLXUMDo+y8vBucijGo+tBGmE&$Ifgb+dqAz|47&>Dwn TG0zb^00000NkvXXu0mjfCtZnd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.659.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.659.png new file mode 100644 index 0000000000000000000000000000000000000000..35f53c311f2643d04770161f92462b73a5d18a23 GIT binary patch literal 330 zcmV-Q0k!^#P)8L z^SN5(?^IWSSc3}YYG;KNqvEGx0+iSLBHPPrwgbB}^$?~Ur?5v+A%zR0>7uqOHzqG2 z#Zw3{5dH2{gcQ*qL{VT7{h=TS^Fa<~ve-%BTLQI>0X|;0wUESu4|Oy&Pz`i9WzyEo zT*L~=U$4xzAJUGkmH@Zt%{Gbc1pMDXRqt-rVmkpQL)I5`LnpIx0!n^t{25?%{{a91 c007vQ3z2xCCI->i^#A|>07*qoM6N<$g5+h4Q~&?~ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.66.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.66.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.660.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.660.png new file mode 100644 index 0000000000000000000000000000000000000000..e4379a9140b85092a61a6dc14fba7f757f4b37f7 GIT binary patch literal 329 zcmV-P0k-~$P)om852M(9in-kpPU3A7Mkd|l-fr2?>>6%K7i8xZZ=&-6ZSE=n(P=4D)yn#c zWE&LsP{xXcp#WkJ8iX@jsKQVH;|A1)Ykc6w@v;d6&hUN*B&J!|qqvb%8nfl1w-$`| z$?H6T1E~IRI!cP_-$YYkQT<{9 b000hbT55}W6-{nN00000NkvXXu0mjf1Qm@d literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.661.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.661.png new file mode 100644 index 0000000000000000000000000000000000000000..74b17aaf1be58d84c120dfd82ab93c03e3326f9b GIT binary patch literal 330 zcmV-Q0k!^#P)_M=#pE)e62nkpUu*8qr$RwmbSe^tZ*#TD{e zkuVIvcn`LpAv4}C%@_t?e3OmkT-_(4hhuGjyxk}NcR*s>l{1P@a`H*BTvbyMm!*Zy z!B~BS0S&l6oEw(H{Yf+#3-_mj4E#X`o@mAvx}gC+kbAlak-M7_EWO7!4OGAGrcSwf zm_K5TL~UwbQ2w>61wgA=e?{y7`u6)$r)}&2I(%HpefqU-=xXj$^e3Q>YIo4?CIA2c c008*l01~x@&%gIsPXGV_07*qoM6N<$g0CNoxBvhE literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.662.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.662.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6e4bb3ac785d0324856e5afb51cd117df5c81a GIT binary patch literal 332 zcmV-S0ki&zP)VSO+$OwpjTfZILkgE1A_dx^CW0RRB_R}P~*?-$E?PDYqp*pHdu zk<;YzT+VO<_;@bDa&quAxHZ=&PqRz{MFDo|u~?OFD8`*=V(=RC!gn=*s3~Put=3nh z*r0fXI#(nN4N%tL@^qRz{k$0H$(qK9K{f4tQv|8GF%IE6imPjc$XV!0Si z#CT)WVt5V%6;OXU1Cm1hn@|Z0^=}0p_yZ3-k%Vn@LjxR;XSxWHyPFXt9pjq@s$X|g zru_h6e#DfF{x=0Fy7pu2W&nlJbP=%)nCla4wcExvU_!^O)TdwThVG_5?QKA-QJO9Q e000005SR<{hK02}W=A0a0000VSQL;h(e350`2a3YK(%p5TpwLYdboMYNVNJC{{|G6Rj5&Xk<%_#$3<%*Njp)m zCJabG{nP1?6zWgHBrMdQ3StlsVi1WWtTGLCZ-?bO6zqRh)&3McB@yM2w2xl~sBzOx z8QpuDA2B0&GP(=>wpR-PT}}EUatB~6-xExDZh>(MbhrUc-5>)2xS;yEOVB=IVaeQy f0ssI20DvzWSTU88BXd3800000NkvXXu0mjf^B{s^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.664.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.664.png new file mode 100644 index 0000000000000000000000000000000000000000..b8234e1f967bc212fb34428a1d1aa42323d6310a GIT binary patch literal 335 zcmV-V0kHmwP)gF{kQC}qLM1HJp9*^54|?DUC#>Lx2KYc8F;FABn-L`K;~xXn&)wvatB3g` zrX?Gm0GeTcSIc9>5 zJR_qU)Bt+j7hyQ(;Kx2UBjIC{hM`!1?0RIS$qkBYA)36{*%Vd=n85CU+P07zT;62w z%W7(3PQz*kG_Apb=`<}}-}P1o7*A4}u24VOMmNFyVf&o{?ws{4%rIFrF$|!GUY>UC zBs||Ny0g((j9-imJn9=@IiUV<8YG4KlTZl@^``<4{DB9ataK8ja#&MQOl}`xMk{fr zfa+S^$u%1>aBd9MD*nqw|L3qUr0vphwV}R=BQ&5)S sMm_aosY94jbIARJ2LJ#7001cX0gh0>#IzcK#Q*>R07*qoM6N<$f}bLjtVgjF(OV(AZbUPK0}yI}NL9+Dn%NvmvIeCi zl)2jYTIFbfa}D-46K!6n-|KKRzf;^_MdsDb>G-E@7$urO<h(|vv)h|erp-Tj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.667.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.667.png new file mode 100644 index 0000000000000000000000000000000000000000..f291c98c684b8f203ce039170a8471351c4c385f GIT binary patch literal 331 zcmV-R0kr;!P)VSQL)D56oPfZIJ!jj3SnMQtGh008i>97cKGFP8Hhj4(E_9`gf_ ztPXAuH-JBnMVL+szBG%*(>UJ^QET;jY}m59fbrgMuXoo&>EW2$A8+-^{|-nTr*cN|K~6p>rmN9Z#A|7y zvoYphV}Jqmr_&)R)L%rCuuy*~@W3B<;E5(|p&J_D19@5(AxIY}f~0+X(?Ip>Zt9em z5#~p%ks#&VOL?`s89@Eg$M!6?0b|;^b~k&8ZNNay?snJxRyTAv^(p!esH4gqw7Ura d00000Zd}4(iQ9J}eFFdh002ovPDHLkV1n=8j~@U4 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.668.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.668.png new file mode 100644 index 0000000000000000000000000000000000000000..2a46cda2800800f95205156441719492bf577e60 GIT binary patch literal 327 zcmV-N0l5B&P)VLg~^8fl@TlwqA04~9sq(^jA<5kd%gDoc=`???Dt8!fa=EZf}q zS-$?BpvVuC_iYw#CpX^Jo!}kgM(2=#c|ImX8kw+p@~YNU;}1fu0IMv@4^#)$@p496 z)B6)x0l_)w7qQ3c;wCTv!5`^#m#ZHek5`x{M26=6&d^0zvaHHKN)Af$!NYXbnhNOR z9JmUR461)SCnTl%op1?D^}E6tjE6B8i6*Sk4F%XBw=^b^yPF7-p5sabbzFB-$Mz0$ z5OV^0ZmMCw?Q8)^P0|CGKXw4x@*P<2sc?3Ist;gq>i(-6I$`e59003C_KOfg2qA<3 ZvjK!2n>8ctOv?ZO002ovPDHLkV1n4TifRA= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.669.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.669.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6e55f298b01aac79b41701c5f9662f1a1bee54 GIT binary patch literal 337 zcmV-X0j~auP)VSO+$4AH4m!1bP|#waWosOt>@006*UIh69eUnJ)_7-8&SJ!XVP zj*HWC8AA&|pT{ChCk4+R7W33eBf}c7(vR#^+Q6PG(Zt|4LY#ooSkyOsT@=^r9nE5D zwSQ2Z0OcNR7f~Fk6<3agVgZzAzcHPb&?O#*x$Uu5KNw%al;afMQFM`#FS6reG!eEf z9W*YC;w=O+p#F3^B!&8mXc89cF9kKQ2Q{!n61L!mI{1S;VxW3b_X(&Y j%I(zM1ONa40019cVsEKEkr|g;00000NkvXXu0mjfblHtv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.67.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.67.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.670.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.670.png new file mode 100644 index 0000000000000000000000000000000000000000..114c5860f0325dcfd9b3cce6d8f12104653b488c GIT binary patch literal 331 zcmV-R0kr;!P)VS8v|D568BK)ZXMjH$5P%cvzK00030%4U@3{USN{!3bjq+c6Jl zc94C2BfP=|BcuNjMcmAbn`|ir$EXFqS|n;Y3TKC8o^so8&U3{(@g*X d0001R;sbh!k(CP}GWP%g002ovPDHLkV1keVj0*q& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.671.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.671.png new file mode 100644 index 0000000000000000000000000000000000000000..c6aa3339be23e271bd38fb4ae390c8b8b336ac5a GIT binary patch literal 330 zcmV-Q0k!^#P)VLh0TN?QcPw#IoU!b*!XSl6Zm007{vEJk_$Kaz7Dj4-ya9&?9A z-Y2K$a)uf}$72zulY{fY&3tXr$P@>#avqCS`GR6xi6#aQfU5y1sZwUuxV|Dqfua$3 zu419~lL>|f7@xt$8p55n#n1rbI}BE8G(O%Ncst(jfXuQAHHuDB_++tMj8=)mGde#& zR)4~P1k|5Shon&dCYpqW`nLiP{DB9aNWv=JP`@w3!yYn?n~B`rj38+rR~o2(-Ax%i zdzcTgMxr(~PtbS!Gy~F^^g#+vGqDXAIPc!w&0b;~@DLHNfNrQWv7dlCyw1e!ZUO)R c004jk8=N(P+wl0*IsgCw07*qoM6N<$f|l)yX#fBK literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.672.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.672.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.674.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.674.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI&;CqZB}!FbmFO?#k-(&NooMI}MUT{XwXNh5AE54eUV;EHT~*j`;aJ5c_}a z$CH_V_4*a9y&%>TvPGDurm^JYiR=eN00000NkvXXu0mjfCjXTc literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.679.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.679.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7355f1a1e0a957ca4daa911cd6c80ac8a74137 GIT binary patch literal 280 zcmV+z0q6dSP)YC|HoY8|wQs!5eZU9aZXBck4 zfE07v%EJ6_0=5CAvSPQm6RaLtBk=Zum$=Eob`E5)5OTd2 z1ZB>no@5oUjX0Zz*0;cE=qd27ikyb(<1|zmP7!AqZomLeL(k)U8tRGFbZzzHB ebde?^`hy487@o|2lss?%0000p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.682.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.682.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.70.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.70.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.73.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.73.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.74.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.74.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.76.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.76.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.80.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.80.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.81.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.81.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.82.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.82.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.84.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.84.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU$-~WMosE5ulDL*Nsh9tv&CrfpKT|rGs0001XErWy$q(SfJFd{*S?RfrpLp20K4Pn8IU>7#vVl*DRpCUc~gzi@v>a( zUdsU7S75?YxUa;Jv2b4%WMB_6u%u;dry8nJaTFscRXVJ0y0UZ*K>^jB5Ukc5H+FzcpWb#s;=0rw7;53vpY0g1Q55V^yLI@#*kZrjD;x%`_RKwC* P00000NkvXXu0mjfakGU) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.87.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.87.png new file mode 100644 index 0000000000000000000000000000000000000000..08681fd11fb555483f82ed971f70d11b42d0dbad GIT binary patch literal 306 zcmV-20nPr2P)|&S$m_#)yqHG zbbxXVTF5HLA_2<1FATS0Zx`^;4+$tfHet$fGXE%Qr2HC-$60Ry@crN19jHH@4oRW@ zB1FPM{iPrW_8#yPOASNW%@v8okVH1!9 z(nsj}API<7@4F$K0`)HN0j8nGY>|K<#SQ=f0000oAFXbEUsg0WI{*Lx07*qoM6N<$ Eg5e>CX8-^I literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.88.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.88.png new file mode 100644 index 0000000000000000000000000000000000000000..5d33b954869aa0b1f814e8ee3d4c6e08690ab3f3 GIT binary patch literal 318 zcmV-E0m1%>P)XyWxGxJ80isX$3u5HS@@8yy0wp1R2+hhgtStP)?M zrW~Z(0t8=Qwjxdn(Aw{M>SilW3Sc{l{{S@<6e;SU(gGu|KmY&$007{@1-coPDk|3e QG5`Po07*qoM6N<$f&j0DR{#J2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.89.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.89.png new file mode 100644 index 0000000000000000000000000000000000000000..330c081f1dc3c187fb6e28017d500599d32e9e63 GIT binary patch literal 508 zcmVNs=VFD-X*<-_O5{H+(8Yj+@tpjCze!0 zBj=!iz}l1+p-X6K8nHCFSNL37noFaYWS%wrZ} z;^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA=FPm^Z?vUFwv5zOk^{x{!&4iefBA z7>_l!vX8TvBPhekQI1HqbZb)@thr@UHB^Q>bIAvyA^G}pI@Sur!xxz$_}Jga0YyK< zq9c=l#$@583v50)QvtHRqR^ypKy0Q4YOCNHod_$b3%Ae7!;wEdi6|Tp6;`AiGDgU0 z)X80`($Grs)4ZX8%5>)_MRcoO<%0i&P)``oUn4x0@v$6xfKd4K>;Zch7nQ>OI;>eG y-GkA$;ZRQb8hRM!Wg3U+e?d!<=^{yz`|$(rwow^VPbL!p0000(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.91.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.91.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.95.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.95.png new file mode 100644 index 0000000000000000000000000000000000000000..d89b4fbfdcd3c9ac35fa7baea7efed94cc5fa615 GIT binary patch literal 358 zcmV-s0h#`ZP)jxL#?g%)ag<;ah7jimR-ceOH;hG#Tyeh6D?J4TN#Io zo-FipP?apM&H9Boo&ogfcD|kA44_imTH{un2L`48IKzIGTY6g1iYI)a{$uiez&|k~ z19<(pQzdD4t(PsQ2%P-IjyP1NDvEAEd<6gi008La0~Sol7_ngDPXGV_07*qoM6N<$ Eg07jJLI3~& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.96.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.96.png new file mode 100644 index 0000000000000000000000000000000000000000..04e1766071b5ac70ad3eca9cd1de3c1a47415311 GIT binary patch literal 303 zcmV+~0nq-5P)Q(57PNAj3B$P8a7CW z<_I-18$o}IxQi|*k z(v(yzL-exKf}>@YQ$K7tKYz1>Y-ekAr@#2S@fudKau<;UZ;0Ks0C zMVu7C<#s|7Ck0q8?-6!Gl`T;KJO6e70001>%>_1oe@Y%}UZ(&6002ovPDHLkV1o6C Bg6IGM literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.97.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.97.png new file mode 100644 index 0000000000000000000000000000000000000000..0867c552bdb7ad21c11a6368e8187cb1c3b9c078 GIT binary patch literal 316 zcmV-C0mJ@@P)p;GF#Hz6BKwU8hmk}#31CDBA%yJ8;qCDIQO?gs3vCnAHZQtc zhC>HH-?v%l&QRkPZ)bltK?0ijc$Y?(LU5n3wo$U1m=zE!i}VB8L32Ev<6BgKa}Jhk zI%0RpF(UxZA6e*bhWaA%@^^{IB=rSl6V@E3u}0}Z&3!PKZdxJOqwSgJo1#$Y~-!AvY+Bi+z>=VF6~1}fH>QbfQct>d2tDo8cQUjy$)tPsE)PY{2} zWdk6KNS|Yo0JP=%!pklcgks@ zb_Y!WeQt};ouR=wzRL6QL z`hzGE7U~ZLIj{#gu!Ivf(+yR>5K1&OP~H7jI+L`HHw{!LZq6^m-$kqthczycU*xn2 z2v5@A8FHVVNfOXd??&CtS|&+=ZxP>sZm2PnI6x-dXXZMh0RR910M_FI*}#8^Hr3&S P00000NkvXXu0mjf*>{Ba literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.99.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.99.png new file mode 100644 index 0000000000000000000000000000000000000000..f3864e790e911b7867fe99b6db820246b8512a5a GIT binary patch literal 314 zcmV-A0mc4_P)EGp@ilF*$I(1xK@b?23AO4F2qA_@8xPlH%^ph$YW*sgXC2Mjx_{Vjcm1D2tF z13KT}(&bRG%KEU Date: Tue, 12 Jul 2022 22:50:38 +0200 Subject: [PATCH 46/83] NanoX/SP speculos tests + on device tests --- MakefileTest.mk | 14 +++++++++++++- test-integration/decodeMessage.js | 10 +++++----- test-integration/signTransactionNewfundsreq.js | 7 +++---- test-integration/signTransactionOtherEosio.js | 4 ++-- .../signTransactionOtherFioAddress.js | 10 +++++----- .../signTransactionOtherFioReqobt.js | 6 +++--- test-integration/signTransactionRecordobt.js | 4 ++-- .../snapshots/decodeMessage/nanox.01.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.02.png | Bin 0 -> 401 bytes .../snapshots/decodeMessage/nanox.03.png | Bin 0 -> 601 bytes .../snapshots/decodeMessage/nanox.04.png | Bin 0 -> 476 bytes .../snapshots/decodeMessage/nanox.05.png | Bin 0 -> 974 bytes .../snapshots/decodeMessage/nanox.06.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanox.07.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanox.08.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanox.09.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanox.10.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanox.11.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanox.12.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanox.13.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.14.png | Bin 0 -> 401 bytes .../snapshots/decodeMessage/nanox.15.png | Bin 0 -> 601 bytes .../snapshots/decodeMessage/nanox.16.png | Bin 0 -> 476 bytes .../snapshots/decodeMessage/nanox.17.png | Bin 0 -> 974 bytes .../snapshots/decodeMessage/nanox.18.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanox.19.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanox.20.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanox.21.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanox.22.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanox.23.png | Bin 0 -> 380 bytes .../snapshots/decodeMessage/nanox.24.png | Bin 0 -> 345 bytes .../snapshots/decodeMessage/nanox.25.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanox.26.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.27.png | Bin 0 -> 401 bytes .../snapshots/decodeMessage/nanox.28.png | Bin 0 -> 601 bytes .../snapshots/decodeMessage/nanox.29.png | Bin 0 -> 476 bytes .../snapshots/decodeMessage/nanox.30.png | Bin 0 -> 974 bytes .../snapshots/decodeMessage/nanox.31.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanox.32.png | Bin 0 -> 548 bytes .../snapshots/decodeMessage/nanox.33.png | Bin 0 -> 556 bytes .../snapshots/decodeMessage/nanox.34.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanox.35.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanox.36.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanox.37.png | Bin 0 -> 330 bytes .../snapshots/decodeMessage/nanox.38.png | Bin 0 -> 308 bytes .../snapshots/decodeMessage/nanox.39.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanox.40.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanox.41.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.42.png | Bin 0 -> 401 bytes .../snapshots/decodeMessage/nanox.43.png | Bin 0 -> 601 bytes .../snapshots/decodeMessage/nanox.44.png | Bin 0 -> 476 bytes .../snapshots/decodeMessage/nanox.45.png | Bin 0 -> 974 bytes .../snapshots/decodeMessage/nanox.46.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanox.47.png | Bin 0 -> 748 bytes .../snapshots/decodeMessage/nanox.48.png | Bin 0 -> 760 bytes .../snapshots/decodeMessage/nanox.49.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanox.50.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanox.51.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanox.52.png | Bin 0 -> 330 bytes .../snapshots/decodeMessage/nanox.53.png | Bin 0 -> 308 bytes .../snapshots/decodeMessage/nanox.54.png | Bin 0 -> 480 bytes .../snapshots/decodeMessage/nanox.55.png | Bin 0 -> 555 bytes .../snapshots/decodeMessage/nanox.56.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanox.57.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.58.png | Bin 0 -> 401 bytes .../snapshots/decodeMessage/nanox.59.png | Bin 0 -> 601 bytes .../snapshots/decodeMessage/nanox.60.png | Bin 0 -> 476 bytes .../snapshots/decodeMessage/nanox.61.png | Bin 0 -> 974 bytes .../snapshots/decodeMessage/nanox.62.png | Bin 0 -> 456 bytes .../snapshots/decodeMessage/nanox.63.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanox.64.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanox.65.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanox.66.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanox.67.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanox.68.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanox.69.png | Bin 0 -> 390 bytes .../snapshots/decodeMessage/nanox.70.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanox.06.png | Bin 498 -> 936 bytes .../snapshots/getPublicKey/nanox.07.png | Bin 507 -> 476 bytes .../snapshots/getPublicKey/nanox.08.png | Bin 980 -> 553 bytes .../snapshots/getPublicKey/nanox.09.png | Bin 427 -> 390 bytes .../snapshots/getPublicKey/nanox.10.png | Bin 553 -> 405 bytes .../snapshots/getPublicKey/nanox.11.png | Bin 405 -> 498 bytes .../snapshots/getPublicKey/nanox.12.png | Bin 498 -> 507 bytes .../snapshots/getPublicKey/nanox.13.png | Bin 507 -> 980 bytes .../snapshots/getPublicKey/nanox.14.png | Bin 980 -> 427 bytes .../snapshots/getPublicKey/nanox.15.png | Bin 427 -> 553 bytes .../snapshots/getPublicKey/nanox.16.png | Bin 553 -> 405 bytes .../snapshots/getPublicKey/nanox.17.png | Bin 405 -> 498 bytes .../snapshots/getPublicKey/nanox.18.png | Bin 0 -> 507 bytes .../snapshots/getPublicKey/nanox.19.png | Bin 0 -> 980 bytes .../snapshots/getPublicKey/nanox.20.png | Bin 0 -> 427 bytes .../snapshots/getPublicKey/nanox.21.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionAddaddress/nanox.03.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionAddaddress/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.06.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanox.13.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanox.14.png | Bin 0 -> 1009 bytes .../signTransactionAddaddress/nanox.15.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.16.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanox.17.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanox.18.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.19.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanox.20.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanox.21.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.23.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanox.24.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanox.25.png | Bin 0 -> 1009 bytes .../signTransactionAddaddress/nanox.26.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.27.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanox.28.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanox.29.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanox.30.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.31.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanox.32.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanox.33.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanox.34.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.35.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanox.36.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanox.37.png | Bin 0 -> 1009 bytes .../signTransactionAddaddress/nanox.38.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.39.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanox.40.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanox.41.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanox.42.png | Bin 0 -> 569 bytes .../signTransactionAddaddress/nanox.43.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.44.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanox.45.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanox.46.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanox.47.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.48.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanox.49.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanox.50.png | Bin 0 -> 1009 bytes .../signTransactionAddaddress/nanox.51.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.52.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanox.53.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanox.54.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanox.55.png | Bin 0 -> 569 bytes .../signTransactionAddaddress/nanox.56.png | Bin 0 -> 587 bytes .../signTransactionAddaddress/nanox.57.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanox.58.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanox.59.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanox.60.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanox.61.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionAddnft/nanox.03.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionAddnft/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.06.png | Bin 0 -> 543 bytes .../signTransactionAddnft/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionAddnft/nanox.13.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanox.14.png | Bin 0 -> 1009 bytes .../signTransactionAddnft/nanox.15.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.16.png | Bin 0 -> 543 bytes .../signTransactionAddnft/nanox.17.png | Bin 0 -> 596 bytes .../signTransactionAddnft/nanox.18.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.19.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanox.20.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanox.21.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanox.23.png | Bin 0 -> 379 bytes .../signTransactionAddnft/nanox.24.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanox.25.png | Bin 0 -> 1009 bytes .../signTransactionAddnft/nanox.26.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.27.png | Bin 0 -> 543 bytes .../signTransactionAddnft/nanox.28.png | Bin 0 -> 596 bytes .../signTransactionAddnft/nanox.29.png | Bin 0 -> 586 bytes .../signTransactionAddnft/nanox.30.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.31.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanox.32.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanox.33.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanox.34.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionNewfundsreq/nanox.03.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanox.04.png | Bin 0 -> 559 bytes .../signTransactionNewfundsreq/nanox.05.png | Bin 0 -> 561 bytes .../signTransactionNewfundsreq/nanox.06.png | Bin 0 -> 488 bytes .../signTransactionNewfundsreq/nanox.07.png | Bin 0 -> 976 bytes .../signTransactionNewfundsreq/nanox.08.png | Bin 0 -> 455 bytes .../signTransactionNewfundsreq/nanox.09.png | Bin 0 -> 581 bytes .../signTransactionNewfundsreq/nanox.10.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanox.11.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanox.12.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanox.13.png | Bin 0 -> 953 bytes .../signTransactionNewfundsreq/nanox.14.png | Bin 0 -> 498 bytes .../signTransactionNewfundsreq/nanox.15.png | Bin 0 -> 526 bytes .../signTransactionNewfundsreq/nanox.16.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanox.17.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanox.18.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanox.19.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanox.20.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.21.png | Bin 0 -> 379 bytes .../signTransactionNewfundsreq/nanox.22.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanox.23.png | Bin 0 -> 559 bytes .../signTransactionNewfundsreq/nanox.24.png | Bin 0 -> 561 bytes .../signTransactionNewfundsreq/nanox.25.png | Bin 0 -> 488 bytes .../signTransactionNewfundsreq/nanox.26.png | Bin 0 -> 976 bytes .../signTransactionNewfundsreq/nanox.27.png | Bin 0 -> 455 bytes .../signTransactionNewfundsreq/nanox.28.png | Bin 0 -> 581 bytes .../signTransactionNewfundsreq/nanox.29.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanox.30.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanox.31.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanox.32.png | Bin 0 -> 953 bytes .../signTransactionNewfundsreq/nanox.33.png | Bin 0 -> 498 bytes .../signTransactionNewfundsreq/nanox.34.png | Bin 0 -> 526 bytes .../signTransactionNewfundsreq/nanox.35.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanox.36.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanox.37.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanox.38.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanox.39.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.40.png | Bin 0 -> 390 bytes .../signTransactionNewfundsreq/nanox.41.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanox.42.png | Bin 0 -> 559 bytes .../signTransactionNewfundsreq/nanox.43.png | Bin 0 -> 561 bytes .../signTransactionNewfundsreq/nanox.44.png | Bin 0 -> 488 bytes .../signTransactionNewfundsreq/nanox.45.png | Bin 0 -> 976 bytes .../signTransactionNewfundsreq/nanox.46.png | Bin 0 -> 455 bytes .../signTransactionNewfundsreq/nanox.47.png | Bin 0 -> 581 bytes .../signTransactionNewfundsreq/nanox.48.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanox.49.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanox.50.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanox.51.png | Bin 0 -> 953 bytes .../signTransactionNewfundsreq/nanox.52.png | Bin 0 -> 498 bytes .../signTransactionNewfundsreq/nanox.53.png | Bin 0 -> 526 bytes .../signTransactionNewfundsreq/nanox.54.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanox.55.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanox.56.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanox.57.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanox.58.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.59.png | Bin 0 -> 379 bytes .../signTransactionNewfundsreq/nanox.60.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanox.61.png | Bin 0 -> 559 bytes .../signTransactionNewfundsreq/nanox.62.png | Bin 0 -> 561 bytes .../signTransactionNewfundsreq/nanox.63.png | Bin 0 -> 488 bytes .../signTransactionNewfundsreq/nanox.64.png | Bin 0 -> 976 bytes .../signTransactionNewfundsreq/nanox.65.png | Bin 0 -> 455 bytes .../signTransactionNewfundsreq/nanox.66.png | Bin 0 -> 581 bytes .../signTransactionNewfundsreq/nanox.67.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanox.68.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanox.69.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanox.70.png | Bin 0 -> 953 bytes .../signTransactionNewfundsreq/nanox.71.png | Bin 0 -> 498 bytes .../signTransactionNewfundsreq/nanox.72.png | Bin 0 -> 526 bytes .../signTransactionNewfundsreq/nanox.73.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanox.74.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanox.75.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanox.76.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanox.77.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.03.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.04.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.05.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.06.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.100.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.101.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.102.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.103.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.104.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.105.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.106.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.107.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.108.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.109.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.110.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.111.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.112.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.113.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.114.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.115.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.116.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.117.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.118.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.119.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.12.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.120.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.121.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.122.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.123.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.124.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.125.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.126.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.127.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.128.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.129.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.13.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.130.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.131.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.132.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.133.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.134.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.135.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.136.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.137.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.138.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.139.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.14.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.140.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.141.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.142.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.143.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.144.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.145.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.146.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.147.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.148.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.149.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.15.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.150.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.151.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.152.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.153.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.154.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.155.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.156.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.157.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.158.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.159.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.16.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.160.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.161.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.162.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.163.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.164.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.165.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.166.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.167.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.168.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.169.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.17.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.170.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.171.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.172.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.173.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.174.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.175.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.176.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.177.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.178.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.179.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.18.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.180.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.181.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.182.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.183.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.184.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.185.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.186.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.187.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.188.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.189.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.19.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.190.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.191.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.192.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.193.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.194.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.195.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.196.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.197.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.198.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.199.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.20.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.200.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.201.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.202.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.203.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.204.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.205.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.206.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.207.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.208.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.209.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.21.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.210.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.211.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.212.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.213.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.214.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.215.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.216.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.217.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.218.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.219.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.220.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.221.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.222.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.223.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.224.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.225.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.226.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.227.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.228.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.229.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.23.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.230.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.231.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.232.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.233.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.234.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.235.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.236.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.237.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.238.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.239.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.24.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.240.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.241.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.242.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.243.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.244.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.245.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.246.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.247.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.248.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.249.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.25.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.250.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.251.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.252.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.253.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.254.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.255.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.256.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.257.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.258.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.259.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.26.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.260.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.261.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.262.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.263.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.264.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.265.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.266.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.267.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.268.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.269.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.27.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.270.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.271.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.272.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.273.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.274.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.275.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.276.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.277.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.278.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.279.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.28.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.280.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.281.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.282.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.283.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.284.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.285.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.286.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.287.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.288.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.289.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.29.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.290.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.291.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.292.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.293.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.294.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.295.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.296.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.297.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.298.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.299.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.30.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.300.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.301.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.302.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.303.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.304.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.305.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.306.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.307.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.308.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.309.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.31.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.310.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.311.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.312.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.313.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.314.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.315.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.316.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.317.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.318.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.319.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.32.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.320.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.321.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.322.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.323.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.324.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.325.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.326.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.327.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.328.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.329.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.33.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.330.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.331.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.332.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.333.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.334.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.335.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.336.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.337.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.338.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.339.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.34.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.340.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.341.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.342.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.343.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.344.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.345.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.346.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.347.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.348.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.349.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.35.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.350.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.351.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.352.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.353.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.354.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.355.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.356.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.357.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.358.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.359.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.36.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.360.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.361.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.362.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.363.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.364.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.365.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.366.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.367.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.368.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.369.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.37.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.370.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.371.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.372.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.373.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.374.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.375.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.376.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.377.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.378.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.379.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.38.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.380.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.381.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.382.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.383.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.384.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.385.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.386.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.387.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.388.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.389.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.39.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.390.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.391.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.392.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.393.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.394.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.395.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.396.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.397.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.398.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.399.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.40.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.400.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.401.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.402.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.403.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.404.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.405.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.406.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.407.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.408.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.409.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.41.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.410.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.411.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.412.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.413.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.414.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.415.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.416.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.417.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.418.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.419.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.42.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.420.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.421.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.422.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.423.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.424.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.425.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.426.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.427.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.428.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.429.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.43.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.430.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.431.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.432.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.433.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.434.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.435.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.436.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.437.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.438.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.439.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.44.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.440.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.441.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.442.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.443.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.444.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.445.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.446.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.447.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.448.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.449.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.45.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.450.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.451.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.452.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.453.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.454.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.455.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.456.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.457.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.458.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.459.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.46.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.460.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.461.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.462.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.463.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.464.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.465.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.466.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.467.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.468.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.469.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.47.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.470.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.471.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.472.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.473.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.474.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.475.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.476.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.477.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.478.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.479.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.48.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.480.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.481.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.482.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.483.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.484.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.485.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.486.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.487.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.488.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.489.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.49.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.490.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.491.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.492.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.493.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.494.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.495.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.496.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.497.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.498.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.499.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.50.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.500.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.501.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.502.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.503.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.504.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.505.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.506.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.507.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.508.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.509.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.51.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.510.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.511.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.512.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.513.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.514.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.515.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.516.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.517.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.518.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.519.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.52.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.520.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.521.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.522.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.523.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.524.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.525.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.526.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.527.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.528.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.529.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.53.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.530.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.531.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.532.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.533.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.534.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.535.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.536.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.537.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.538.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.539.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.54.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.540.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.541.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.542.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.543.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.544.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.545.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.546.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.547.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.548.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.549.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.55.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.550.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.551.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.552.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.553.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.554.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.555.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.556.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.557.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.558.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.559.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.56.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.560.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.561.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.562.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.563.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.564.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.565.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.566.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.567.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.568.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.569.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.57.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.570.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.571.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.572.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.573.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.574.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.575.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.576.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.577.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.578.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.579.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.58.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.580.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.581.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.582.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.583.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.584.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.585.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.586.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.587.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.588.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.589.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.59.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.590.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.591.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.592.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.593.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.594.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.595.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.596.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.597.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.598.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.599.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.60.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.600.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.601.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.602.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.603.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.604.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.605.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.606.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.607.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.608.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.609.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.61.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.610.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.611.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.612.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.613.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.614.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.615.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.616.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.617.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.618.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.619.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.62.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.620.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.621.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.622.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.623.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.624.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.625.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.626.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.627.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.628.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.629.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.63.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.630.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.631.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.632.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.633.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.634.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.635.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.636.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.637.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.638.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.639.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.64.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.640.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.641.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.642.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.643.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.644.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.645.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.646.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.647.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.648.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.649.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.65.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.650.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.651.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.652.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.653.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.654.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.655.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.656.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.657.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.658.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.659.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.66.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.660.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.661.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.662.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.663.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.664.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.665.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.666.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.667.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.668.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.669.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.67.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.670.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.671.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.672.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.673.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.674.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.675.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.676.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.677.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.678.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.679.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.68.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.680.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.681.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.682.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.683.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.684.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.685.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.686.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.687.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.688.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.689.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.69.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.690.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.691.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.692.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.693.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.694.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.695.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.696.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.697.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.698.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.699.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.70.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.700.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.701.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.702.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.703.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.704.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.705.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.706.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.707.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.708.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanox.709.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.71.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.710.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanox.711.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanox.712.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanox.713.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanox.714.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.715.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.716.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanox.717.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.718.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.719.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.72.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.720.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanox.721.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanox.722.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.723.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanox.724.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.725.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanox.726.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.727.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanox.728.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanox.729.png | Bin 0 -> 387 bytes .../signTransactionOtherEosio/nanox.73.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.730.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.731.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.732.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.733.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.734.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.735.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.736.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.737.png | Bin 0 -> 379 bytes .../signTransactionOtherEosio/nanox.738.png | Bin 0 -> 412 bytes .../signTransactionOtherEosio/nanox.739.png | Bin 0 -> 325 bytes .../signTransactionOtherEosio/nanox.74.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.740.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.741.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.742.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.743.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.744.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.745.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.746.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.75.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.76.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.77.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.78.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.79.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.80.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.81.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.82.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.83.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.84.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.85.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanox.86.png | Bin 0 -> 1009 bytes .../signTransactionOtherEosio/nanox.87.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.88.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanox.89.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanox.90.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanox.91.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanox.92.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanox.93.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanox.94.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanox.95.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanox.96.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanox.97.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanox.98.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanox.99.png | Bin 0 -> 378 bytes .../signTransactionOtherFioAddress/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.03.png | Bin 0 -> 544 bytes .../signTransactionOtherFioAddress/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioAddress/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.06.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.07.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.08.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.09.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.10.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.11.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.12.png | Bin 0 -> 425 bytes .../signTransactionOtherFioAddress/nanox.13.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioAddress/nanox.14.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.15.png | Bin 0 -> 460 bytes .../signTransactionOtherFioAddress/nanox.16.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.17.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.18.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.19.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.20.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.21.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.22.png | Bin 0 -> 527 bytes .../signTransactionOtherFioAddress/nanox.23.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioAddress/nanox.24.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.25.png | Bin 0 -> 515 bytes .../signTransactionOtherFioAddress/nanox.26.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.27.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.28.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.29.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.30.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.31.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.32.png | Bin 0 -> 510 bytes .../signTransactionOtherFioAddress/nanox.33.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioAddress/nanox.34.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.35.png | Bin 0 -> 515 bytes .../signTransactionOtherFioAddress/nanox.36.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.37.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.38.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.39.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.40.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.41.png | Bin 0 -> 379 bytes .../signTransactionOtherFioAddress/nanox.42.png | Bin 0 -> 443 bytes .../signTransactionOtherFioAddress/nanox.43.png | Bin 0 -> 419 bytes .../signTransactionOtherFioAddress/nanox.44.png | Bin 0 -> 515 bytes .../signTransactionOtherFioAddress/nanox.45.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.46.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.47.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.48.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.49.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.50.png | Bin 0 -> 379 bytes .../signTransactionOtherFioAddress/nanox.51.png | Bin 0 -> 449 bytes .../signTransactionOtherFioAddress/nanox.52.png | Bin 0 -> 419 bytes .../signTransactionOtherFioAddress/nanox.53.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.54.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.55.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.56.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.57.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.58.png | Bin 0 -> 379 bytes .../signTransactionOtherFioAddress/nanox.59.png | Bin 0 -> 598 bytes .../signTransactionOtherFioAddress/nanox.60.png | Bin 0 -> 419 bytes .../signTransactionOtherFioAddress/nanox.61.png | Bin 0 -> 347 bytes .../signTransactionOtherFioAddress/nanox.62.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.63.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.64.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.65.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.66.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.67.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.68.png | Bin 0 -> 598 bytes .../signTransactionOtherFioAddress/nanox.69.png | Bin 0 -> 419 bytes .../signTransactionOtherFioAddress/nanox.70.png | Bin 0 -> 376 bytes .../signTransactionOtherFioAddress/nanox.71.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.72.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.73.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.74.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.75.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.76.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.77.png | Bin 0 -> 410 bytes .../signTransactionOtherFioAddress/nanox.78.png | Bin 0 -> 419 bytes .../signTransactionOtherFioAddress/nanox.79.png | Bin 0 -> 544 bytes .../signTransactionOtherFioAddress/nanox.80.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.81.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.82.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.83.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.84.png | Bin 0 -> 405 bytes .../signTransactionOtherFioAddress/nanox.85.png | Bin 0 -> 390 bytes .../signTransactionOtherFioAddress/nanox.86.png | Bin 0 -> 483 bytes .../signTransactionOtherFioAddress/nanox.87.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioAddress/nanox.88.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.89.png | Bin 0 -> 462 bytes .../signTransactionOtherFioAddress/nanox.90.png | Bin 0 -> 937 bytes .../signTransactionOtherFioAddress/nanox.91.png | Bin 0 -> 472 bytes .../signTransactionOtherFioAddress/nanox.92.png | Bin 0 -> 476 bytes .../signTransactionOtherFioAddress/nanox.93.png | Bin 0 -> 405 bytes .../signTransactionOtherFioReqobt/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionOtherFioReqobt/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionOtherFioReqobt/nanox.03.png | Bin 0 -> 427 bytes .../signTransactionOtherFioReqobt/nanox.04.png | Bin 0 -> 428 bytes .../signTransactionOtherFioReqobt/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionOtherFioReqobt/nanox.06.png | Bin 0 -> 937 bytes .../signTransactionOtherFioReqobt/nanox.07.png | Bin 0 -> 472 bytes .../signTransactionOtherFioReqobt/nanox.08.png | Bin 0 -> 476 bytes .../signTransactionOtherFioReqobt/nanox.09.png | Bin 0 -> 405 bytes .../signTransactionOtherFioReqobt/nanox.10.png | Bin 0 -> 379 bytes .../signTransactionOtherFioReqobt/nanox.11.png | Bin 0 -> 433 bytes .../signTransactionOtherFioReqobt/nanox.12.png | Bin 0 -> 428 bytes .../signTransactionOtherFioReqobt/nanox.13.png | Bin 0 -> 462 bytes .../signTransactionOtherFioReqobt/nanox.14.png | Bin 0 -> 937 bytes .../signTransactionOtherFioReqobt/nanox.15.png | Bin 0 -> 472 bytes .../signTransactionOtherFioReqobt/nanox.16.png | Bin 0 -> 476 bytes .../signTransactionOtherFioReqobt/nanox.17.png | Bin 0 -> 405 bytes .../signTransactionOtherFioStaking/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionOtherFioStaking/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionOtherFioStaking/nanox.03.png | Bin 0 -> 464 bytes .../signTransactionOtherFioStaking/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioStaking/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionOtherFioStaking/nanox.06.png | Bin 0 -> 379 bytes .../signTransactionOtherFioStaking/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionOtherFioStaking/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionOtherFioStaking/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionOtherFioStaking/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionOtherFioStaking/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionOtherFioStaking/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionOtherFioStaking/nanox.13.png | Bin 0 -> 434 bytes .../signTransactionOtherFioStaking/nanox.14.png | Bin 0 -> 1009 bytes .../signTransactionOtherFioStaking/nanox.15.png | Bin 0 -> 462 bytes .../signTransactionOtherFioStaking/nanox.16.png | Bin 0 -> 379 bytes .../signTransactionOtherFioStaking/nanox.17.png | Bin 0 -> 462 bytes .../signTransactionOtherFioStaking/nanox.18.png | Bin 0 -> 937 bytes .../signTransactionOtherFioStaking/nanox.19.png | Bin 0 -> 472 bytes .../signTransactionOtherFioStaking/nanox.20.png | Bin 0 -> 476 bytes .../signTransactionOtherFioStaking/nanox.21.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanox.03.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanox.04.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanox.05.png | Bin 0 -> 559 bytes .../signTransactionRecordobt/nanox.06.png | Bin 0 -> 561 bytes .../signTransactionRecordobt/nanox.07.png | Bin 0 -> 488 bytes .../signTransactionRecordobt/nanox.08.png | Bin 0 -> 976 bytes .../signTransactionRecordobt/nanox.09.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanox.10.png | Bin 0 -> 565 bytes .../signTransactionRecordobt/nanox.11.png | Bin 0 -> 581 bytes .../signTransactionRecordobt/nanox.12.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanox.13.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanox.14.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanox.15.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanox.16.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanox.17.png | Bin 0 -> 953 bytes .../signTransactionRecordobt/nanox.18.png | Bin 0 -> 498 bytes .../signTransactionRecordobt/nanox.19.png | Bin 0 -> 526 bytes .../signTransactionRecordobt/nanox.20.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanox.21.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanox.22.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanox.23.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanox.24.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.25.png | Bin 0 -> 379 bytes .../signTransactionRecordobt/nanox.26.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanox.27.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanox.28.png | Bin 0 -> 559 bytes .../signTransactionRecordobt/nanox.29.png | Bin 0 -> 561 bytes .../signTransactionRecordobt/nanox.30.png | Bin 0 -> 488 bytes .../signTransactionRecordobt/nanox.31.png | Bin 0 -> 976 bytes .../signTransactionRecordobt/nanox.32.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanox.33.png | Bin 0 -> 565 bytes .../signTransactionRecordobt/nanox.34.png | Bin 0 -> 581 bytes .../signTransactionRecordobt/nanox.35.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanox.36.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanox.37.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanox.38.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanox.39.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanox.40.png | Bin 0 -> 953 bytes .../signTransactionRecordobt/nanox.41.png | Bin 0 -> 498 bytes .../signTransactionRecordobt/nanox.42.png | Bin 0 -> 526 bytes .../signTransactionRecordobt/nanox.43.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanox.44.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanox.45.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanox.46.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanox.47.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.48.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanox.49.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanox.50.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanox.51.png | Bin 0 -> 559 bytes .../signTransactionRecordobt/nanox.52.png | Bin 0 -> 561 bytes .../signTransactionRecordobt/nanox.53.png | Bin 0 -> 488 bytes .../signTransactionRecordobt/nanox.54.png | Bin 0 -> 976 bytes .../signTransactionRecordobt/nanox.55.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanox.56.png | Bin 0 -> 565 bytes .../signTransactionRecordobt/nanox.57.png | Bin 0 -> 581 bytes .../signTransactionRecordobt/nanox.58.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanox.59.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanox.60.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanox.61.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanox.62.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanox.63.png | Bin 0 -> 953 bytes .../signTransactionRecordobt/nanox.64.png | Bin 0 -> 498 bytes .../signTransactionRecordobt/nanox.65.png | Bin 0 -> 526 bytes .../signTransactionRecordobt/nanox.66.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanox.67.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanox.68.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanox.69.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanox.70.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.71.png | Bin 0 -> 379 bytes .../signTransactionRecordobt/nanox.72.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanox.73.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanox.74.png | Bin 0 -> 559 bytes .../signTransactionRecordobt/nanox.75.png | Bin 0 -> 561 bytes .../signTransactionRecordobt/nanox.76.png | Bin 0 -> 488 bytes .../signTransactionRecordobt/nanox.77.png | Bin 0 -> 976 bytes .../signTransactionRecordobt/nanox.78.png | Bin 0 -> 455 bytes .../signTransactionRecordobt/nanox.79.png | Bin 0 -> 565 bytes .../signTransactionRecordobt/nanox.80.png | Bin 0 -> 581 bytes .../signTransactionRecordobt/nanox.81.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanox.82.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanox.83.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanox.84.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanox.85.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanox.86.png | Bin 0 -> 953 bytes .../signTransactionRecordobt/nanox.87.png | Bin 0 -> 498 bytes .../signTransactionRecordobt/nanox.88.png | Bin 0 -> 526 bytes .../signTransactionRecordobt/nanox.89.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanox.90.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanox.91.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanox.92.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanox.93.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionRemaddress/nanox.03.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionRemaddress/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.06.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanox.13.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanox.14.png | Bin 0 -> 1009 bytes .../signTransactionRemaddress/nanox.15.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.16.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanox.17.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanox.18.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.19.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanox.20.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanox.21.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.23.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanox.24.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanox.25.png | Bin 0 -> 1009 bytes .../signTransactionRemaddress/nanox.26.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.27.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanox.28.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanox.29.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanox.30.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.31.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanox.32.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanox.33.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanox.34.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.35.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanox.36.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanox.37.png | Bin 0 -> 1009 bytes .../signTransactionRemaddress/nanox.38.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.39.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanox.40.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanox.41.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanox.42.png | Bin 0 -> 569 bytes .../signTransactionRemaddress/nanox.43.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.44.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanox.45.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanox.46.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanox.47.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.48.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanox.49.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanox.50.png | Bin 0 -> 1009 bytes .../signTransactionRemaddress/nanox.51.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.52.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanox.53.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanox.54.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanox.55.png | Bin 0 -> 569 bytes .../signTransactionRemaddress/nanox.56.png | Bin 0 -> 587 bytes .../signTransactionRemaddress/nanox.57.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanox.58.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanox.59.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanox.60.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanox.61.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanox.01.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanox.02.png | Bin 0 -> 390 bytes .../signTransactionRemnft/nanox.03.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanox.04.png | Bin 0 -> 1009 bytes .../signTransactionRemnft/nanox.05.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.06.png | Bin 0 -> 543 bytes .../signTransactionRemnft/nanox.07.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.08.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanox.09.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanox.10.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanox.11.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanox.12.png | Bin 0 -> 379 bytes .../signTransactionRemnft/nanox.13.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanox.14.png | Bin 0 -> 1009 bytes .../signTransactionRemnft/nanox.15.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.16.png | Bin 0 -> 543 bytes .../signTransactionRemnft/nanox.17.png | Bin 0 -> 596 bytes .../signTransactionRemnft/nanox.18.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.19.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanox.20.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanox.21.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanox.22.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanox.23.png | Bin 0 -> 379 bytes .../signTransactionRemnft/nanox.24.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanox.25.png | Bin 0 -> 1009 bytes .../signTransactionRemnft/nanox.26.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.27.png | Bin 0 -> 543 bytes .../signTransactionRemnft/nanox.28.png | Bin 0 -> 596 bytes .../signTransactionRemnft/nanox.29.png | Bin 0 -> 586 bytes .../signTransactionRemnft/nanox.30.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.31.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanox.32.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanox.33.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanox.34.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanox.22.png | Bin 379 -> 390 bytes .../signTransactionTrnsfiopubky/nanox.28.png | Bin 405 -> 937 bytes .../signTransactionTrnsfiopubky/nanox.29.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanox.30.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanox.31.png | Bin 0 -> 390 bytes .../signTransactionTrnsfiopubky/nanox.32.png | Bin 0 -> 405 bytes .../speculos-buttons-and-snapshots.js | 8 ++++++++ 1338 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 test-integration/snapshots/decodeMessage/nanox.01.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.02.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.03.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.04.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.05.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.06.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.07.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.08.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.09.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.10.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.11.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.12.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.13.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.14.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.15.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.16.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.17.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.18.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.19.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.20.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.21.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.22.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.23.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.24.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.25.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.26.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.27.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.28.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.29.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.30.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.31.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.32.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.33.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.34.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.35.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.36.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.37.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.38.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.39.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.40.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.41.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.42.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.43.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.44.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.45.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.46.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.47.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.48.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.49.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.50.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.51.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.52.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.53.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.54.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.55.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.56.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.57.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.58.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.59.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.60.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.61.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.62.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.63.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.64.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.65.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.66.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.67.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.68.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.69.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.70.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.18.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.19.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.20.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.21.png create mode 100644 test-integration/snapshots/getPublicKey/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.62.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.63.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.64.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.65.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.67.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.69.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.70.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.71.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.73.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.74.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.76.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.77.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.100.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.101.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.102.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.103.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.104.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.105.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.106.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.107.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.108.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.109.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.110.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.111.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.112.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.113.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.114.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.115.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.116.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.117.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.118.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.119.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.120.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.121.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.122.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.123.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.124.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.125.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.126.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.127.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.128.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.129.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.130.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.131.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.132.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.133.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.134.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.135.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.136.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.137.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.138.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.139.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.140.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.141.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.142.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.143.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.144.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.145.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.146.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.147.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.148.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.149.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.150.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.151.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.152.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.153.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.154.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.155.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.156.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.157.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.158.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.159.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.160.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.161.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.162.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.163.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.164.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.165.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.166.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.167.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.168.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.169.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.170.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.171.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.172.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.173.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.174.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.175.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.176.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.177.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.178.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.179.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.180.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.181.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.182.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.183.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.184.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.185.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.186.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.187.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.188.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.189.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.190.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.191.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.192.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.193.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.194.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.195.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.196.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.197.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.198.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.199.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.200.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.201.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.202.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.203.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.204.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.205.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.206.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.207.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.208.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.209.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.210.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.211.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.212.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.213.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.214.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.215.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.216.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.217.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.218.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.219.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.220.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.221.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.222.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.223.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.224.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.225.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.226.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.227.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.228.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.229.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.230.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.231.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.232.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.233.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.234.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.235.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.236.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.237.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.238.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.239.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.240.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.241.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.242.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.243.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.244.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.245.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.246.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.247.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.248.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.249.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.250.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.251.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.252.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.253.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.254.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.255.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.256.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.257.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.258.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.259.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.260.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.261.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.262.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.263.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.264.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.265.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.266.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.267.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.268.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.269.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.270.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.271.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.272.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.273.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.274.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.275.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.276.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.277.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.278.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.279.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.280.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.281.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.282.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.283.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.284.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.285.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.286.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.287.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.288.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.289.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.290.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.291.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.292.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.293.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.294.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.295.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.296.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.297.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.298.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.299.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.300.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.301.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.302.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.303.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.304.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.305.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.306.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.307.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.308.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.309.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.310.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.311.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.312.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.313.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.314.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.315.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.316.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.317.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.318.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.319.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.320.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.321.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.322.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.323.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.324.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.325.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.326.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.327.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.328.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.329.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.330.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.331.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.332.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.333.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.334.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.335.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.336.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.337.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.338.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.339.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.340.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.341.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.342.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.343.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.344.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.345.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.346.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.347.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.348.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.349.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.350.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.351.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.352.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.353.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.354.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.355.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.356.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.357.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.358.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.359.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.360.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.361.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.362.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.363.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.364.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.365.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.366.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.367.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.368.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.369.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.370.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.371.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.372.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.373.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.374.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.375.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.376.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.377.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.378.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.379.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.380.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.381.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.382.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.383.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.384.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.385.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.386.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.387.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.388.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.389.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.390.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.391.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.392.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.393.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.394.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.395.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.396.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.397.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.398.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.399.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.400.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.401.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.402.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.403.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.404.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.405.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.406.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.407.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.408.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.409.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.410.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.411.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.412.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.413.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.414.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.415.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.416.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.417.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.418.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.419.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.420.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.421.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.422.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.423.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.424.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.425.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.426.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.427.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.428.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.429.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.430.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.431.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.432.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.433.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.434.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.435.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.436.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.437.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.438.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.439.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.440.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.441.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.442.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.443.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.444.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.445.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.446.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.447.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.448.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.449.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.450.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.451.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.452.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.453.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.454.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.455.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.456.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.457.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.458.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.459.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.460.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.461.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.462.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.463.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.464.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.465.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.466.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.467.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.468.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.469.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.470.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.471.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.472.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.473.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.474.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.475.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.476.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.477.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.478.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.479.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.480.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.481.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.482.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.483.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.484.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.485.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.486.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.487.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.488.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.489.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.490.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.491.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.492.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.493.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.494.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.495.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.496.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.497.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.498.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.499.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.500.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.501.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.502.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.503.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.504.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.505.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.506.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.507.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.508.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.509.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.510.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.511.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.512.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.513.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.514.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.515.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.516.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.517.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.518.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.519.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.520.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.521.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.522.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.523.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.524.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.525.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.526.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.527.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.528.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.529.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.530.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.531.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.532.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.533.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.534.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.535.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.536.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.537.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.538.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.539.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.540.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.541.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.542.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.543.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.544.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.545.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.546.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.547.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.548.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.549.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.550.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.551.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.552.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.553.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.554.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.555.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.556.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.557.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.558.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.559.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.560.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.561.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.562.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.563.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.564.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.565.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.566.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.567.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.568.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.569.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.570.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.571.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.572.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.573.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.574.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.575.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.576.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.577.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.578.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.579.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.580.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.581.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.582.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.583.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.584.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.585.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.586.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.587.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.588.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.589.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.590.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.591.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.592.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.593.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.594.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.595.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.596.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.597.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.598.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.599.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.600.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.601.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.602.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.603.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.604.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.605.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.606.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.607.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.608.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.609.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.610.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.611.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.612.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.613.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.614.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.615.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.616.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.617.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.618.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.619.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.62.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.620.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.621.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.622.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.623.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.624.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.625.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.626.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.627.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.628.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.629.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.63.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.630.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.631.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.632.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.633.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.634.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.635.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.636.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.637.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.638.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.639.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.64.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.640.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.641.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.642.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.643.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.644.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.645.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.646.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.647.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.648.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.649.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.65.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.650.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.651.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.652.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.653.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.654.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.655.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.656.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.657.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.658.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.659.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.66.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.660.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.661.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.662.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.663.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.664.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.665.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.666.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.667.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.668.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.669.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.67.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.670.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.671.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.672.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.673.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.674.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.675.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.676.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.677.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.678.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.679.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.68.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.680.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.681.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.682.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.683.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.684.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.685.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.686.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.687.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.688.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.689.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.69.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.690.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.691.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.692.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.693.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.694.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.695.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.696.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.697.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.698.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.699.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.70.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.700.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.701.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.702.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.703.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.704.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.705.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.706.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.707.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.708.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.709.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.71.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.710.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.711.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.712.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.713.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.714.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.715.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.716.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.717.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.718.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.719.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.72.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.720.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.721.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.722.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.723.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.724.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.725.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.726.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.727.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.728.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.729.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.73.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.730.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.731.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.732.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.733.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.734.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.735.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.736.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.737.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.738.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.739.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.74.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.740.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.741.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.742.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.743.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.744.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.745.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.746.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.75.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.76.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.77.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.78.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.79.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.80.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.81.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.82.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.83.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.84.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.85.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.86.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.87.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.88.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.89.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.90.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.91.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.92.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.93.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.94.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.95.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.96.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.97.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.98.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanox.99.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.62.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.63.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.64.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.65.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.66.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.67.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.68.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.69.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.70.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.71.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.72.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.73.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.74.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.75.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.76.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.77.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.78.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.79.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.80.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.81.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.82.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.83.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.84.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.85.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.86.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.87.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.88.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.89.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.90.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.91.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.92.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanox.93.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.62.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.63.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.64.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.65.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.66.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.67.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.68.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.69.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.70.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.71.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.72.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.73.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.74.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.75.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.76.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.77.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.78.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.79.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.80.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.81.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.82.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.83.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.84.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.85.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.86.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.87.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.88.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.89.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.90.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.91.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.92.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.93.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.54.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.55.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.56.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.57.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.58.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.59.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.60.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanox.61.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.23.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.24.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.25.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.26.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.27.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.28.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.32.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.29.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.30.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.31.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.32.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 20763f65..0aea0ec2 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -79,7 +79,19 @@ ledger_test: @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getVersion.js @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getSerial.js @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getPublicKey.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionBasic.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node decodeMessage.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionTrnsfiopubky.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionNewfundsreq.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRecordobt.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionAddaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRemaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionAddnft.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRemaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioAddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioReqobt.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioStaking.js + #We don't do signTransactionEosio as it is too time consuming + $(call run_nodejs_test,5001,40001,signTransactionOtherEosio.js) @echo "# ALL TESTS COMPLETED!" .PHONY: ledger_unit_test diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js index 0a7f10a2..0b2c8477 100644 --- a/test-integration/decodeMessage.js +++ b/test-integration/decodeMessage.js @@ -97,7 +97,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq memo"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent1, context: "newfundsreq"}); - await device.review([1, 2, 1, 3, 2, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433201074d79206d656d6f0000") } @@ -106,7 +106,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq hash"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent2, context: "newfundsreq"}); - await device.review([1, 2, 1, 3, 2, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e7420313030044254433104425443320001074d792068617368010b4f66666c696e652055524c") } @@ -115,7 +115,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt memo"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent3, context: "recordobt"}); - await device.review([1, 2, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796572207075626c69632061646472657373145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433206537461747573064f627420494401074d79206d656d6f0000") } @@ -125,7 +125,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt hash"); console.log(encryptedContent4) const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent4, context: "recordobt"}); - await device.review([1, 2, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "2d5061796572207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e672d5061796565207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e670a416d6f756e74203130300442544331044254433206537461747573064f62742049440001234d792068617368206973207175697465206c6f6e6720746f6f2c20746f6f2c20746f6f01224f66666c696e652055524c206973207175697465206c6f6e6720746f6f2c20746f6f") } @@ -141,7 +141,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq rejected by user"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent1, context: "newfundsreq"}); - await device.reviewReject([1, 2, 1, 3, 2, 1, 1, 1, 1], "Review decode message"); + await device.reviewReject([1, 1, 1, 2, 1, 1, 1, 1, 1], "Review decode message"); await assert.rejects(decodeMessagePromise, DeviceStatusError); } diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index e16ff224..b2e57c67 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -237,8 +237,7 @@ async function runTxTest(network, tx, review1, review2) { const pair = await buildTxUsingFioJs(network, tx, iv) const serTx = pair.tx const encContent = pair.enc - console.log("Test data:") - console.log(tx) + console.log("Serialized tx + encoded conent:") console.log(serTx.toString("hex")) console.log(encContent) @@ -260,8 +259,8 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence = [1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3]; -const secondSequence = [1, 3] +const longSequence = [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2]; +const secondSequence = [1, 2] testStep(" - - -", "Sign testnet transaction - memo"); { diff --git a/test-integration/signTransactionOtherEosio.js b/test-integration/signTransactionOtherEosio.js index f3be5137..d3bc151b 100644 --- a/test-integration/signTransactionOtherEosio.js +++ b/test-integration/signTransactionOtherEosio.js @@ -213,7 +213,7 @@ async function test(i) { // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 2, ...[...Array(i)].map(k => 1), 2, 1, 2], "Review sign"); + await device.review([1, 1, ...[...Array(i)].map(k => 1), 2, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -285,7 +285,7 @@ testStep(" - - -", "Sign mainnet transaction - voteproxy"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 1, 2, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/signTransactionOtherFioAddress.js b/test-integration/signTransactionOtherFioAddress.js index a926aa27..e8559139 100644 --- a/test-integration/signTransactionOtherFioAddress.js +++ b/test-integration/signTransactionOtherFioAddress.js @@ -369,7 +369,7 @@ testStep(" - - -", "Sign mainnet transaction - regdomain"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -407,7 +407,7 @@ testStep(" - - -", "Sign mainnet transaction - renewdomain"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -446,7 +446,7 @@ testStep(" - - -", "Sign mainnet transaction - setdomainpub true"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -485,7 +485,7 @@ testStep(" - - -", "Sign testnet transaction - setdomainpub false"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -524,7 +524,7 @@ testStep(" - - -", "Sign testnet transaction - xferdomain"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/signTransactionOtherFioReqobt.js b/test-integration/signTransactionOtherFioReqobt.js index 24a28cb2..095940ec 100644 --- a/test-integration/signTransactionOtherFioReqobt.js +++ b/test-integration/signTransactionOtherFioReqobt.js @@ -213,7 +213,7 @@ testStep(" - - -", "Sign testnet transaction - cancalefndreq"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -222,7 +222,7 @@ testStep(" - - -", "Sign testnet transaction - cancalefndreq"); assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -testStep(" - - -", "Sign mainnet transaction - cancalefndreq"); +testStep(" - - -", "Sign mainnet transaction - crejectfndreq"); { const network = "MAINNET" const tx = { @@ -252,7 +252,7 @@ testStep(" - - -", "Sign mainnet transaction - cancalefndreq"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 2], "Review sign"); + await device.review([1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 387313fc..feae9423 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -279,8 +279,8 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence = [1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3]; -const secondSequence = [1, 3] +const longSequence = [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2]; +const secondSequence = [1, 2] testStep(" - - -", "Sign testnet transaction - memo"); { diff --git a/test-integration/snapshots/decodeMessage/nanox.01.png b/test-integration/snapshots/decodeMessage/nanox.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.03.png b/test-integration/snapshots/decodeMessage/nanox.03.png new file mode 100644 index 0000000000000000000000000000000000000000..16de8fc0f37ff6f728af96098915c70e1686dacd GIT binary patch literal 601 zcmV-f0;c_mP)=WDH zLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMlyq$w$tl~#2fYKOMcV{0tbFv@c0 zS$@`&vCg^qnQVPg*P(W(FFiIkNK=x}S-Az(DBYdp{F~10+S!m@2B6?I*IeuboKkUH zkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt8L4-SrN;O z^(70^;(K9AZ|=(iG46FH?3guci!PUU!La3$YCXb&0eGE5)3A~IS@k~&p9(C&NIRSF z7#uG}(8ETV`{U}SZvO@TD?nEZ*wfX5^3_l}B$Z>PEE**k>5SR>5Z)H!i5<`JThQqo zriP9n-Ae!f;A`H&k8&A&UHUGlbsf_ zmb-eb68yeA6*cXJk91I_&PWXIOj!Z!d>P51tAhqG$>Wp(P(FZ+7^L>Y#$cYuiBg2S za2RYq#$(VSOm#;o8CuxYK}(4~J&k?G1~&Vvz+(2%CXE~yaEG(F{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.06.png b/test-integration/snapshots/decodeMessage/nanox.06.png new file mode 100644 index 0000000000000000000000000000000000000000..d420a8095ad96ec20fc49ce4c6087c1554578e21 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.09.png b/test-integration/snapshots/decodeMessage/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.10.png b/test-integration/snapshots/decodeMessage/nanox.10.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.11.png b/test-integration/snapshots/decodeMessage/nanox.11.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50d7e0aefb037bc7c64b380116e1dd54e9430f GIT binary patch literal 347 zcmV-h0i^zkP)?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.12.png b/test-integration/snapshots/decodeMessage/nanox.12.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.15.png b/test-integration/snapshots/decodeMessage/nanox.15.png new file mode 100644 index 0000000000000000000000000000000000000000..16de8fc0f37ff6f728af96098915c70e1686dacd GIT binary patch literal 601 zcmV-f0;c_mP)=WDH zLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMlyq$w$tl~#2fYKOMcV{0tbFv@c0 zS$@`&vCg^qnQVPg*P(W(FFiIkNK=x}S-Az(DBYdp{F~10+S!m@2B6?I*IeuboKkUH zkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt8L4-SrN;O z^(70^;(K9AZ|=(iG46FH?3guci!PUU!La3$YCXb&0eGE5)3A~IS@k~&p9(C&NIRSF z7#uG}(8ETV`{U}SZvO@TD?nEZ*wfX5^3_l}B$Z>PEE**k>5SR>5Z)H!i5<`JThQqo zriP9n-Ae!f;A`H&k8&A&UHUGlbsf_ zmb-eb68yeA6*cXJk91I_&PWXIOj!Z!d>P51tAhqG$>Wp(P(FZ+7^L>Y#$cYuiBg2S za2RYq#$(VSOm#;o8CuxYK}(4~J&k?G1~&Vvz+(2%CXE~yaEG(F{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.18.png b/test-integration/snapshots/decodeMessage/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..d420a8095ad96ec20fc49ce4c6087c1554578e21 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.21.png b/test-integration/snapshots/decodeMessage/nanox.21.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.22.png b/test-integration/snapshots/decodeMessage/nanox.22.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.23.png b/test-integration/snapshots/decodeMessage/nanox.23.png new file mode 100644 index 0000000000000000000000000000000000000000..5854c8c51cca8065ae0f2fed78a602134e03c123 GIT binary patch literal 380 zcmV-?0fYXDP)Y4+knlLomohBk6e{l6!xFJz`nVW=qq000000N`IdRu5oaMC_k) z&I?C!hGhcE(3c$3;Fo|s`enGgUs`ys9>An3&~|Zm6%l3qIli>uIs>rG=r(t}{gdwu zsABCH`i6n>Ivu;lQzm} zd_)rw$~jO^K=<5n)Q(mT^oZ*-Am?0$d%HAx_U>F0(B+r|^%68PTA?~tApigXEYQAC z_2ny8b4z};jl!)qVveLYVpV&m?e-irL6d)@^hdUERE@T_@79)%>b>aEuLq|(3gt+8 z228MPl&U0P@1vcMRJZcT=0N=+yd~y*_+%TUDl_0hG)ga~dFNh5y#!$;(|;WS00000 afT1@wsmK_v}6ba4!+nDh2#EZ-po0k=St zcP)SQGrv7z=5(yP)v@F<|NBaVrCHwTUDFg<$5iy?bU}H!S4CBMLXc?2&K;|bHh=p5e21oEDa(PgFU-RC{B3^6u_9@$#4nfk zni?M@s)Vb3jsOj8SbKB%x3zhj@6NEu-+uFL&%2&qF4c*PPw1^Tlu>!G#aO%|wq~E# zt_NSFlGn_-s(yLiMV5#X-(!}HnlCI(h_7Re!@Q!gf3y!M+=^@T@-v;+AmU`8b nwL)vv!tQ>5QxT9)fkAa#+N{NP^#*fUF%Z|&)z4*}Q$iB}=J}Bz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.25.png b/test-integration/snapshots/decodeMessage/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.28.png b/test-integration/snapshots/decodeMessage/nanox.28.png new file mode 100644 index 0000000000000000000000000000000000000000..16de8fc0f37ff6f728af96098915c70e1686dacd GIT binary patch literal 601 zcmV-f0;c_mP)=WDH zLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMlyq$w$tl~#2fYKOMcV{0tbFv@c0 zS$@`&vCg^qnQVPg*P(W(FFiIkNK=x}S-Az(DBYdp{F~10+S!m@2B6?I*IeuboKkUH zkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt8L4-SrN;O z^(70^;(K9AZ|=(iG46FH?3guci!PUU!La3$YCXb&0eGE5)3A~IS@k~&p9(C&NIRSF z7#uG}(8ETV`{U}SZvO@TD?nEZ*wfX5^3_l}B$Z>PEE**k>5SR>5Z)H!i5<`JThQqo zriP9n-Ae!f;A`H&k8&A&UHUGlbsf_ zmb-eb68yeA6*cXJk91I_&PWXIOj!Z!d>P51tAhqG$>Wp(P(FZ+7^L>Y#$cYuiBg2S za2RYq#$(VSOm#;o8CuxYK}(4~J&k?G1~&Vvz+(2%CXE~yaEG(F{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.31.png b/test-integration/snapshots/decodeMessage/nanox.31.png new file mode 100644 index 0000000000000000000000000000000000000000..d420a8095ad96ec20fc49ce4c6087c1554578e21 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwEaktG3V`!z@j4x91gk5 z%|HHg|D^Z#L{1x%P*2{Zx%<9vP2^P2@Y7%gYGQa$wC_rBwy)i_D1Dx14Z3EclSFoL zo!-0V>Fud@TJI~f*2;_j^mp@=<1Sx+Ggo73wbSqETl2TyTbEz_)-83a@h68HQNfL0 zKM8xA{SjWULceQz_IA!4TxKHX%MK?PWnEfXbyROTPnq1#mV{E<>p_p^GfY)BPdylI zwog&{r^t7cvE`B#y5Pgm0@By(45h9TbZ+E^2515QUs<+19k%+b}wynMFj9`RjYlk(#D!oR|YYV>D)ob+)< ze#}kb1n*g23V&}^jFjlvEqGT>z_^Az;^D&;DlZ>Ng`IVLyI^g{lGVo>rY`QN)%m(* zNqn1>ESvD}xu2&Oc)n4Vbc~sL*xLBonct<)=N^3R`TPCemd|snZ}sm|*K5msan@(6 j0_WjCP%L2qKi2EaktG3V`!=%Qu=9@ndW z<&XaAckcbt%=!2tccZVuTg&)P!EaM_PB*&%H8C*UJ2zc6YTDBOx1*}3&*%xADs-8D z7u)6Vndi#CJWwoLe>v*6#aX3K!CPMUx6Up!lbl+ZeRkQT>RV=;kK8+U>uPeZ_T!Ta zN>#di>^2F`V{oljj9YUzXu-8I+Y-~KMp|im*}is_y6}a~yEpMf-K4PYM_uO>TzPjC$L(VK}Et0>>$^X~3Klk5G|MP!Ogj*U$tanvj z9TKJ^w(b(AhtSR+j{+mF8wNJKo*T_6)OVM$Y{R8(cjvx3d*)T!t+LrAj^Xvn%eE?Q z+jd3RsYZEKGx&3Q|piKQH~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.35.png b/test-integration/snapshots/decodeMessage/nanox.35.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.36.png b/test-integration/snapshots/decodeMessage/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.37.png b/test-integration/snapshots/decodeMessage/nanox.37.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbc447c72dd7395262af62672e5d0b2156bb7ad GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|wQCvY!j@0@XG6S_SFdW!lk;4CAPe;b>ck?VJ#ZQ^j zuuFC=WOi^Ed7wOyUJe+CUFuBcX`s(UX!He_jzm$j)#U715B)(T3~^rO$5xx4?}w)@+1 zf4!VxdHs(_{WMQIwg0&X@Aah)9Q7zoWoyU=v`d?>gl`oRXc0rH}jXMKPZ}2 zyr6>X*3bKg3j%FRuI%6dy8J}InWi4;<1tGXp7d~@Jh4qpnRlv#RFyecsS+)P_FbGGjOqzw!B=3C$TZABHWG&-t8vpM89sW zCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs|fi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~ zCt!$m#nA8S?SeMj&_%q*K@0!@60CR*7|vOJj~@{??)UpQXFtW%?^AAXnU#P}8rQE_ zd}nvye})$?`|bW&baWR>z%U)P)^4Ad)>O3``ZgpWnFJ(TZVlL{^`WI-pZq0awi2jX z0{|>YHI!?rp-WQ@O{N;klSx1_2}riw8lV~q00000yu=SW-KGAHTAhyo0000?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.40.png b/test-integration/snapshots/decodeMessage/nanox.40.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.43.png b/test-integration/snapshots/decodeMessage/nanox.43.png new file mode 100644 index 0000000000000000000000000000000000000000..16de8fc0f37ff6f728af96098915c70e1686dacd GIT binary patch literal 601 zcmV-f0;c_mP)=WDH zLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMlyq$w$tl~#2fYKOMcV{0tbFv@c0 zS$@`&vCg^qnQVPg*P(W(FFiIkNK=x}S-Az(DBYdp{F~10+S!m@2B6?I*IeuboKkUH zkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt8L4-SrN;O z^(70^;(K9AZ|=(iG46FH?3guci!PUU!La3$YCXb&0eGE5)3A~IS@k~&p9(C&NIRSF z7#uG}(8ETV`{U}SZvO@TD?nEZ*wfX5^3_l}B$Z>PEE**k>5SR>5Z)H!i5<`JThQqo zriP9n-Ae!f;A`H&k8&A&UHUGlbsf_ zmb-eb68yeA6*cXJk91I_&PWXIOj!Z!d>P51tAhqG$>Wp(P(FZ+7^L>Y#$cYuiBg2S za2RYq#$(VSOm#;o8CuxYK}(4~J&k?G1~&Vvz+(2%CXE~yaEG(F{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.46.png b/test-integration/snapshots/decodeMessage/nanox.46.png new file mode 100644 index 0000000000000000000000000000000000000000..d420a8095ad96ec20fc49ce4c6087c1554578e21 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwsC6;f~x>dj99LMpv$bXPR`LZzQnx2Mv;gV5*rTy!v_bRXZ+KfsU zM(mF9JWml=segRSg}nj<#~;b+YjYDY3+PbHn5w}b#qvtUExI|Wap%dK;Iyt(b#Ad& zfaoK$%bdG(d`(X9E-sby>oO;Gs}pnlOb>dI3|!~w*-G+hY~`m^=`7AsZcx6X9fblHn3u4zlthpPV@Mtm>osRgMK-?-2f zpobK!V|m)h2@J-Zh~^&P)0_jeu_~2-Rm>qu2h~Db$~s+KIz&nlFIj50PM?O54jsk* z#r-6lfO(Wh;Ezf*XZj`adQH94xgGRBHVNb0TiRRYiOEn6T};;<Xcp5JEnVnGZ07 z>RS5@*83F1tlLTNQ&36u6yN%VOF!9g4%NOkRT8YK(`As`fm8*^R*BSc7^qfGa0?Q7 z5W}O{;pN&UgdN0i{V&a3vx82EQEtNq;6lF|JFMUMS3Th65r-ju2DuHEA`%c8E|G?K z&|b0000004(PpExN9&{+e@M z6^urSstKkpWDUY=3Fk+;a7e$~$vM9+=9JQZqg}l$*cnGBV`H3irc;SsZMT_XPy3pU zhZCXL>z0 zW#Ts_x3P5#Qm9+y?DvqpXfy`a-r_`$!Lt7(V-hX{Xq+;Qv85%_5~eH68H3aiw%pQc zwxXdV?8QDXGj9I?0=6LF!8HI=kB9&O0CsX!?2aX+-jUTA1b) zjjOW)l!L29lH~BvE~3;Xc26?t`-xegHoX_Rh`~^)d`RyZb9mVF5XBZ z9V%LV&2SPd5*@9{y zhynn>m$LE!W>Q_-pTS&DLCC#+Tu(uY_L*dPr27&FdwWxFV{cJ9E$`*ca66H%06D6U zT0~R7TDicjov?$LJ(?mMMb-Ouya%zukp8!F%}zQe2D*(IfCBx2EOYPpcRkqcEe=Ec z%ySzv0CxRPmqjfMd7uejx@D5v_YsvI*q;gg&coe)ks3N_o;uw!|B~EAc*2xU7-zZ# z006-A!6)Z0dI~y|$dm9I-lti90NXXod0-3L%=@+=JFj?U=935D@UAbsYydo(C0K{& q9}|l~65h-~YG^FbECB!joX#(4)bw(YSWjdC0000~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.50.png b/test-integration/snapshots/decodeMessage/nanox.50.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.51.png b/test-integration/snapshots/decodeMessage/nanox.51.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.52.png b/test-integration/snapshots/decodeMessage/nanox.52.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbc447c72dd7395262af62672e5d0b2156bb7ad GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|wQCvY!j@0@XG6S_SFdW!lk;4CAPe;b>ck?VJ#ZQ^j zuuFC=WOi^Ed7wOyUJe+CUFuBcX`s(UX!He_jzm$j)#U715B)(T3~^rO$5xx4?}w)@+1 zf4!VxdHs(_{WMQIwg0&X@Aah)9Q7zoWoyU=v`d?>gl`oRXc0rH}jXMKPZ}2 zyr6>X*3bKg3j%FRuI%6dy8J}InWi4;<1tGXp7d~@Jh4qpnRlv#RFyecsS+)P_FbGGjOqzw!B=3C$TZABHWG&-t8vpM89sW zCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs|fi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~ zCt!$m#nA8S?SeMj&_%q*K@0!@60CR*7|vOJj~@{??)UpQXFtW%?^AAXnU#P}8rQE_ zd}nvye})$?`|bW&baWR>z%U)P)^4Ad)>O3``ZgpWnFJ(TZVlL{^`WI-pZq0awi2jX z0{|>YHI!?rp-WQ@O{N;klSx1_2}riw8lV~q00000yu=SW-KGAHTAhyo0000*#ld?JcI07pz^5RHHyKZU*6n>Kp} zoFT5F+?;l{u-O0@^r&nh`V>?-=5&3H_a4Fk007vGUhO&ai(~sByVk_L)j(Et)~TEJ z*oaMB+Bfre3yo~VsuWoDHMMe(dZT0Zt8S0(Gk_G?(006fV|3`MImlt1C<-k&)G^U}&@qu!|v#C^R zdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZaD+Ins1FW=b*;}S4N(t&@&rZQ10LhLr zo!OIAv8Hs~wS-j*D_{2rvBJ}7#$L&|0oM<2nn|g*vs2hB00SNw+cffQ@#3t&_hdr{ zcF))-Ury`*X|C_`QLBuq>W_Lqez{YTD$wdp#kkqe5nseTo8u)%&~qUG001zP<y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.59.png b/test-integration/snapshots/decodeMessage/nanox.59.png new file mode 100644 index 0000000000000000000000000000000000000000..16de8fc0f37ff6f728af96098915c70e1686dacd GIT binary patch literal 601 zcmV-f0;c_mP)=WDH zLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMlyq$w$tl~#2fYKOMcV{0tbFv@c0 zS$@`&vCg^qnQVPg*P(W(FFiIkNK=x}S-Az(DBYdp{F~10+S!m@2B6?I*IeuboKkUH zkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt8L4-SrN;O z^(70^;(K9AZ|=(iG46FH?3guci!PUU!La3$YCXb&0eGE5)3A~IS@k~&p9(C&NIRSF z7#uG}(8ETV`{U}SZvO@TD?nEZ*wfX5^3_l}B$Z>PEE**k>5SR>5Z)H!i5<`JThQqo zriP9n-Ae!f;A`H&k8&A&UHUGlbsf_ zmb-eb68yeA6*cXJk91I_&PWXIOj!Z!d>P51tAhqG$>Wp(P(FZ+7^L>Y#$cYuiBg2S za2RYq#$(VSOm#;o8CuxYK}(4~J&k?G1~&Vvz+(2%CXE~yaEG(F{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.62.png b/test-integration/snapshots/decodeMessage/nanox.62.png new file mode 100644 index 0000000000000000000000000000000000000000..d420a8095ad96ec20fc49ce4c6087c1554578e21 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.65.png b/test-integration/snapshots/decodeMessage/nanox.65.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.66.png b/test-integration/snapshots/decodeMessage/nanox.66.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.67.png b/test-integration/snapshots/decodeMessage/nanox.67.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50d7e0aefb037bc7c64b380116e1dd54e9430f GIT binary patch literal 347 zcmV-h0i^zkP)?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.68.png b/test-integration/snapshots/decodeMessage/nanox.68.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohEm^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.70.png b/test-integration/snapshots/decodeMessage/nanox.70.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|d(BYy*LNkluh; zc0{DNp{&RH1Aimrk#j5r9VaSxSvT@p0xv~Lk|eLhP(w$tv%g#_Qs}I(a}aPuvqoY> zQ~gG4ex=m;Ko-4Kas`DgYN!d>FXZ2&t|?V6!bW556yYG6JCr>Z51nb>2`Iu9a8%OA zze-axqpnk08zb84Io5n545w7lWJ&N z5)$aADo@#QgP2tuQ}928N41^wT^3HyktigMh(z=I^_kDZP5a}8;PX4X5}zCoKMQcC z921&r5Q#e$g?o~qbGZuEw@{rWGGap^0w+(dHKZLolOfJ0dYYvSnw z-gT_CzJCd8y#5G(z6-uH5hDUopQQAK>@Um4nx=iwC0u|)++zoYc+#8Nn+dnhK*>dV z??I@8=4=v`VLAo{+L3@30AEky1nE9jU|4+R6e1k0%TROAfOSITN&ThG!z_+vuNsPo zRw2j2r;g3GVk=)i%=Uh>{goscwk6}U9)q9n;l&x$L{Pw+{Nqj#{c)X zp&vpnK$0X$G7k|2S*1{_pbL|dz=^1vdLgO6Iz0BmHql+$&Nxoxvd@;V<>s8~b8W7K z)V0)wRATy!Gp7ZWNm(L1F;S8owtOsnAXgfbO{KDZ4ZS^H$+jN=oPC5oH%2V944Gub zEq|-moBQ(s>9m?oj}1rKER5E0p~93IK!;6Mnme^1RX&^; z^RLW=r6u&8gB=?JkJ!+!qm^6D;;vT&OLOxo2B*%!4rb?P+V1zVdkC|c!B>W$H*x0w ph#ldXncyxn52PEs~=B{?S;CHnG zgA|5#XLql}81wT-|LOv-5dh0*ZF7&?KlqJ+!qy&5f8y^cD1Y!6x(WXy5d#1K003~y zs=U;10-W$#idc@7?>{C|T2zzO7^7?#H!Av=&`y1&9JzWSq`HTI8%lS%lq4hRjq z>mz$a-C8k?uiCeY?)B3LCiRcU9njC^Pa25&nS(;kwK96nE)I~Vfj;b(*cp}N(zZU> z>rXfxuiIj-p?^&T6lz`Wk!o}ob6eM5V_KbJTjrCUa&AjQD&d1{5^8%LL0ZxeE^0oNt zwrcIQ>VRs$(vZ_rkNmu)mD1BAY9^|tBEZD|{Z@FNOHxhdRh@ExN!&>xTUA%|`s=)^ z?la;1Zp84Ojwg-`G9FmOb P00000NkvXXu0mjfw2uhZ$TBuT6o|qb#et-49t$zTw+E3>&&*uuTGoD6X zuhwNzSS-d9z;o|=DCdv|YdMmq+Tt4+JrhO30D?7#=?LNPEWA#^J_17Z?>k)(X shyefq0000000000000000D!;g2T~$t93KlqZ2$lO07*qoM6N<$f{9$#I{*Lx delta 481 zcmV<70UrL`1N#GzB!9w5L_t(|obB0LZiFxlKv7zCC)xj!W-t91DYE>E8w{eFd%lpz zcoGN!!f^lq006i9`s)s_*K2N%F*x5pm}lD*{eP2;Eaw3km-%B1w-5D> z6*Fg(qJNA=#_Wac&c@}tc>-i}D--KHVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h z6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_fkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9 zx9{N{-fmvQ6n}&>H~|grd1nTI=gOZ)qqyC+Pk2d0zM9&acCTel-V!&z61kk)hv=C- zIuMnb^`G`Ot|*=>Ek(#$YSlB!ci+x!yz9xK{!aTe)wLkCdVHiaOth@HeF*Gx-f|H9 z7Y&PXXO3)CK}FQsue&r~Y)PK8Y)QN37cqJJI?RM<<62RXhm7kRTGG56t!4@J&A`U3 zk2?BC%O}Yz=AZY5y4fV(HEo^fJ7toyY>BN|i2wiq00000000000000000000z-4{` X0;~r-LllU}00000NkvXXu0mjfdUo&} diff --git a/test-integration/snapshots/getPublicKey/nanox.08.png b/test-integration/snapshots/getPublicKey/nanox.08.png index d83595e463b8c9faf39e99aed28751de91dbb344..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a 100644 GIT binary patch delta 529 zcmV+s0`C3P2dM;*BYy$#NklBBqJy)U~P zNJu0mu|)s?0000000000P7p!}A*|No06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6 z?i>&)eBjsm;?4od#L4KctuG?~Rx5A@9fh1)U)-I5NMUZj)_?bnyObXQ0001B4LWZg zQwitmo+yioc0&C4*77QZFnDVh3nHiW)D^Y!i33i+-VLkUWYPKg_r)Ic3CO3!i{fJ; zLQB^py9!v8ug-%U3z$rvES;U?= z>4(9z2GKkRbl-KfM{25F*oJ8P__y)!4X;&?X53=F?toRVi~s-t00000KFS}&ZjBb; TH)Fd1015yANkvXXu0mjf_Feu` delta 959 zcmV;w13>(#1k?wRBYy*%NklFh0%F+39 ze1(vC2xvRUQ4~c{6h%=KxASkY{B>RZpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$ z`41`0ah_+29}+Qi#Geg4IC@L36wm*~@+K`@Z%iFlp9$ms*?-KA!S?2_UI&})7zU6+ z&J5ropQN>yH!aNZ+l*Us_}s_2<(Qp(dO}Q)(*YAffFis%(FE6Zt>=V32C!mfk&}Y% z%-sMHMoUB~B)aOkI|VgBpE2FZZ=9xwtyv^}sBP>3bC*Vrqt?D*RuTIXG7I7Kt?!#z zZbwFX8=ybd7k`YDCFije^f*~(mvtwvC2>gNCU{vZ~f#<#m zIX|WcrcnB{tD#Z9u>&R&1^KQ+|EdelZ9u(@=LNH#bAPA~m{7*OMS`pjjH#j5XUEUk z7PgKzN4@GU^-gVcVo@FN?0L_8sv)Iw{WxY;r`Kerj|IO@idY|08uP_Y)*)H+&8P;x zvE%%rjS%0JV~|w zlT_Fv=3t5adh+$gpK=Q#mFrEMHs-uDM`TV3Vr*gowGoniwpdxz6Lg-89B1T z!OqM8GR`5lnlUXXOwcQ6g7B1U;U`xiw~ydLU5<-Og#xz+29%{?D4;~dT!AT}GOWTd|t!NonFp~Kvxj}0Sm z_J21+sbr!$U;q?K<_?H+#UTm13tAT!O>YNx1k0^G1u*b?@i+{a?Eo{Ytjs>`#2ka- zi^PzXkiv|bQp-|ghc*2}{h7>5V0Hrqm=DRUIt*T$F;X+H>8_rH^@=pDC*xXpQEW&` znlQ_i=aQv}t$OutVUh<&a&=!nhOXupVK}@$>vhLbnL4cN_&M=`nYIM&0`e6O{w2a^ hQ4~c{6h-lO_y(tlRz-4OgvS5?002ovPDHLkV1g97)#m^J diff --git a/test-integration/snapshots/getPublicKey/nanox.09.png b/test-integration/snapshots/getPublicKey/nanox.09.png index 759123d386f973bb80ce804834ae54c90faa91cd..cbdc0a716eee4c7c2031ff28ccd9dba647040582 100644 GIT binary patch delta 363 zcmV-x0hIo$1BL^TB!5jwL_t(|obB3MZo)7Sh2d$%PQ3pmc`tpKHgbIdCsmm_(f_>w z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_g8}fKv6pCPT2pF*vouWLKd&Mu?ux|&sUov z3}DBkNlE|!0Kj$+whf3v*VXzu=BYB^pw-6 z>ovP9n!JIb=P z3`Z{ig?mN%HGhkE7&i>BPL7qJw{*4{A$L+?nVfg?_KtqmPc&KZ(^pj~JXs v49+7400000000000000000000V)_U7UKpg4NM$|%015yANkvXXu0mjfrX{{x diff --git a/test-integration/snapshots/getPublicKey/nanox.10.png b/test-integration/snapshots/getPublicKey/nanox.10.png index 09ddad6f846b0f5650dbf98d658f0c3cd8673e1a..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjl1eF7jB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV59$>^@FFCza|D{uxKg`8Sn+?{|(VQ#9003YOI&U6R z3FqscD2s}ALj3sF@+yQdcxx96BB%A#6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~ zOV=a23Rsk{&a#uv!Ck$e!iZXMBwcUYwzm!4e9nE-mfjdyRimrCUF`aP-Jn%8DZ^T%rx zua1}hyQ-oB-85$`r~~YkXJe#&k)ruyFMa161!vEI>*)WLYJbd(LJLm7kXU3{#GW|m zhrzT4(L4uq-*vP{YN}n>hG_fvxAE`|uT_s`++x1&fK{)I000000000!${)mTjTYcH SW4izV00{s|MNUMnLSTYwZ~hJd diff --git a/test-integration/snapshots/getPublicKey/nanox.11.png b/test-integration/snapshots/getPublicKey/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..6500f61da4df71316f8c91c681bd9c59622fbf95 100644 GIT binary patch delta 472 zcmV;}0Vn>I1M&lqB!9U{L_t(|ob8%Xj>I4cK;6yUr1w9PciE37#)wj@w93wV9}~wY zG9XUDh5!Hn00000007^@&uRt6i7}@3aU2UZnZcz4a?|H{bb~(!BH@D30Ly4?bC26U_>F+V)*elN;_oRa@P8P(3I8Jz0{{R30C3By zywq<3obXzTSdNwNKPFOIRFl;hqih#9D*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aI zBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VF zPdFW~+hVSvO@9OwYF+M;YIGNKTi0G=TAgBB=98UrZc9Td;e%`vYI_|)UkDBW0D$|% zj5imZ9K6ZHj{(I?neQ(;HfuKr7?&b0lb4<`ok>|x3z?~2CM%cvyX>;+sc5_MwfO3` zYVEb^fNH%6M& zGvWMh#PFWvH6FYVkOf8AsTVBu66P&BE0;$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVE8w{eFd%lpz zcoGN!!f^lq006i9`s)s_*K2N%F*x5pm}lD*{eP2;Eaw3km-%B1w-5D> z6*Fg(qJNA=#_Wac&c@}tc>-i}D--KHVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h z6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_fkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9 zx9{N{-fmvQ6n}&>H~|grd1nTI=gOZ)qqyC+Pk2d0zM9&acCTel-V!&z61kk)hv=C- zIuMnb^`G`Ot|*=>Ek(#$YSlB!ci+x!yz9xK{!aTe)wLkCdVHiaOth@HeF*Gx-f|H9 z7Y&PXXO3)CK}FQsue&r~Y)PK8Y)QN37cqJJI?RM<<62RXhm7kRTGG56t!4@J&A`U3 zk2?BC%O}Yz=AZY5y4fV(HEo^fJ7toyY>BN|i2wiq00000000000000000000z-4{` X0;~r-LllU}00000NkvXXu0mjfqs;I! delta 472 zcmV;}0Vn?Z1M&lqB!9U{L_t(|ob8%Xj>I4cK;6yUr1w9PciE37#)wj@w93wV9}~wY zG9XUDh5!Hn00000007^@&uRt6i7}@3aU2UZnZcz4a?|H{bb~(!BH@D30Ly4?bC26U_>F+V)*elN;_oRa@P8P(3I8Jz0{{R30C3By zywq<3obXzTSdNwNKPFOIRFl;hqih#9D*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aI zBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VF zPdFW~+hVSvO@9OwYF+M;YIGNKTi0G=TAgBB=98UrZc9Td;e%`vYI_|)UkDBW0D$|% zj5imZ9K6ZHj{(I?neQ(;HfuKr7?&b0lb4<`ok>|x3z?~2CM%cvyX>;+sc5_MwfO3` zYVEb^fNH%6M& zGvWMh#PFWvH6FYVkOf8AsTVBu66P&BE0;)y1JnnQBYy*%NklFh0%F+39 ze1(vC2xvRUQ4~c{6h%=KxASkY{B>RZpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$ z`41`0ah_+29}+Qi#Geg4IC@L36wm*~@+K`@Z%iFlp9$ms*?-KA!S?2_UI&})7zU6+ z&J5ropQN>yH!aNZ+l*Us_}s_2<(Qp(dO}Q)(*YAffFis%(FE6Zt>=V32C!mfk&}Y% z%-sMHMoUB~B)aOkI|VgBpE2FZZ=9xwtyv^}sBP>3bC*Vrqt?D*RuTIXG7I7Kt?!#z zZbwFX8=ybd7k`YDCFije^f*~(mvtwvC2>gNCU{vZ~f#<#m zIX|WcrcnB{tD#Z9u>&R&1^KQ+|EdelZ9u(@=LNH#bAPA~m{7*OMS`pjjH#j5XUEUk z7PgKzN4@GU^-gVcVo@FN?0L_8sv)Iw{WxY;r`Kerj|IO@idY|08uP_Y)*)H+&8P;x zvE%%rjS%0JV~|w zlT_Fv=3t5adh+$gpK=Q#mFrEMHs-uDM`TV3Vr*gowGoniwpdxz6Lg-89B1T z!OqM8GR`5lnlUXXOwcQ6g7B1U;U`xiw~ydLU5<-Og#xz+29%{?D4;~dT!AT}GOWTd|t!NonFp~Kvxj}0Sm z_J21+sbr!$U;q?K<_?H+#UTm13tAT!O>YNx1k0^G1u*b?@i+{a?Eo{Ytjs>`#2ka- zi^PzXkiv|bQp-|ghc*2}{h7>5V0Hrqm=DRUIt*T$F;X+H>8_rH^@=pDC*xXpQEW&` znlQ_i=aQv}t$OutVUh<&a&=!nhOXupVK}@$>vhLbnL4cN_&M=`nYIM&0`e6O{w2a^ hQ4~c{6h-lO_y(tlRz-4OgvS5?002ovPDHLkV1h(B);ItF delta 482 zcmV<80UiF-2m1q%BYy$HNklXl4dXc7%8&+iW>}~ntQ&G z$9NJ50m5+r0002D`}*q+uh(mCk1<*s)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ z1u@2Ow`auW&xp;pr@<{a(~^99xK;A z<`p1C6N}^y@H02Vmbs`>r2gQv_xN!39*|Eg`JL0PJagQ083m&|?UMYvd>1v&8fT$P zw72i!9o}wU!+#WnGdKYa?s;bhfal7eN29piwoiCTM82BZns%>cPTmqXzY@8e+lT0x zJvtDTn)RRdHm)e1D=kIHT58oZ%6H$+ZM^Hrq5e+$G}W~rwR(J{GfcFsxP1uhbKY_g z{1*+2ac7QfR6#}5+ONAbUu;R9vusJb<`*$}`#Q{oXj|h^k%x@y8(Px59Ia*v_07P> zt&ckTN6RP4E9Rf~hPv4#-!*NW=sRVSvuug2S&0Au000000000000000000000KjE_ Y0RpTCJVO+S$N&HU07*qoM6N<$f_1s@82|tP diff --git a/test-integration/snapshots/getPublicKey/nanox.14.png b/test-integration/snapshots/getPublicKey/nanox.14.png index d83595e463b8c9faf39e99aed28751de91dbb344..759123d386f973bb80ce804834ae54c90faa91cd 100644 GIT binary patch delta 402 zcmV;D0d4-&2de{+BYy#MNklQ31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a? zvr9ipGIfTlEC;q|)3<-i({l1m9c!PhvqVc>YRicY1G8>F{D12#z_a6*W3cnN0`!#A zsOvSmESkKN?USesuj8{ku&?RtqS5mSz>N_sPSN+)%)gXkSqsfY`cXwR@o% zMlD1dnwG|LKeW39Rg0Ku!l}P;dMju95Z)V}-UkCPyhT$cQC;85s?yw?D63FkyXptI zZ45^)|Al)+`hPWxco;VfuTGAYpyRyKmh_);$#DSqVb-Ui2MwQPCU(U=W*aQK?hco~ zl>&+PJHY-9(%1JnnQBYy*%NklFh0%F+39 ze1(vC2xvRUQ4~c{6h%=KxASkY{B>RZpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$ z`41`0ah_+29}+Qi#Geg4IC@L36wm*~@+K`@Z%iFlp9$ms*?-KA!S?2_UI&})7zU6+ z&J5ropQN>yH!aNZ+l*Us_}s_2<(Qp(dO}Q)(*YAffFis%(FE6Zt>=V32C!mfk&}Y% z%-sMHMoUB~B)aOkI|VgBpE2FZZ=9xwtyv^}sBP>3bC*Vrqt?D*RuTIXG7I7Kt?!#z zZbwFX8=ybd7k`YDCFije^f*~(mvtwvC2>gNCU{vZ~f#<#m zIX|WcrcnB{tD#Z9u>&R&1^KQ+|EdelZ9u(@=LNH#bAPA~m{7*OMS`pjjH#j5XUEUk z7PgKzN4@GU^-gVcVo@FN?0L_8sv)Iw{WxY;r`Kerj|IO@idY|08uP_Y)*)H+&8P;x zvE%%rjS%0JV~|w zlT_Fv=3t5adh+$gpK=Q#mFrEMHs-uDM`TV3Vr*gowGoniwpdxz6Lg-89B1T z!OqM8GR`5lnlUXXOwcQ6g7B1U;U`xiw~ydLU5<-Og#xz+29%{?D4;~dT!AT}GOWTd|t!NonFp~Kvxj}0Sm z_J21+sbr!$U;q?K<_?H+#UTm13tAT!O>YNx1k0^G1u*b?@i+{a?Eo{Ytjs>`#2ka- zi^PzXkiv|bQp-|ghc*2}{h7>5V0Hrqm=DRUIt*T$F;X+H>8_rH^@=pDC*xXpQEW&` znlQ_i=aQv}t$OutVUh<&a&=!nhOXupVK}@$>vhLbnL4cN_&M=`nYIM&0`e6O{w2a^ hQ4~c{6h-lO_y(tlRz-4OgvS5?002ovPDHLkV1gKW)#v~K diff --git a/test-integration/snapshots/getPublicKey/nanox.15.png b/test-integration/snapshots/getPublicKey/nanox.15.png index 759123d386f973bb80ce804834ae54c90faa91cd..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a 100644 GIT binary patch delta 528 zcmV+r0`L8+1E~a%B!BQpL_t(|ob8%XlB6IEK(kYG6YqZ{?lK=#Q7l1-ieU7;FS{E^ zNF*k)MF0Q*000000000^5JCtctk&WHKdTiOi7(Sf-s6B|{cYRUYH|o?4%mw@POUHQ z91tmd;Me-%&H>59$>^@FFCza|D{uxKg`8Sn+?{|(VQ#9003YOI&U6R z3FqscD2s}ALj3sF@+yQdcxx96BB%A#6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~ zOV=a23Rsk{&a#uv!Ck$e!iZXMBwcUYwzm!4e9nE-mfjdyRimrCUF`aP-Jn%8DZ^T%rx zua1}hyQ-oB-85$`r~~YkXJe#&k)ruyFMa161!vEI>*)WLYJbd(LJLm7kXU3{#GW|m zhrzT4(L4uq-*vP{YN}n>hG_fvxAE`|uT_s`++x1&fK{)I000000000!${)mTjTYcH SW4izV00{s|MNUMnLSTZI&;BF; delta 401 zcmV;C0dD@O1gis(B!6;AL_t(|obB0Lj>8}fKv6pCPT2pF*vouWLKd&Mu?ux|&sUov z3}DBkNlE|!0Kj$+whf3v*VXzu=BYB^pw-6 z>ovP9n!JIb=P z3`Z{ig?mN%HGhkE7&i>BPL7qJw{*4{A$L+?nVfg?_KtqmPc&KZ(^pj~JXs v49+7400000000000000000000V)_U7UKpg4NM$|%015yANkvXXu0mjf-iW?` diff --git a/test-integration/snapshots/getPublicKey/nanox.16.png b/test-integration/snapshots/getPublicKey/nanox.16.png index 09ddad6f846b0f5650dbf98d658f0c3cd8673e1a..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjl1eF7jB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV59$>^@FFCza|D{uxKg`8Sn+?{|(VQ#9003YOI&U6R z3FqscD2s}ALj3sF@+yQdcxx96BB%A#6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~ zOV=a23Rsk{&a#uv!Ck$e!iZXMBwcUYwzm!4e9nE-mfjdyRimrCUF`aP-Jn%8DZ^T%rx zua1}hyQ-oB-85$`r~~YkXJe#&k)ruyFMa161!vEI>*)WLYJbd(LJLm7kXU3{#GW|m zhrzT4(L4uq-*vP{YN}n>hG_fvxAE`|uT_s`++x1&fK{)I000000000!${)mTjTYcH SW4izV00{s|MNUMnLSTYwZ~hJd diff --git a/test-integration/snapshots/getPublicKey/nanox.17.png b/test-integration/snapshots/getPublicKey/nanox.17.png index a7a8740548d2608032872a36bbf128b89b69847d..6500f61da4df71316f8c91c681bd9c59622fbf95 100644 GIT binary patch delta 472 zcmV;}0Vn>I1M&lqB!9U{L_t(|ob8%Xj>I4cK;6yUr1w9PciE37#)wj@w93wV9}~wY zG9XUDh5!Hn00000007^@&uRt6i7}@3aU2UZnZcz4a?|H{bb~(!BH@D30Ly4?bC26U_>F+V)*elN;_oRa@P8P(3I8Jz0{{R30C3By zywq<3obXzTSdNwNKPFOIRFl;hqih#9D*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aI zBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VF zPdFW~+hVSvO@9OwYF+M;YIGNKTi0G=TAgBB=98UrZc9Td;e%`vYI_|)UkDBW0D$|% zj5imZ9K6ZHj{(I?neQ(;HfuKr7?&b0lb4<`ok>|x3z?~2CM%cvyX>;+sc5_MwfO3` zYVEb^fNH%6M& zGvWMh#PFWvH6FYVkOf8AsTVBu66P&BE0;$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVXl4dXc7%8&+iW>}~ntQ&G$9NJ50m5+r0002D`}*q+uh(mCk1<*s z)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ1u@2Ow`auW&xp;pr@<{a(~^99xK;A< zn$GjxU+d@iyO?L&6#bKoEaw3km-%B1w-5D>6*Fg(qJNA=#_Wac&c@}tc>-i}D--KH zVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_f zkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9x9{N{-fmvQ6ofN40S)eXX9j@h%AZH0 zxZSo-cu7RQn%bInuVqf&5;wmRxt!aF=$Sn_5S5zspY}GcD4r`VMaWue)icU>-_C8k z>&c=1PWv>~wIH>6e55l>w5+&&2<&s-auEC%4U2JSj%-vxMbz4_yEI>HNuIN8NxSA3 zF?sts%!Fv;QIUs?>l<3qyd14&3H8mu#;uP!`bWzr$t&ic_lCOJB;Pe{o#;DdlCx}y xtyzfx00000000000000000000006*cegOik2RuU*h{yl{002ovPDHLkV1fat@qGXQ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.19.png b/test-integration/snapshots/getPublicKey/nanox.19.png new file mode 100644 index 0000000000000000000000000000000000000000..d83595e463b8c9faf39e99aed28751de91dbb344 GIT binary patch literal 980 zcmV;_11tQAP)Fh0%F+39e1(vC2xvRUQ4~c{6h%=KxASkY{B>RZ zpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$`41`0ah_+29}+Qi#Geg4IC@L36wm*~ z@+K`@Z%iFlp9$ms+02f?_U5l%2b=8}29QF|4B#Q3q_vkfEzI%Tj9YT}+{d})n4Nrj zLQIg;0TV%hBD^=z1lM(~=Y&26uwrGAlY;Kd-2f3rOGGIoy6U+*1vNmQG2O{;oTi7Z zStNa^ZR`MZmqw1G*1lm@5&IJ|3*q#w@0(d}M@D)Zpg-0ZjFctku@v+;S!b7ZC$A-O zQ&bd1@k(MfRO_An{?b!Jc_D>VX-Gi{)M6fMdq3f`2%RIW0vHc~H^uxKWH! zuFs~-$yXODdL~=cP!ln4KG$GW>R*B9z6d!#rU#}_`n0Q|QNOVRCK3htu0#K-3(jpo zy^QAtvz~LP4wz8Jy+wko4veXx*JsDi*%r2rH%GndF7-}rbYf8*@a%cde5xU(bNx7G zR;SlwrjG@`PKsC`QyTNdPSzn=^v$RSzO)AD%DkFv=3t5adh+$gpK=Q#mFrEMHs-u zDM`TV3Vr*gowGoniwpdxz6Lg-89B1T!OqM8GR`5lnlUXXOwcQ6gvz6iVg}h;zju3A+ng7Z*)$2X_R^ ztvv-W@O$w%44CZzGpnr3KJCODgW`+Ckd=_ajG9u*Qe=lU{X_kk%u8T)0|l55$*ejI zUYjveGq35co`m&^G_5D&T6j@xNJ^S8%a!MnrHHM1^=@I32S;*sUq6Pf<`-eSKkIeJ zQJFfd>-ahGftj`h?E>-@4*n&=XHgVIQ4~e-clZXUh*m{%Uxdd10000Q31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a?vr9ipGIfTlEC;q|)3<-i({l1m9c!Ph zvqVc>YRicY1G8>F{Oc^hv*VXzu=BYB^pw-6>ovP9n!JIb=P3`Z{ig?mN%HH&x{Hw>>%j+LO}ywaBR zpK{4@0Qh0nr=bT8pJgU?#XV*lEW7Rwm%o()iT69e{to1;#0$Vo(7*)Sgcq-?BCdXH zj_(BzYD-Yundl#dey`Z0kB-$piPb-k7@S88&Lai@0000000000000000001D`Um%3 V7^IU(Wj+7^002ovPDHLkV1ne(z_I`U literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.21.png b/test-integration/snapshots/getPublicKey/nanox.21.png new file mode 100644 index 0000000000000000000000000000000000000000..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a GIT binary patch literal 553 zcmV+^0@nSBP)BBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanox.22.png b/test-integration/snapshots/getPublicKey/nanox.22.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1gMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.09.png b/test-integration/snapshots/signTransactionAddaddress/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.13.png b/test-integration/snapshots/signTransactionAddaddress/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.18.png b/test-integration/snapshots/signTransactionAddaddress/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.20.png b/test-integration/snapshots/signTransactionAddaddress/nanox.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.24.png b/test-integration/snapshots/signTransactionAddaddress/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.29.png b/test-integration/snapshots/signTransactionAddaddress/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.30.png b/test-integration/snapshots/signTransactionAddaddress/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.32.png b/test-integration/snapshots/signTransactionAddaddress/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.36.png b/test-integration/snapshots/signTransactionAddaddress/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.41.png b/test-integration/snapshots/signTransactionAddaddress/nanox.41.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.42.png b/test-integration/snapshots/signTransactionAddaddress/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.43.png b/test-integration/snapshots/signTransactionAddaddress/nanox.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.45.png b/test-integration/snapshots/signTransactionAddaddress/nanox.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.49.png b/test-integration/snapshots/signTransactionAddaddress/nanox.49.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.54.png b/test-integration/snapshots/signTransactionAddaddress/nanox.54.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.55.png b/test-integration/snapshots/signTransactionAddaddress/nanox.55.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.56.png b/test-integration/snapshots/signTransactionAddaddress/nanox.56.png new file mode 100644 index 0000000000000000000000000000000000000000..57361d73eb92d15d2961836d9eecd0ad84eb9d14 GIT binary patch literal 587 zcmV-R0<`^!P)zY{Dl8MiNDMtYJ>n22h0+6)rk<=&^TUj6z2c{0001%^RsfY5W>~)-b+2> z^1DUF#aOLJ!{3@|)?l)0%eMYvj{-sn-uv{4i~X@(T1nd9=#1@jit4Z2^6f79-8+4T z|KNlzF2^^dT{>v|s(LqsQ0i$OXDJ|jXpd2LJ|*gYB^wlw{>ii*9mwom7>w1nYzxBO z&uoV;8W}vBgR-D2W=e`N^gL4TyVCW)iKzNVo>WdZ3!F``&2IcsuxMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.59.png b/test-integration/snapshots/signTransactionAddaddress/nanox.59.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.04.png b/test-integration/snapshots/signTransactionAddnft/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.07.png b/test-integration/snapshots/signTransactionAddnft/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.09.png b/test-integration/snapshots/signTransactionAddnft/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.13.png b/test-integration/snapshots/signTransactionAddnft/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..59e91efe8433df4e15c9f7099888a588bb033f4d GIT binary patch literal 397 zcmV;80doF{P)?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.14.png b/test-integration/snapshots/signTransactionAddnft/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.17.png b/test-integration/snapshots/signTransactionAddnft/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..15ccd7a8469943e795e0044b1869e78c36178dd7 GIT binary patch literal 596 zcmV-a0;~OrP)q?fAdX|)OMVOyU6H>F59kz4SmmD+$ z;)@_Oah+b#cJ+ah>!}vMaZm@O7kV0_aJUTNZ?6H;tj{%HU3sO6ce?(}18YE-sOo?( zdN=WA*Yr#W)Ld(()G>~pN7`#<`F<~SG|gV=E)`up0~!`_&?5XlImHF7rgm{S832GK z(NKE;C$vI9dQ=iW-siUAlU{}1cF<)5sw-TbvCH$jAj>E&BWwD!=uWJB&MLE50Sojj-#s^jo z%I?#0wQI5@_Py`JtiDa9XtP+EFUgDspM#hsnkWgI=N;qErvC1gMM*=MSF)>^K7xT@ zq%Jf@C5>{$mc1Cp7_AZi8Q`w!HmK_{KEIqabq?o!3%6L1*UkD{W$IW^_*rL{#r%r= z4BS?qxBh%I)I$ByD*FvDkKFvrf{u%Iw;7;B6Lq1Kz_MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.20.png b/test-integration/snapshots/signTransactionAddnft/nanox.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.24.png b/test-integration/snapshots/signTransactionAddnft/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..59e91efe8433df4e15c9f7099888a588bb033f4d GIT binary patch literal 397 zcmV;80doF{P)?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.25.png b/test-integration/snapshots/signTransactionAddnft/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.28.png b/test-integration/snapshots/signTransactionAddnft/nanox.28.png new file mode 100644 index 0000000000000000000000000000000000000000..15ccd7a8469943e795e0044b1869e78c36178dd7 GIT binary patch literal 596 zcmV-a0;~OrP)q?fAdX|)OMVOyU6H>F59kz4SmmD+$ z;)@_Oah+b#cJ+ah>!}vMaZm@O7kV0_aJUTNZ?6H;tj{%HU3sO6ce?(}18YE-sOo?( zdN=WA*Yr#W)Ld(()G>~pN7`#<`F<~SG|gV=E)`up0~!`_&?5XlImHF7rgm{S832GK z(NKE;C$vI9dQ=iW-siUAlU{}1cF<)5sw-TbvCH$jAj>E&BWwD!=uWJB&MLE50Sojj-#s^jo z%I?#0wQI5@_Py`JtiDa9XtP+EFUgDspM#hsnkWgI=N;qErvC1gMM*=MSF)>^K7xT@ zq%Jf@C5>{$mc1Cp7_AZi8Q`w!HmK_{KEIqabq?o!3%6L1*UkD{W$IW^_*rL{#r%r= z4BS?qxBh%I)I$ByD*FvDkKFvrf{u%Iw;7;B6Lq1Kz_oVdGs_+$U&~tZX7H<}ZV^IQ)(0Cp;Ca2&G+Iy5+O&?5XlIb{m+rkvuKX8-_P zvZ3|_&Q**5^eid!c$+NXlWtwDaBxZhsw?z*2RI9?+l^`j22Nz?k1EvvC{SIkcMhXsk)D*HR2Bdg8t0;F{qpZ))3ECAu+p&7s`prg0RR91j%UT$(CUVE$}U%lJ}pPP z1}(A2zMFA9O{HtIv@&kVh=w^EF-ta466(9K<{quo);zK(X-J=y+Eto9f{tXQE^KBc z|MW*eY0GX#RvsKc^GCpRRhd&~ms9el<>U5L%3$l$azV3>wPtUUy`fW@`pNuA=T=?W zpAEH8{x09XH#Js!n=ljr0000000000000000N`Kp Y4bwOH@VFzT5C8xG07*qoM6N<$g3sX+u>b%7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.30.png b/test-integration/snapshots/signTransactionAddnft/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.32.png b/test-integration/snapshots/signTransactionAddnft/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..80e70f7e10418dd0132e1ee1dc5340aee1f79430 GIT binary patch literal 559 zcmV+~0?_@5P)Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.05.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.05.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.06.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.06.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.09.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.10.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.10.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.15.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.15.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.18.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.22.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.22.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8a2bbd23908360c9469609a3dfb1da10aa9566 GIT binary patch literal 451 zcmV;!0X+VRP)3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png new file mode 100644 index 0000000000000000000000000000000000000000..80e70f7e10418dd0132e1ee1dc5340aee1f79430 GIT binary patch literal 559 zcmV+~0?_@5P)Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.24.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.25.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.34.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.34.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.42.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..80e70f7e10418dd0132e1ee1dc5340aee1f79430 GIT binary patch literal 559 zcmV+~0?_@5P)Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.43.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.43.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.47.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.47.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.48.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.48.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.49.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.49.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.56.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.56.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8a2bbd23908360c9469609a3dfb1da10aa9566 GIT binary patch literal 451 zcmV;!0X+VRP)3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png new file mode 100644 index 0000000000000000000000000000000000000000..80e70f7e10418dd0132e1ee1dc5340aee1f79430 GIT binary patch literal 559 zcmV+~0?_@5P)Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.62.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.62.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.63.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.63.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.67.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.67.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.04.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.09.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfYdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.101.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.101.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.102.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.102.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.107.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.107.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.112.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.112.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.114.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.114.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.115.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.115.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.117.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.117.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.118.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.118.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.119.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.119.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.12.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.12.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.121.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.121.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.125.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.125.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.13.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.130.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.130.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.132.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.132.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.133.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.133.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.135.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.135.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.136.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.136.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.137.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.137.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.138.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.138.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.139.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.139.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.14.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.144.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.144.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.149.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.149.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.150.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.150.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.151.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.151.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.152.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.152.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.154.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.154.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.155.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.155.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.156.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.156.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.157.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.157.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.158.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.158.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.159.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.159.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.164.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.164.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.169.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.169.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.171.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.171.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.172.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.172.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.174.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.174.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.175.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.175.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.176.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.176.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.177.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.177.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.178.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.178.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.179.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.179.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.185.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.185.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.19.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.19.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.190.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.190.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.192.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.192.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.193.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.193.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.195.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.195.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.196.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.196.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.197.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.197.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.198.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.198.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.199.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.199.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.20.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{DgdcQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.207.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.207.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.212.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.212.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.214.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.214.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.215.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.215.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.217.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.217.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.218.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.218.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.219.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.219.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.22.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.22.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.221.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.221.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.222.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.222.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.226.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.226.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.23.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.23.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.235.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.235.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.237.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.237.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.238.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.238.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.24.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.240.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.240.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.241.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.241.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.242.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.242.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.243.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.243.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.244.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.244.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.245.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.245.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.249.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.249.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.25.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.254.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.254.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.259.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.259.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.260.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.260.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.261.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.261.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.262.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.262.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.264.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.264.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.265.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.265.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.266.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.266.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.267.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.267.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.268.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.268.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.269.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.269.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.270.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.270.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f2c6765c64985f83c79d0b4c0caba5f557d442 GIT binary patch literal 398 zcmV;90df9`P)IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.273.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.273.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.274.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.274.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.275.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.275.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.279.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.279.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.284.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.284.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.286.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.286.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.287.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.287.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.289.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.289.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.29.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f011581329e09eb1d9af2385f2c340107c6c32 GIT binary patch literal 462 zcmV;<0WtoGP)x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ravb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.291.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.291.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.292.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.292.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.293.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.293.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.294.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.294.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.298.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.298.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.299.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.299.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.30.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.305.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.305.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.31.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.31.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.310.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.310.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.312.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.312.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.313.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.313.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.315.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.315.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.316.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.316.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.317.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.317.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.318.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.318.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.319.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.319.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.32.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{DgdcQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.324.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.324.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.325.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.325.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.326.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.326.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.327.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.327.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%0000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.332.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.332.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.337.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.337.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.339.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.339.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.34.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.34.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.342.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.342.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.343.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.343.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.344.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.344.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.345.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.345.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.346.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.346.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.347.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.347.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.351.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.351.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.352.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.352.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.353.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.353.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.354.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.354.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.356.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.356.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.36.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.360.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.360.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.365.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.365.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.367.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.367.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.368.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.368.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.37.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.37.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.371.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.371.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.372.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.372.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.373.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.373.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.374.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.374.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.375.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.375.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.379.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.379.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.38.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.38.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.380.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.380.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.381.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.381.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.382.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.382.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.384.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.384.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.389.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.389.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.390.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.390.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.394.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.394.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.396.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.396.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.397.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.397.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.399.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.399.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.40.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.40.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000vb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.401.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.401.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.402.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.402.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.403.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.403.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.404.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.404.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.408.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.408.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.409.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.409.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.41.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.41.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.411.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.411.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.413.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.413.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~U!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.419.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.419.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdcx1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.424.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.424.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.426.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.426.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.427.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.427.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.429.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.429.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.43.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^vb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.431.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.431.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.432.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.432.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.433.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.433.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.434.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.434.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.438.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.438.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.439.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.439.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.44.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.44.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.440.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.440.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.441.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.441.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.443.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.443.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.45.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.455.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.455.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.457.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.457.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.458.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.458.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.46.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.46.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfYdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.461.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.461.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.462.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.462.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.463.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.463.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.464.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.464.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.465.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.465.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.469.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.469.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.47.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.47.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.471.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.471.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.472.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.472.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.474.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.474.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.478.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.478.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.482.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.482.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.487.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.487.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.489.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.489.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.49.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.49.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.490.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.490.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.492.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.492.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.493.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.493.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.494.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.494.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.495.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.495.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.496.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.496.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.497.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.497.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.501.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.501.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.502.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.502.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.503.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.503.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.504.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.504.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.506.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.506.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.51.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.51.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.510.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.510.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!T!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.515.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.515.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.52.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.52.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.520.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.520.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.522.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.522.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.523.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.523.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.525.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.525.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.526.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.526.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.527.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.527.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.528.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.528.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.529.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.529.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.53.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.53.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.534.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.534.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.535.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.535.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.536.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.536.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.537.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.537.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.539.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.539.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vdL z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.540.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.540.png new file mode 100644 index 0000000000000000000000000000000000000000..f88daeea4071fc398530f860c9f55de3082f551e GIT binary patch literal 396 zcmV;70dxL|P)5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.543.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.543.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.545.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.545.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.549.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.549.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.554.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.554.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.556.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.556.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.557.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.557.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.559.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.559.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.56.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.56.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f011581329e09eb1d9af2385f2c340107c6c32 GIT binary patch literal 462 zcmV;<0WtoGP)x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ravb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.561.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.561.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.562.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.562.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.563.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.563.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.564.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.564.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.568.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.568.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.569.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.569.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.57.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.57.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.571.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.571.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.573.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.573.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.577.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.577.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.579.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.579.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.58.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.58.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.584.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.584.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.589.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.589.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500006P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.591.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.591.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.592.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.592.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.594.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.594.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.595.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.595.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.596.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.596.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.597.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.597.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.598.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.598.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.599.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.599.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfIH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.603.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.603.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.604.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.604.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.605.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.605.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.606.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.606.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.608.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.608.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~U*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|mGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.612.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.612.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.614.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.614.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.615.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.615.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.62.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.62.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.625.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.625.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.627.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.627.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.628.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.628.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.63.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.63.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.630.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.630.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.631.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.631.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.632.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.632.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.633.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.633.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.634.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.634.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.635.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.635.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.639.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.639.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.64.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.64.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500008VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.641.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.641.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.642.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.642.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.644.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.644.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.648.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.648.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.65.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.65.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.650.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.650.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.651.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.651.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.657.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.657.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.660.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.660.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.662.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.662.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.664.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.664.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.665.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.665.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.667.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.667.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.668.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.668.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.669.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.669.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.67.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.67.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM00001+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.671.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.671.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.672.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.672.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.676.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.676.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.677.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.677.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.678.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.678.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.679.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.679.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.680.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.680.png new file mode 100644 index 0000000000000000000000000000000000000000..748523e82eee4d16290527c5c71e7c3c2fdc1e9b GIT binary patch literal 393 zcmV;40e1e0P)3!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.681.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.681.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.685.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.685.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.687.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.687.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.688.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.688.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.690.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.690.png new file mode 100644 index 0000000000000000000000000000000000000000..995bb96e78661b4f258906b6b4f1606641299ac0 GIT binary patch literal 393 zcmV;40e1e0P)Q31IlDwDssDvzV5qW`4@A*nmN+O$3aGDYT000000Di@5^$naSBIP*e zyzox02$=vKdM#oa;w7L&Ux(Xl4B>C}4V+X3I$YeN5)nQB^go6W^$EZ---da_;h*9@ z0adIchW;boDk!lGbz+Z=7ytkOu)w5!!1Xn|h}^!|?^L#T+gMaJ%ZokSu5{iWJncQ_ zGNx((_TRMVmU2RM-098j8=I90NGcp=Sk3sFstHQ>&|b@xc?p<22FK@+HhIt7k!@ZA zCJ(^D%T>`IeBf>r^?krCo>*BOwfHxn$T_!jly218#_H>4Z>A`})c^nhoALXvh!a(W zAF6InaHW8{u)2AamyOt<{WeO$5|B0u{fFxWoEz_JtDE~6tO5<5;5H3gRYN^gH;-~X n1@)QXrn(6L000000KoPS?Y-SzS3B~Q00000NkvXXu0mjf0@bdo literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.691.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.691.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.695.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.695.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.70.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.70.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.702.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.702.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.703.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.703.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.705.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.705.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.706.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.706.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.707.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.707.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.708.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.708.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.709.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.709.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.71.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.71.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f011581329e09eb1d9af2385f2c340107c6c32 GIT binary patch literal 462 zcmV;<0WtoGP)x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.714.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.714.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.715.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.715.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.716.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.716.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.717.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.717.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.719.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.719.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vdMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.723.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.723.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.725.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.725.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.726.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.726.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000Q31IlDwDssDvzV5qW`4@A*nmN+O$3aGDYT000000Di@5^$naSBIP*e zyzox02$=vKdM#oa;w7L&Ux(Xl4B>C}4V+X3I$YeN5)nQB^go6W^$EZ---da_;h*9@ z0adIchW;boDk!lGbz+Z=7ytkOu)w5!!1Xn|h}^!|?^L#T+gMaJ%ZokSu5{iWJncQ_ zGNx((_TRMVmU2RM-098j8=I90NGcp=Sk3sFstHQ>&|b@xc?p<22FK@+HhIt7k!@ZA zCJ(^D%T>`IeBf>r^?krCo>*BOwfHxn$T_!jly218#_H>4Z>A`})c^nhoALXvh!a(W zAF6InaHW8{u)2AamyOt<{WeO$5|B0u{fFxWoEz_JtDE~6tO5<5;5H3gRYN^gH;-~X n1@)QXrn(6L000000KoPS?Y-SzS3B~Q00000NkvXXu0mjf0@bdo literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.729.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.729.png new file mode 100644 index 0000000000000000000000000000000000000000..405f78a727ecb3c2acbc898c36f8f56220c24b4b GIT binary patch literal 387 zcmV-}0et?6P)Nkl=qY00000002J4m-hwi6Op!E zYjwPm6Dbp*L$75_L%syG=<9G#cc$>|eF2-gK&Oj)RwAP3pY_WWvW@__x$5Q_yMM_$ z0=igd4E>*ccR_{Q&>-%y5CZ@J02~;t1J3W+Mda-_`-{r<-4+&I&GN8?w`+}$8~^Rc z<}_1X2V6gC(R6q++8NK7WdH#H03;RnUlAJx)DNm| z8aOGSI#xGd6=fmzq_9QJZOIZ)9)&*LgcCXe8~xqAy7{Wm3CI$}6I4T;g&qNG<2*xk h6951J0002MrC;--$>sOB1$Y1e002ovPDHLkV1m74rfvWL literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.73.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.73.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.734.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.734.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.738.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.738.png new file mode 100644 index 0000000000000000000000000000000000000000..e685fb90ecf7ca3783d57d20b7e4d28dabb17e37 GIT binary patch literal 412 zcmV;N0b~A&P)?Yj*NWIG*%$f$!pqtRL|9euS8)-$LZYco(00000;9opuH{d!E(e0e` z#Fl&`WCCpHt%zxemjI2v4R`Zk2+!FKxTpwpxVT3pBKG-nyc;|0BtpDVkMMPJ^^_v+M z%vaPs;Gp`Z+x-Xq@K_DiJ9@jjXE*0wP9H(b$6Yy1K=TQ{BzFn0BWf~ZtbH79C+Hwt zoNUhl004kb<9-!EO=dDbH5pfnyUDd6`DpH@s;1UclB+K)zCsUnwqX&cN|p5q2OB+C z^&cD@`k|$W3v~jmF5EY4G!r>&lp2}#VpQ+s!?T z)C;m6=_YF~{pXc&`$ROuLV@rnx(8Uw*QaJT|H*dR%AgzREu(ivD1ZOdONJszF7cO{ z515rW7q;YOxRp46UnnirpO;|()wOHk?+d(BCzkzQJEd=-fU~&>$X^X5_byr9-g11| Qrfndur>mdKI;Vst0MKlTga7~l literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.74.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.74.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.744.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.744.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.79.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.79.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.81.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.81.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.82.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.82.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.84.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.84.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.85.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.85.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.86.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.86.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.90.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.90.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.95.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.95.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.97.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.97.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.98.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.98.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.01.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iAcjEq+#9sR0sRv`oAOwx|-Y3nNb_fGwFo}C+!O)v<_v_NralBc7D?&Jq!d_N=N)a!NAdyGh ze4~AB1eaG7$F;PLVRI2iWz z(MYSxcnS_?T)DEluqJ#-VRtUVXSe+tq+H2~@z(~%i^qE(qUXYg)DWr?d8FjDbN_j`}{+oB*3PTrR;j_Bit|O@5 zjPFo5Is=Sy)Go`YpLP*GE3cNSBfpozcj5AC()fVTNa!W#4MhBbMsSXm=|(XC00000 i0000000000!TAMO;pcw$>T0q80000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.08.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.08.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iFmVh>;!A7^8^flkoA) z3!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaFLOwd(L@nUN+(~O+_ppmM7iho5uKe zJa_u;!m?kN3f;FZqeHb#y5+KD-ClpoZhMeB$bu|vw|5kFt948CCibJjbOf}W{X|Oa zs?%+bB+KsaJO!O-6t#A_R^n^Fwnu#*@GCjLpIiAL(-AOwlQq*;4~nvWR^{EAk645O z006GU;j4&p&nI_RN-k)#l~QN&Gu|8IR=3S$Z+@!0uTJ+|E@{!HJPGR@`@VH9s61_M zP777`rfrob0ylH6N6b9Mj=Ztbs{J;-JCjVNpk1b*i)KS-dSz9oyFSmHD1Bc86!6g17;GCqcuR%Up>wr2LJ#70002MJ-q>cYG}cQfkmPK0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.18.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=icl%Yb%;L1Uy@2wmnh$4YtK0Xcr00000IF2Kwlu~-SOAtO* zJ0Pj!c%G+iW*F?k*J=kwQ73pwgUClQu3L)P5h-(@s~z}-h;sQ@;#y z4j%LUCb1Hb5n-Jw?yYg~y&+-=3LY|F0ijaPZD;v+=} zmC=}_wPk)*wKMgj7d`#1{Z?qG!ZE}1r%+eGy@#m*dtEN=2er9zH|)mV_y*G}Kuz_m zVA-1{gX3&m#2cm)&?_>+tS7~k?rPu$qq%#~Yi^2hqB5!mMwl+UKgy-&d82+!njJP_ z^{TJ8DfKLK!v46GwRu&SV0{o8{2`<8x_Iu1vCZznEB`{c`+)z3|COYAaNY&3aR2~T z;&=kFC5<3(3R+CW7qe7)l4RY|S{ma7IqF1AfEq#d%B6jO%eb5oX5L=kBw_;8>FgD< zIHAu(Oh6Bp$s45d6xf6pv(pL~nftcT9ZR+Z000000000000000004j|`34CriWvJz R3@`uy002ovPDHLkV1i4I?kxZS literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.23.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.23.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Raja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.26.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.26.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.28.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.28.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i%Q2B47ZyDH58R7tmm zkJ%;x004ZX7m{&m!#8k;cVf%fc1FH2c)IG$`h_$6HT7JBM#{mHjTn`_zTU{yRD^te zZRb>XmbG88bD1}#F!!=}?Qc~kRduYJ`@8X$+Dlk=3so}G(?VO#zQkes&XU949{w$R zpKT+PasI2?86Ialt1jZt24_RtmB*;F7d2-z*A2QfEg7d))%QD`CFMbV_b?B>13WRc zpH$Zm4%?ya=BVXH$a$e|eR*0J@W^vvp6$kU;m!lTO~fO~={U>*fH?;4J?vyg5bS~` zTV@yJOtq$?`5x_EDdGThBiKD`Y5#xAIF?b>M)&%phy&1_&Z9yWC-g!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Raja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.36.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.38.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.38.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.42.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a6d236c7887f07040af2627671d0995ff1c331 GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|?+Wba4!+nDh2l;G{zeJPnB@ z-_-X0pSYu&|BR6Y6EBC^tN*s4QWIFcX6{e~YGU9}JR*_YvwO8g;qG0`L6&{T3%?w; zVx0fz{VTqRmE1P|%`^ICVx~RW@F4TqyYTV{of1#~820B+J9RocPj%%>=at*8@Z5RZw8iQR?kqTZFE@V)U)hegQ)GM{g5JGfWbjW|HH$mG z*azt1A70B+<`_CI3yUcg5IKH!%8iwi?SH<@{HnV5RPTG+_gy`wZm}(2-QhFQuwobU z>^)Pu1Wq13r=+WVdFw2rVEcE=mic|YYtF9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_zja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.45.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.45.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.47.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.47.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.51.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.51.png new file mode 100644 index 0000000000000000000000000000000000000000..754a872e9ba1132b8742ca9d0876133a0474759e GIT binary patch literal 449 zcmV;y0Y3hTP)19-!*{*!YqrPQ5p z|IQ2>W{ds~m{i~DvHqkV9;=~sL?5GjcQ~KrbP9TW-YcgaFr2|3$z2D?6*Y-9R!&F9 z1$7Z_E|%8-006+Jw?7qee`%%J3Y-;xG$A$5xYq;Q@UVM-X{B#vSm)7%yN{dDh~j70nq#-Bi>1m07`Z2h6`B zq5NB0i)mkt;X~7xr33o=E~)ckOP`a%&hUj_WPd+kNwHq81kI}OCDts$$};5gYGpqN r`hPndD7Hu(K12Zk000000MPmeN()1S>Z`1-00000NkvXXu0mjf&yU3i literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.52.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.52.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_zMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.55.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.55.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.59.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.59.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf8cb522349ed92abfc2c731ea76302c13c617d GIT binary patch literal 598 zcmV-c0;&CpP)Q;x2vQFGCZE5fN71?@19O10>=SLm-3@LI@#*gb-qkF~+NJ0pV+P z10-cXZrf&8Gb-GLpVbZUQk~#=7{qww%4JEe7LZ2ndvyc;A$mEV=Kjs3^72^RmC8$l zX$&rFdnZ@}kPzK^D7fp&;O_>+5Cq<3V*&DjGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvXLH8)c~Ar1({#-!`Ju_ zRQh#r_a=^0>wt49aAMrs80i7}jaS_TJoFM4{?xj$>T`X2koQ_d5kd$dgpf-ZyC~!m za~S@v1n>0O$+<1{u_^$R8v|NZ)u+ZKVNE|e!01ueVvCWU1H(?WLZ2o&&2JW`CLYcE z+?|-<0Y|fV0PNgmUDGoLljY2lz^S3tjPvs9U3%8ZN)Ir!(x9Bcud24Tw?wij;LjS1 zx%J+9H*g{7ZD9SR_llJ`A%u{Dbfg{;@?pU$sI}BFgwoxFPFq{mGR8}#(8N(ewC@(< z6h{gTP#xc~qF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.60.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.60.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z}8ba4!+nDh2#AYZcr&#}U7 zZ`AJm_t<+{&c~xUqSrgj?$7^uGM^lxR!y4<(gieOc}1%J13TmF>szlKnfk}ch|%uL zyddc?d>i;wyw=zw5mN8p9@BgA`#@IEY&igO^ z=F+NZ^GoV=;{h4C**>a+U)p7M;?>0+sWqF#3xY4O&5o45_;<0|eX-qQ2j8We=UOb> zZMs}k>j3||)eqyfqx$ae|Gl@S#Bfc+%(dTy)@}7VvNy1nWh%Gy9rfnv20%moW)xc) zOI*p~P%GLyyH{Ajahb5)DX#!+@#Rm2-nE$jd-8L|UEaK qHCdOqB)aZzalBZd0}3@DSWv?_b>q2WtK$2SAg-sYpUXO@geCy>?2!2Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.62.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.62.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.64.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.64.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iQ;x2vQFGCZE5fN71?@19O10>=SLm-3@LI@#*gb-qkF~+NJ0pV+P z10-cXZrf&8Gb-GLpVbZUQk~#=7{qww%4JEe7LZ2ndvyc;A$mEV=Kjs3^72^RmC8$l zX$&rFdnZ@}kPzK^D7fp&;O_>+5Cq<3V*&DjGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvXLH8)c~Ar1({#-!`Ju_ zRQh#r_a=^0>wt49aAMrs80i7}jaS_TJoFM4{?xj$>T`X2koQ_d5kd$dgpf-ZyC~!m za~S@v1n>0O$+<1{u_^$R8v|NZ)u+ZKVNE|e!01ueVvCWU1H(?WLZ2o&&2JW`CLYcE z+?|-<0Y|fV0PNgmUDGoLljY2lz^S3tjPvs9U3%8ZN)Ir!(x9Bcud24Tw?wij;LjS1 zx%J+9H*g{7ZD9SR_llJ`A%u{Dbfg{;@?pU$sI}BFgwoxFPFq{mGR8}#(8N(ewC@(< z6h{gTP#xc~qF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.69.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.69.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z*b3`S9A)SY<$OJXncfMi+Zw@EtqqxU>i4NWU#Fo|hO0RR91006+Z_!-@S>uRn3 z-pmH}(Bn71l0_{Fk91HarzhC z4CrF582U!YlPSuM9qwiB>;=91#U#>Y zz~y;*7};#0Z_*9Go%NwxY99RM&q+4`C;2L$Gpy&S4#29d>w%fEGYS9z00000e7iq- W^WT9(_)Y`>0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.73.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.73.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=ix2ba4!+nDh2#;HE73$om8Fvv@^-T?I9X}acX(Y| z$Pcml-Ruvp?mh6@XvNnRQ&TTN+arw$^Lsn+R>l@G(~OS^cUdw-2AU zQDbCa__O47%ABfmvwtL*e^_#Z&uyPZ3}5NpolCB+?0cENJXuz1CY!&|Bc1D8E+%L> z?c2JI^GTl9&fKKs2KIAyzEKN!y*^iMYxT8bFa4$CzpvH`vGnlg&o%umF#T_}*B|C@ zGDq_&(wvOW?VtEo(5lV88?ihP*uXSU^TmD}9Sk;UiI=6vaUzDB>+N^gTe~DWM4f#5%Ro literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.78.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.78.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z3`Lz(ZsPkNiMwRs3Pl)%n2gnaZ_(wZkr86B`0nEX000000001hxA3*wfqtBG z{`x%6jh>8Pasa~6hgcj2djsI3ABH0o9ty!YMRM5r%>uasKhBE;J87 zsRQBsiX`Ifb!t^LEY0HdCQ4yWXikv)vejycOM63uBRVLheJWY79(XaH?P$+4tTr!*@ogRg>a+U%bvSAC-@8h!hY60LL(RXM7ydKgNi*Z$Q z#Jshw6$)s`k`>T5FwaC*WXF5DVGAmeioH#_icmNxYWgv-q=3Fh7#Zv-YUs!D9$oM~ iJp}*&00000n8q*m#Ul$Gmfy+%0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.82.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.82.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i;FA7 zzUJQ~0001(!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.91.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.91.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6(jcK$eh+>1nTn8d^)H2T)4c@k?WUbFFdiyyPXzp zthJ|m{&MRFS8WfzHd^s@#ne>KwbPW=-uZr6_J{M?qQ6nkw`)E9wApIal+z8Vyn3&H zFN)v}Sdn>m>(1>{o9|02(2eQ^t|b69%J?J9(#?H7%;@pz=H+xH$M9x TT3q-#1SI3>>gTe~DWM4fJeJ04 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.04.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.07.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.11.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.11.png new file mode 100644 index 0000000000000000000000000000000000000000..a8df15afee3dd32378596a3ea7c82f45a9200db5 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#piq;7Ktp2I zuFmiFLggppqPM;2Pa6Um*(?1#s9wPI^H?Q=aBWgFjCBV_QZ!; za_Q_3uGSuSZP4*?#mw7NX6d?0?fiX{agX5MnEluOt@Wz<9eF48(ru>G5;eNtdXsn^ z6nB+o6kea%ykA;L&+*{yoOKSy3t|@>z4cb#C7o}_n=MSd4j0$GS2En+F(r@F{q<41aE6zK0PP8Vh&@0+ooFWq}<~dcdW`64?j9zC-&2=w5=Oi zRsMB%mRS2K3+>jpJLl~#V~6?;>(}KLOLdl=bne_dEBXGT%*D@UG2UH%a-G7Vpa(bI zZwaTD-|Dq{zmD<3W&7G$k<0TBy|{Y##J1&K7o}Po&+ho<@=~j>zjDj5Uj4-175?#8 zHRp*>*{piktlCfht;Ji9Yf)3K{Qk4!=!2rqhs%7556xx&GuzUAlKrS1w9o^ W?s?JC>OHQ_APG-bKbLh*2~7Z2C&Hls literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.12.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.12.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.15.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.15.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i0WbcEP)btR=Df{+4PdfZt&Lux%FjpH+Q=5vpaxEMMJx5cdufM^7^BHbiwNkz&5>M?s52E zerG_@)*hQa@%I#T@fdoDXDq}300008_QkE=W$?LDn<_2)m`4BI9l(HQ{wIVGW6Uez z`j;6N%roj4pk&|jwteS0PRxep5uHZ&?r=Wq&`Z$c+dVt91DaRxM>?(pubYNeRm#Eb^;&A& zyViT>LQH1RiZo6!#Ps~-M=8}QQ8mwH|Dvyc9kch=rrfyAS>EoMo&ieLdQ`@kCoIi? zUP>V8bw)iKddL5_RQ^y@`WHvN;S!`Ijhpkg&h{urUJuV=D5|2&VjpbyJ>bkN|8!J~ zr?WHzl)r1$W4~!Ge_5Zi@w>+AjK%ifgaH5m00000*!=;>jZTnH_)p#d0000!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra0fhdEP)(ln@G-q0$!K=NB?fuw{HrLjV8(0002ME^gWl7#Cwq<>NRM zTk;K;3CKgA^Oy#I2}se;!(FX(;jZ0)K}De5#oenIV?O@$U%KG+4uG0gH}}~6gWo%# zh_%PipZu+Y0?SY%*4T&v0001c^Shf}!5RH&Ik1!Lhjs&+ijA&(s`E!E)G%zPa>nGrn`L_jgz$)aQRa%z}*2p%uzC|KG4gdfE0002M Zv?ps6OcGknhPD6z002ovPDHLkV1gVir?db7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.07.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.09.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.13.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..9117c2d96fb5479caad65d562b9ca63e4fe432b5 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2#Vo{3%Pg~-x zm%e-cPu$^MZ*cYkf6u|Lpy#!9JM#``aA%pR0(CKHE}c_+uCi>hYmLp^hE?kyZ_BNl zA^ah}#&)hl$anUH!r_^ zXxi@yw0pgX?y-}ff3&Xu>KuF0IbHMp7FC7c-!}YIjl7$<-m7@g+Y8&<4+iOXeUY(z zl$-y!Ue~o`_3^LPxi_b6T6!c}d-)v8sl^uRs}C2?pR}lEO3`BZH(vx^9=~5)#b(j| zZ8O)iH?u=~Zbv(RXIng%*YEr`+tNCo)TibpK9UTx7v8nm^*Ow0uJDex_bjGNJ#yrD zLXx3h*dOlZ{9>!s6^CE&e0V>9(eM6*SAW0p_ly4DyZyOLj!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra0fhdEP)(ln@G-q0$!K=NB?fuw{HrLjV8(0002ME^gWl7#Cwq<>NRM zTk;K;3CKgA^Oy#I2}se;!(FX(;jZ0)K}De5#oenIV?O@$U%KG+4uG0gH}}~6gWo%# zh_%PipZu+Y0?SY%*4T&v0001c^Shf}!5RH&Ik1!Lhjs&+ijA&(s`E!E)G%zPa>nGrn`L_jgz$)aQRa%z}*2p%uzC|KG4gdfE0002M Zv?ps6OcGknhPD6z002ovPDHLkV1gVir?db7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.17.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.19.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.19.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iP@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.04.png b/test-integration/snapshots/signTransactionRecordobt/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.06.png b/test-integration/snapshots/signTransactionRecordobt/nanox.06.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.07.png b/test-integration/snapshots/signTransactionRecordobt/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.10.png b/test-integration/snapshots/signTransactionRecordobt/nanox.10.png new file mode 100644 index 0000000000000000000000000000000000000000..78185afc0a5d51a92c9d07336763e15270c0b822 GIT binary patch literal 565 zcmV-50?Pe~P)fN^?nfUAI(qCpHo}a5hn*@CLCilj-x|N${(7g z64joP@M#+>g|4=w_#z-9eh6A$tEnJ!#wEken_*;FWM*XM88c5?TYM2vGSv7lRld}H z4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5qoypmMrz-_jNZm87D=QV9eoBSEGj=JM z?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A!6|O~RFTaXWDF|+Z;ST`tI%Mj9++9e*ge*&~Q;_efSExnI#rt2d6uus$^DT z*(iPFN@^xO+m>pfJS@7{;#Ss;fXh|Yk0tJ6EeC|_?ww_wn_h^QuQ&3pNjSSWT)9U) zjpZUhUc^-Iah{$NFbM+y0000000000000000KA-EMJ?r;2qkL600000NkvXXu0mjf DLF)EF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.11.png b/test-integration/snapshots/signTransactionRecordobt/nanox.11.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.12.png b/test-integration/snapshots/signTransactionRecordobt/nanox.12.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.13.png b/test-integration/snapshots/signTransactionRecordobt/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.16.png b/test-integration/snapshots/signTransactionRecordobt/nanox.16.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.17.png b/test-integration/snapshots/signTransactionRecordobt/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9365b95359459d5c7c29e0c895ab4dbc4a1404 GIT binary patch literal 953 zcmV;q14jIbP)+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.19.png b/test-integration/snapshots/signTransactionRecordobt/nanox.19.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.22.png b/test-integration/snapshots/signTransactionRecordobt/nanox.22.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.26.png b/test-integration/snapshots/signTransactionRecordobt/nanox.26.png new file mode 100644 index 0000000000000000000000000000000000000000..2a61cedadad92f3be64d4dbd7983be4a009f333a GIT binary patch literal 430 zcmV;f0a5;mP)P@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.27.png b/test-integration/snapshots/signTransactionRecordobt/nanox.27.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.29.png b/test-integration/snapshots/signTransactionRecordobt/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.30.png b/test-integration/snapshots/signTransactionRecordobt/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.33.png b/test-integration/snapshots/signTransactionRecordobt/nanox.33.png new file mode 100644 index 0000000000000000000000000000000000000000..78185afc0a5d51a92c9d07336763e15270c0b822 GIT binary patch literal 565 zcmV-50?Pe~P)fN^?nfUAI(qCpHo}a5hn*@CLCilj-x|N${(7g z64joP@M#+>g|4=w_#z-9eh6A$tEnJ!#wEken_*;FWM*XM88c5?TYM2vGSv7lRld}H z4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5qoypmMrz-_jNZm87D=QV9eoBSEGj=JM z?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A!6|O~RFTaXWDF|+Z;ST`tI%Mj9++9e*ge*&~Q;_efSExnI#rt2d6uus$^DT z*(iPFN@^xO+m>pfJS@7{;#Ss;fXh|Yk0tJ6EeC|_?ww_wn_h^QuQ&3pNjSSWT)9U) zjpZUhUc^-Iah{$NFbM+y0000000000000000KA-EMJ?r;2qkL600000NkvXXu0mjf DLF)EF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.34.png b/test-integration/snapshots/signTransactionRecordobt/nanox.34.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.35.png b/test-integration/snapshots/signTransactionRecordobt/nanox.35.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.36.png b/test-integration/snapshots/signTransactionRecordobt/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.39.png b/test-integration/snapshots/signTransactionRecordobt/nanox.39.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.40.png b/test-integration/snapshots/signTransactionRecordobt/nanox.40.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9365b95359459d5c7c29e0c895ab4dbc4a1404 GIT binary patch literal 953 zcmV;q14jIbP)+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.42.png b/test-integration/snapshots/signTransactionRecordobt/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.45.png b/test-integration/snapshots/signTransactionRecordobt/nanox.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iP@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.50.png b/test-integration/snapshots/signTransactionRecordobt/nanox.50.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.52.png b/test-integration/snapshots/signTransactionRecordobt/nanox.52.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.53.png b/test-integration/snapshots/signTransactionRecordobt/nanox.53.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.56.png b/test-integration/snapshots/signTransactionRecordobt/nanox.56.png new file mode 100644 index 0000000000000000000000000000000000000000..78185afc0a5d51a92c9d07336763e15270c0b822 GIT binary patch literal 565 zcmV-50?Pe~P)fN^?nfUAI(qCpHo}a5hn*@CLCilj-x|N${(7g z64joP@M#+>g|4=w_#z-9eh6A$tEnJ!#wEken_*;FWM*XM88c5?TYM2vGSv7lRld}H z4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5qoypmMrz-_jNZm87D=QV9eoBSEGj=JM z?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A!6|O~RFTaXWDF|+Z;ST`tI%Mj9++9e*ge*&~Q;_efSExnI#rt2d6uus$^DT z*(iPFN@^xO+m>pfJS@7{;#Ss;fXh|Yk0tJ6EeC|_?ww_wn_h^QuQ&3pNjSSWT)9U) zjpZUhUc^-Iah{$NFbM+y0000000000000000KA-EMJ?r;2qkL600000NkvXXu0mjf DLF)EF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.57.png b/test-integration/snapshots/signTransactionRecordobt/nanox.57.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.58.png b/test-integration/snapshots/signTransactionRecordobt/nanox.58.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.59.png b/test-integration/snapshots/signTransactionRecordobt/nanox.59.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.62.png b/test-integration/snapshots/signTransactionRecordobt/nanox.62.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.63.png b/test-integration/snapshots/signTransactionRecordobt/nanox.63.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9365b95359459d5c7c29e0c895ab4dbc4a1404 GIT binary patch literal 953 zcmV;q14jIbP)+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.65.png b/test-integration/snapshots/signTransactionRecordobt/nanox.65.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.68.png b/test-integration/snapshots/signTransactionRecordobt/nanox.68.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.72.png b/test-integration/snapshots/signTransactionRecordobt/nanox.72.png new file mode 100644 index 0000000000000000000000000000000000000000..2a61cedadad92f3be64d4dbd7983be4a009f333a GIT binary patch literal 430 zcmV;f0a5;mP)P@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.73.png b/test-integration/snapshots/signTransactionRecordobt/nanox.73.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000Wk`-J!AUA!EM>qI$K(c;r?rNb6zO5TDNnvPrcK1q*F^@m`tqZ))05GF9%smeO z;CBWTw)SZH8-H&>f!ENN@HaMM0000000#8#15Uqm7kjJgx?+q;k$gJc!d$Gp9c}ad z+Z7?7{;Ih-PWYfDQ>v?$C=%YxfCD7Oplc1T;RR z*R8(DXUX)I(n%&1{*Ri{YF=@~j5vk>&Scvk68H_8O66#i&9sqS5i@FT76^^ceL x?hxZMvV;za-e002ovPDHLkV1oZg{_X$( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.75.png b/test-integration/snapshots/signTransactionRecordobt/nanox.75.png new file mode 100644 index 0000000000000000000000000000000000000000..02cc2749e45817a0722f655bd1f5067c47509839 GIT binary patch literal 561 zcmV-10?z%3P)^fTaCg-D;r=zE2NekV4V!^zM}yV;+C(TNikp0dS0(n|pNs z%kK;*bnQ{~H~zkYEZBQeef(^k0hbQ>6thH0E{4mzN2NJ_S3GOX7 zeRkb`j$3e%$&!gJI~iv@9lNNFvnF?-aP6-mx6FV6mgiO%26Q9mtloApYk-vcn4f@~ za;x)}Q2z{)ls|UpUHgD*Zc46N*Z}|l00000;9dLziD}Jr76KWa00000NkvXXu0mjf=Pmly literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.76.png b/test-integration/snapshots/signTransactionRecordobt/nanox.76.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4cc2ae93cd274977fc604eea56ff141e05fd2d GIT binary patch literal 488 zcmVP)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.79.png b/test-integration/snapshots/signTransactionRecordobt/nanox.79.png new file mode 100644 index 0000000000000000000000000000000000000000..78185afc0a5d51a92c9d07336763e15270c0b822 GIT binary patch literal 565 zcmV-50?Pe~P)fN^?nfUAI(qCpHo}a5hn*@CLCilj-x|N${(7g z64joP@M#+>g|4=w_#z-9eh6A$tEnJ!#wEken_*;FWM*XM88c5?TYM2vGSv7lRld}H z4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5qoypmMrz-_jNZm87D=QV9eoBSEGj=JM z?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A!6|O~RFTaXWDF|+Z;ST`tI%Mj9++9e*ge*&~Q;_efSExnI#rt2d6uus$^DT z*(iPFN@^xO+m>pfJS@7{;#Ss;fXh|Yk0tJ6EeC|_?ww_wn_h^QuQ&3pNjSSWT)9U) zjpZUhUc^-Iah{$NFbM+y0000000000000000KA-EMJ?r;2qkL600000NkvXXu0mjf DLF)EF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.80.png b/test-integration/snapshots/signTransactionRecordobt/nanox.80.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e895af9dcab7bf66110ec26b7d1e59d8e7d999 GIT binary patch literal 581 zcmV-L0=oT)P)<{90AM;F7NKq1%G;dtn9f8j z?vj;2*{BM*v>6S>__T{o821qtbIz{OPs05}`3gT-_EMc|avGMxt;SP}IcGWV4pmZ* z+AF)!)bNLF+_p{aTOUURROBC$Hr8qqPz9uiVx6&wl}6QMB5z%pC-4@I2xxWD_*5xx z4EDhL?9(u;t(pzSxi2-?aX3JRyqaEG{WE5a)+2M6nf-U-DX2r~9(54MjciBr>8Dis zy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=hYD@j<5_QYEH45*5zMLT`2p)s!4*>8w zWa|H;i$QWDU8_p$Vh>OjI9s<# z3t_cFCtG3{eJg>+5xHo11O)KbS-lS~#hnfa{Eq0TO8&y{64}7Xj0m{ym>XTY8qcR7 zbu~LpCgqQZqwd{bKaEx_t83rZinIpQp0%&!_m$TM_5lwwV;_*N#p!>|{r~{rAaF`& zefSD`nCCZQC8xzvRkCVPYo+~LsJT+JR2$|0qMLghW!(t4T~+_j#8a&0fOOxXvubb; zwdH}y6@2inMYuXU+&M}-jpZUhp2AcQai0DvU=aoY0000000000000000C+jy^Z@@~ TntFrO00000NkvXXu0mjfjF1Nf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.81.png b/test-integration/snapshots/signTransactionRecordobt/nanox.81.png new file mode 100644 index 0000000000000000000000000000000000000000..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 GIT binary patch literal 445 zcmV;u0Yd(XP)I1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.82.png b/test-integration/snapshots/signTransactionRecordobt/nanox.82.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.85.png b/test-integration/snapshots/signTransactionRecordobt/nanox.85.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.86.png b/test-integration/snapshots/signTransactionRecordobt/nanox.86.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9365b95359459d5c7c29e0c895ab4dbc4a1404 GIT binary patch literal 953 zcmV;q14jIbP)+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.88.png b/test-integration/snapshots/signTransactionRecordobt/nanox.88.png new file mode 100644 index 0000000000000000000000000000000000000000..ac035785ab270750e21ac3a27b538062c3c97cd3 GIT binary patch literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.91.png b/test-integration/snapshots/signTransactionRecordobt/nanox.91.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=ix z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.04.png b/test-integration/snapshots/signTransactionRemaddress/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1gMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.09.png b/test-integration/snapshots/signTransactionRemaddress/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.13.png b/test-integration/snapshots/signTransactionRemaddress/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.14.png b/test-integration/snapshots/signTransactionRemaddress/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.18.png b/test-integration/snapshots/signTransactionRemaddress/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.20.png b/test-integration/snapshots/signTransactionRemaddress/nanox.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.24.png b/test-integration/snapshots/signTransactionRemaddress/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.25.png b/test-integration/snapshots/signTransactionRemaddress/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.29.png b/test-integration/snapshots/signTransactionRemaddress/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.30.png b/test-integration/snapshots/signTransactionRemaddress/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.32.png b/test-integration/snapshots/signTransactionRemaddress/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.36.png b/test-integration/snapshots/signTransactionRemaddress/nanox.36.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.37.png b/test-integration/snapshots/signTransactionRemaddress/nanox.37.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.41.png b/test-integration/snapshots/signTransactionRemaddress/nanox.41.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.42.png b/test-integration/snapshots/signTransactionRemaddress/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.43.png b/test-integration/snapshots/signTransactionRemaddress/nanox.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.45.png b/test-integration/snapshots/signTransactionRemaddress/nanox.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.49.png b/test-integration/snapshots/signTransactionRemaddress/nanox.49.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.50.png b/test-integration/snapshots/signTransactionRemaddress/nanox.50.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^RaJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.54.png b/test-integration/snapshots/signTransactionRemaddress/nanox.54.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.55.png b/test-integration/snapshots/signTransactionRemaddress/nanox.55.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.56.png b/test-integration/snapshots/signTransactionRemaddress/nanox.56.png new file mode 100644 index 0000000000000000000000000000000000000000..57361d73eb92d15d2961836d9eecd0ad84eb9d14 GIT binary patch literal 587 zcmV-R0<`^!P)zY{Dl8MiNDMtYJ>n22h0+6)rk<=&^TUj6z2c{0001%^RsfY5W>~)-b+2> z^1DUF#aOLJ!{3@|)?l)0%eMYvj{-sn-uv{4i~X@(T1nd9=#1@jit4Z2^6f79-8+4T z|KNlzF2^^dT{>v|s(LqsQ0i$OXDJ|jXpd2LJ|*gYB^wlw{>ii*9mwom7>w1nYzxBO z&uoV;8W}vBgR-D2W=e`N^gL4TyVCW)iKzNVo>WdZ3!F``&2IcsuxMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.59.png b/test-integration/snapshots/signTransactionRemaddress/nanox.59.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.04.png b/test-integration/snapshots/signTransactionRemnft/nanox.04.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.07.png b/test-integration/snapshots/signTransactionRemnft/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.09.png b/test-integration/snapshots/signTransactionRemnft/nanox.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.13.png b/test-integration/snapshots/signTransactionRemnft/nanox.13.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be3ad6af216510007ee918b2e28a024ce5996 GIT binary patch literal 466 zcmV;@0WJQCP)4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.14.png b/test-integration/snapshots/signTransactionRemnft/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.17.png b/test-integration/snapshots/signTransactionRemnft/nanox.17.png new file mode 100644 index 0000000000000000000000000000000000000000..15ccd7a8469943e795e0044b1869e78c36178dd7 GIT binary patch literal 596 zcmV-a0;~OrP)q?fAdX|)OMVOyU6H>F59kz4SmmD+$ z;)@_Oah+b#cJ+ah>!}vMaZm@O7kV0_aJUTNZ?6H;tj{%HU3sO6ce?(}18YE-sOo?( zdN=WA*Yr#W)Ld(()G>~pN7`#<`F<~SG|gV=E)`up0~!`_&?5XlImHF7rgm{S832GK z(NKE;C$vI9dQ=iW-siUAlU{}1cF<)5sw-TbvCH$jAj>E&BWwD!=uWJB&MLE50Sojj-#s^jo z%I?#0wQI5@_Py`JtiDa9XtP+EFUgDspM#hsnkWgI=N;qErvC1gMM*=MSF)>^K7xT@ zq%Jf@C5>{$mc1Cp7_AZi8Q`w!HmK_{KEIqabq?o!3%6L1*UkD{W$IW^_*rL{#r%r= z4BS?qxBh%I)I$ByD*FvDkKFvrf{u%Iw;7;B6Lq1Kz_MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.20.png b/test-integration/snapshots/signTransactionRemnft/nanox.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.24.png b/test-integration/snapshots/signTransactionRemnft/nanox.24.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be3ad6af216510007ee918b2e28a024ce5996 GIT binary patch literal 466 zcmV;@0WJQCP)4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.25.png b/test-integration/snapshots/signTransactionRemnft/nanox.25.png new file mode 100644 index 0000000000000000000000000000000000000000..fec8e0da13a8b210aa42f42fb388332d817b9391 GIT binary patch literal 1009 zcmV!9!@fCc5cXY%O(N?YVsBur>bG4fNvBgCTrHd*ZUz+Y-bhD85$2 zxQbl0pTPhu=hYsZ8EuGdm9~T#hMx1*Pj4QR-fXjI-O4}c!VNKs$inNZ&Mf?V9EaPJ z<4yTY!N44?2GCnHFc@mu z3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o+OM_=0gt(^E7D9DGv0dfFu|A41ub-@ zxE$TLD|Y@Xn2%FbG~d<32J z?l1b5R}FgiVIx8#NZncJzt>+T66z*wD|{l#6A5rpw5W0_flq%3LDmiFP6NR#(1NN; zW80i>O${20**zoRz`EoT|H77L*NRI|c_9OprLjl5=U)dEtfZQE5aTb(N57zlTi+X>y;Q4 z`9h}W19>+px{nSI^~WrD6^dSwTw{3aVXjMttMYk6bj`FJ!Z&>)rE-lL8lsm+MzGVy zuuwN4N_aU|_+Rx09^MZtNAr^a>eW2~eXNu2gEqM=xLK6AgV8yksEB+|APs);N=x1-Cp8aG9R~>2RpR( z+}YoO`MxeT7L!a)<`*r#DK|Z%;4)6Mj+4=>=+N34pjW^V^G@}`{HN_%cRRC~qIIbj zyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X@-gk2UTC8nUV;=`a5h@5#ox(4khizd zCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{8@FwP+BU1Wuel#XC7Y?nnP^cyDqA@r zqC1k&_Ij3l&)(Y&-#A^n{{xzpXo{@ng8-RVzz4J|hq zXMYRY&VFGot=ItMKkHZVv=USf18^~2g4X^Ra zxXL5W>kHnF7zlTrN@LTO>=l6ULaw7UK7s`SNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz z+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=tzmSbm&}{M)M+yRfFK4bAs+VzGMF=Xo zB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMTtZ*vLC(2=o@6@ul2^Ft6RMq!t@!Cj;!6r5pTllS@I1aWupKzWT6jWdJ0lLxRXwhepalN=3g8y zyCLsxi$0&d2m=5B0Dv<&(i7gf+nHOfG~d1qvolp1pPdrvsBRB_5!2|4HDmD&NdNQl znBu8dX;JO8cJc2#Z#ya-{>Tvbm9yc?&>tm`{mW#gMDTnuLac(g17m} z-9{nEb;saPerjh`ZP-W+)sTP2>Wp;1hfc=N06|}rjkOB>i?C8Ry(O;#0000000000 h00000006+|`~yql&v~F;k6-`*002ovPDHLkV1i{*`KbT^ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.28.png b/test-integration/snapshots/signTransactionRemnft/nanox.28.png new file mode 100644 index 0000000000000000000000000000000000000000..15ccd7a8469943e795e0044b1869e78c36178dd7 GIT binary patch literal 596 zcmV-a0;~OrP)q?fAdX|)OMVOyU6H>F59kz4SmmD+$ z;)@_Oah+b#cJ+ah>!}vMaZm@O7kV0_aJUTNZ?6H;tj{%HU3sO6ce?(}18YE-sOo?( zdN=WA*Yr#W)Ld(()G>~pN7`#<`F<~SG|gV=E)`up0~!`_&?5XlImHF7rgm{S832GK z(NKE;C$vI9dQ=iW-siUAlU{}1cF<)5sw-TbvCH$jAj>E&BWwD!=uWJB&MLE50Sojj-#s^jo z%I?#0wQI5@_Py`JtiDa9XtP+EFUgDspM#hsnkWgI=N;qErvC1gMM*=MSF)>^K7xT@ zq%Jf@C5>{$mc1Cp7_AZi8Q`w!HmK_{KEIqabq?o!3%6L1*UkD{W$IW^_*rL{#r%r= z4BS?qxBh%I)I$ByD*FvDkKFvrf{u%Iw;7;B6Lq1Kz_oVdGs_+$U&~tZX7H<}ZV^IQ)(0Cp;Ca2&G+Iy5+O&?5XlIb{m+rkvuKX8-_P zvZ3|_&Q**5^eid!c$+NXlWtwDaBxZhsw?z*2RI9?+l^`j22Nz?k1EvvC{SIkcMhXsk)D*HR2Bdg8t0;F{qpZ))3ECAu+p&7s`prg0RR91j%UT$(CUVE$}U%lJ}pPP z1}(A2zMFA9O{HtIv@&kVh=w^EF-ta466(9K<{quo);zK(X-J=y+Eto9f{tXQE^KBc z|MW*eY0GX#RvsKc^GCpRRhd&~ms9el<>U5L%3$l$azV3>wPtUUy`fW@`pNuA=T=?W zpAEH8{x09XH#Js!n=ljr0000000000000000N`Kp Y4bwOH@VFzT5C8xG07*qoM6N<$g3sX+u>b%7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.30.png b/test-integration/snapshots/signTransactionRemnft/nanox.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.32.png b/test-integration/snapshots/signTransactionRemnft/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|(yq7*iimcoQsH*tD|2;tj zC~_{780I(t000000Pq%HyDM;?yVqkg+gOvokZgb$`be=E^ctW>KZbi)DB*i|1#W5r zEf;rH?jGl#^{E8a5rA!G-CVKzAG#x;iM3+r3%ym)!7?<7XMb$O000001Rm6qlQ;fn zz20G%*m-1Re|A@3YPh-WU%d4DVRx?w>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)?}X!pFoQAgV{HSv)3}Sl;`5cR3jj1Dk2(Yo-cLYR1t3oG{Eq`7?;{0 z^Hh^J8@kra=DM;qU+e002ov JPDHLkV1g2@t6cy9 delta 352 zcmV-m0iXVc1N#DyB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00000fhdk2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h8JwJ-nx diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.29.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.29.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfm^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.32.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.32.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Wed, 13 Jul 2022 01:39:31 +0200 Subject: [PATCH 47/83] Minor UI improvements --- .../transactionTemplates/commands.ts | 40 ++ .../template_addaddress.ts | 12 +- .../template_addbundles.ts | 12 +- .../transactionTemplates/template_addnft.ts | 84 +--- .../template_cancelfndreq.ts | 10 +- .../template_newfundsreq.ts | 30 +- .../template_recordobt.ts | 46 +- .../template_regaddress.ts | 16 +- .../template_regdomain.ts | 16 +- .../template_rejectfndreq.ts | 10 +- .../template_remaddress.ts | 12 +- .../template_remalladdr.ts | 12 +- .../template_remallnfts.ts | 12 +- .../transactionTemplates/template_remnft.ts | 12 +- .../template_renewdomain.ts | 12 +- .../template_setdomainpub.ts | 12 +- .../transactionTemplates/template_stakefio.ts | 12 +- .../template_trnsfiopubky.ts | 12 +- .../template_unstakefio.ts | 12 +- .../template_voteproducer.ts | 13 +- .../template_voteproxy.ts | 11 +- .../template_xferaddress.ts | 16 +- .../template_xferdomain.ts | 16 +- src/decodeDH.c | 12 +- src/signTransactionIntegrity.c | 412 ++++++++---------- src/signTransactionParse.c | 15 + src/signTransactionParse.h | 1 + test-integration/decodeMessage.js | 4 +- .../snapshots/decodeMessage/nanox.03.png | Bin 601 -> 592 bytes .../snapshots/decodeMessage/nanox.15.png | Bin 601 -> 592 bytes .../snapshots/decodeMessage/nanox.28.png | Bin 601 -> 724 bytes .../snapshots/decodeMessage/nanox.29.png | Bin 476 -> 539 bytes .../snapshots/decodeMessage/nanox.30.png | Bin 974 -> 476 bytes .../snapshots/decodeMessage/nanox.31.png | Bin 456 -> 974 bytes .../snapshots/decodeMessage/nanox.32.png | Bin 548 -> 456 bytes .../snapshots/decodeMessage/nanox.33.png | Bin 556 -> 548 bytes .../snapshots/decodeMessage/nanox.34.png | Bin 358 -> 556 bytes .../snapshots/decodeMessage/nanox.35.png | Bin 385 -> 358 bytes .../snapshots/decodeMessage/nanox.36.png | Bin 393 -> 385 bytes .../snapshots/decodeMessage/nanox.37.png | Bin 330 -> 393 bytes .../snapshots/decodeMessage/nanox.38.png | Bin 308 -> 330 bytes .../snapshots/decodeMessage/nanox.39.png | Bin 347 -> 308 bytes .../snapshots/decodeMessage/nanox.40.png | Bin 455 -> 347 bytes .../snapshots/decodeMessage/nanox.41.png | Bin 405 -> 455 bytes .../snapshots/decodeMessage/nanox.42.png | Bin 401 -> 405 bytes .../snapshots/decodeMessage/nanox.43.png | Bin 601 -> 401 bytes .../snapshots/decodeMessage/nanox.44.png | Bin 476 -> 724 bytes .../snapshots/decodeMessage/nanox.45.png | Bin 974 -> 539 bytes .../snapshots/decodeMessage/nanox.46.png | Bin 456 -> 476 bytes .../snapshots/decodeMessage/nanox.47.png | Bin 748 -> 974 bytes .../snapshots/decodeMessage/nanox.48.png | Bin 760 -> 456 bytes .../snapshots/decodeMessage/nanox.49.png | Bin 358 -> 748 bytes .../snapshots/decodeMessage/nanox.50.png | Bin 385 -> 760 bytes .../snapshots/decodeMessage/nanox.51.png | Bin 393 -> 358 bytes .../snapshots/decodeMessage/nanox.52.png | Bin 330 -> 385 bytes .../snapshots/decodeMessage/nanox.53.png | Bin 308 -> 393 bytes .../snapshots/decodeMessage/nanox.54.png | Bin 480 -> 330 bytes .../snapshots/decodeMessage/nanox.55.png | Bin 555 -> 308 bytes .../snapshots/decodeMessage/nanox.56.png | Bin 455 -> 480 bytes .../snapshots/decodeMessage/nanox.57.png | Bin 405 -> 555 bytes .../snapshots/decodeMessage/nanox.58.png | Bin 401 -> 455 bytes .../snapshots/decodeMessage/nanox.59.png | Bin 601 -> 405 bytes .../snapshots/decodeMessage/nanox.60.png | Bin 476 -> 401 bytes .../snapshots/decodeMessage/nanox.61.png | Bin 974 -> 592 bytes .../snapshots/decodeMessage/nanox.62.png | Bin 456 -> 476 bytes .../snapshots/decodeMessage/nanox.63.png | Bin 557 -> 974 bytes .../snapshots/decodeMessage/nanox.64.png | Bin 358 -> 456 bytes .../snapshots/decodeMessage/nanox.65.png | Bin 385 -> 557 bytes .../snapshots/decodeMessage/nanox.66.png | Bin 393 -> 358 bytes .../snapshots/decodeMessage/nanox.67.png | Bin 347 -> 385 bytes .../snapshots/decodeMessage/nanox.68.png | Bin 455 -> 393 bytes .../snapshots/decodeMessage/nanox.69.png | Bin 390 -> 347 bytes .../snapshots/decodeMessage/nanox.70.png | Bin 405 -> 455 bytes .../snapshots/decodeMessage/nanox.71.png | Bin 0 -> 390 bytes .../snapshots/decodeMessage/nanox.72.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanos.04.png | Bin 508 -> 473 bytes .../signTransactionAddaddress/nanos.12.png | Bin 508 -> 473 bytes .../signTransactionAddaddress/nanos.21.png | Bin 508 -> 473 bytes .../signTransactionAddaddress/nanos.31.png | Bin 508 -> 473 bytes .../signTransactionAddaddress/nanos.42.png | Bin 508 -> 473 bytes .../signTransactionAddaddress/nanox.04.png | Bin 1009 -> 965 bytes .../signTransactionAddaddress/nanox.05.png | Bin 462 -> 428 bytes .../signTransactionAddaddress/nanox.14.png | Bin 1009 -> 965 bytes .../signTransactionAddaddress/nanox.15.png | Bin 462 -> 428 bytes .../signTransactionAddaddress/nanox.25.png | Bin 1009 -> 965 bytes .../signTransactionAddaddress/nanox.26.png | Bin 462 -> 428 bytes .../signTransactionAddaddress/nanox.37.png | Bin 1009 -> 965 bytes .../signTransactionAddaddress/nanox.38.png | Bin 462 -> 428 bytes .../signTransactionAddaddress/nanox.50.png | Bin 1009 -> 965 bytes .../signTransactionAddaddress/nanox.51.png | Bin 462 -> 428 bytes .../signTransactionAddnft/nanos.04.png | Bin 508 -> 473 bytes .../signTransactionAddnft/nanos.12.png | Bin 508 -> 473 bytes .../signTransactionAddnft/nanos.21.png | Bin 508 -> 473 bytes .../signTransactionAddnft/nanox.04.png | Bin 1009 -> 965 bytes .../signTransactionAddnft/nanox.05.png | Bin 462 -> 428 bytes .../signTransactionAddnft/nanox.14.png | Bin 1009 -> 965 bytes .../signTransactionAddnft/nanox.15.png | Bin 462 -> 428 bytes .../signTransactionAddnft/nanox.25.png | Bin 1009 -> 965 bytes .../signTransactionAddnft/nanox.26.png | Bin 462 -> 428 bytes .../signTransactionNewfundsreq/nanos.04.png | Bin 483 -> 448 bytes .../signTransactionNewfundsreq/nanos.05.png | Bin 486 -> 453 bytes .../signTransactionNewfundsreq/nanos.08.png | Bin 429 -> 425 bytes .../signTransactionNewfundsreq/nanos.20.png | Bin 483 -> 448 bytes .../signTransactionNewfundsreq/nanos.21.png | Bin 486 -> 453 bytes .../signTransactionNewfundsreq/nanos.24.png | Bin 429 -> 425 bytes .../signTransactionNewfundsreq/nanos.36.png | Bin 483 -> 448 bytes .../signTransactionNewfundsreq/nanos.37.png | Bin 486 -> 453 bytes .../signTransactionNewfundsreq/nanos.40.png | Bin 429 -> 425 bytes .../signTransactionNewfundsreq/nanos.52.png | Bin 483 -> 448 bytes .../signTransactionNewfundsreq/nanos.53.png | Bin 486 -> 453 bytes .../signTransactionNewfundsreq/nanos.56.png | Bin 429 -> 425 bytes .../signTransactionNewfundsreq/nanox.04.png | Bin 559 -> 520 bytes .../signTransactionNewfundsreq/nanox.05.png | Bin 561 -> 524 bytes .../signTransactionNewfundsreq/nanox.09.png | Bin 581 -> 580 bytes .../signTransactionNewfundsreq/nanox.23.png | Bin 559 -> 520 bytes .../signTransactionNewfundsreq/nanox.24.png | Bin 561 -> 524 bytes .../signTransactionNewfundsreq/nanox.28.png | Bin 581 -> 580 bytes .../signTransactionNewfundsreq/nanox.42.png | Bin 559 -> 520 bytes .../signTransactionNewfundsreq/nanox.43.png | Bin 561 -> 524 bytes .../signTransactionNewfundsreq/nanox.47.png | Bin 581 -> 580 bytes .../signTransactionNewfundsreq/nanox.61.png | Bin 559 -> 520 bytes .../signTransactionNewfundsreq/nanox.62.png | Bin 561 -> 524 bytes .../signTransactionNewfundsreq/nanox.66.png | Bin 581 -> 580 bytes .../signTransactionOtherEosio/nanos.05.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.105.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.122.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.14.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.140.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.159.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.179.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.200.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.222.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.24.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.245.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.269.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.294.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.320.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.347.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.35.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.375.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.404.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.434.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.465.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.47.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.497.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.530.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.564.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.599.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.60.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.635.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.672.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.680.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.74.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanos.89.png | Bin 508 -> 473 bytes .../signTransactionOtherEosio/nanox.05.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.06.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.103.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.104.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.121.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.122.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.140.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.141.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.16.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.160.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.161.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.17.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.181.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.182.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.203.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.204.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.226.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.227.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.250.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.251.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.275.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.276.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.28.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.29.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.301.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.302.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.328.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.329.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.356.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.357.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.385.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.386.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.41.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.415.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.416.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.42.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.446.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.447.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.478.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.479.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.511.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.512.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.545.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.546.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.55.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.56.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.580.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.581.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.616.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.617.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.653.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.654.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.691.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.692.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.70.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.71.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.730.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.731.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.740.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.741.png | Bin 462 -> 428 bytes .../signTransactionOtherEosio/nanox.86.png | Bin 1009 -> 965 bytes .../signTransactionOtherEosio/nanox.87.png | Bin 462 -> 428 bytes .../nanos.04.png | Bin 508 -> 473 bytes .../nanos.11.png | Bin 508 -> 473 bytes .../nanos.19.png | Bin 508 -> 473 bytes .../nanos.27.png | Bin 508 -> 473 bytes .../nanos.74.png | Bin 508 -> 473 bytes .../nanox.04.png | Bin 1009 -> 965 bytes .../nanox.05.png | Bin 462 -> 428 bytes .../nanox.13.png | Bin 1009 -> 965 bytes .../nanox.14.png | Bin 462 -> 428 bytes .../nanox.23.png | Bin 1009 -> 965 bytes .../nanox.24.png | Bin 462 -> 428 bytes .../nanox.33.png | Bin 1009 -> 965 bytes .../nanox.34.png | Bin 462 -> 428 bytes .../nanox.87.png | Bin 1009 -> 965 bytes .../nanox.88.png | Bin 462 -> 428 bytes .../nanos.04.png | Bin 508 -> 473 bytes .../nanos.12.png | Bin 508 -> 473 bytes .../nanox.04.png | Bin 1009 -> 965 bytes .../nanox.05.png | Bin 462 -> 428 bytes .../nanox.14.png | Bin 1009 -> 965 bytes .../nanox.15.png | Bin 462 -> 428 bytes .../signTransactionRecordobt/nanos.05.png | Bin 483 -> 448 bytes .../signTransactionRecordobt/nanos.06.png | Bin 486 -> 453 bytes .../signTransactionRecordobt/nanos.09.png | Bin 436 -> 432 bytes .../signTransactionRecordobt/nanos.10.png | Bin 429 -> 425 bytes .../signTransactionRecordobt/nanos.25.png | Bin 483 -> 448 bytes .../signTransactionRecordobt/nanos.26.png | Bin 486 -> 453 bytes .../signTransactionRecordobt/nanos.29.png | Bin 436 -> 432 bytes .../signTransactionRecordobt/nanos.30.png | Bin 429 -> 425 bytes .../signTransactionRecordobt/nanos.45.png | Bin 483 -> 448 bytes .../signTransactionRecordobt/nanos.46.png | Bin 486 -> 453 bytes .../signTransactionRecordobt/nanos.49.png | Bin 436 -> 432 bytes .../signTransactionRecordobt/nanos.50.png | Bin 429 -> 425 bytes .../signTransactionRecordobt/nanos.65.png | Bin 483 -> 448 bytes .../signTransactionRecordobt/nanos.66.png | Bin 486 -> 453 bytes .../signTransactionRecordobt/nanos.69.png | Bin 436 -> 432 bytes .../signTransactionRecordobt/nanos.70.png | Bin 429 -> 425 bytes .../signTransactionRecordobt/nanox.05.png | Bin 559 -> 520 bytes .../signTransactionRecordobt/nanox.06.png | Bin 561 -> 524 bytes .../signTransactionRecordobt/nanox.10.png | Bin 565 -> 564 bytes .../signTransactionRecordobt/nanox.11.png | Bin 581 -> 580 bytes .../signTransactionRecordobt/nanox.28.png | Bin 559 -> 520 bytes .../signTransactionRecordobt/nanox.29.png | Bin 561 -> 524 bytes .../signTransactionRecordobt/nanox.33.png | Bin 565 -> 564 bytes .../signTransactionRecordobt/nanox.34.png | Bin 581 -> 580 bytes .../signTransactionRecordobt/nanox.51.png | Bin 559 -> 520 bytes .../signTransactionRecordobt/nanox.52.png | Bin 561 -> 524 bytes .../signTransactionRecordobt/nanox.56.png | Bin 565 -> 564 bytes .../signTransactionRecordobt/nanox.57.png | Bin 581 -> 580 bytes .../signTransactionRecordobt/nanox.74.png | Bin 559 -> 520 bytes .../signTransactionRecordobt/nanox.75.png | Bin 561 -> 524 bytes .../signTransactionRecordobt/nanox.79.png | Bin 565 -> 564 bytes .../signTransactionRecordobt/nanox.80.png | Bin 581 -> 580 bytes .../signTransactionRemaddress/nanos.04.png | Bin 508 -> 473 bytes .../signTransactionRemaddress/nanos.12.png | Bin 508 -> 473 bytes .../signTransactionRemaddress/nanos.21.png | Bin 508 -> 473 bytes .../signTransactionRemaddress/nanos.31.png | Bin 508 -> 473 bytes .../signTransactionRemaddress/nanos.42.png | Bin 508 -> 473 bytes .../signTransactionRemaddress/nanox.04.png | Bin 1009 -> 965 bytes .../signTransactionRemaddress/nanox.05.png | Bin 462 -> 428 bytes .../signTransactionRemaddress/nanox.14.png | Bin 1009 -> 965 bytes .../signTransactionRemaddress/nanox.15.png | Bin 462 -> 428 bytes .../signTransactionRemaddress/nanox.25.png | Bin 1009 -> 965 bytes .../signTransactionRemaddress/nanox.26.png | Bin 462 -> 428 bytes .../signTransactionRemaddress/nanox.37.png | Bin 1009 -> 965 bytes .../signTransactionRemaddress/nanox.38.png | Bin 462 -> 428 bytes .../signTransactionRemaddress/nanox.50.png | Bin 1009 -> 965 bytes .../signTransactionRemaddress/nanox.51.png | Bin 462 -> 428 bytes .../signTransactionRemnft/nanos.04.png | Bin 508 -> 473 bytes .../signTransactionRemnft/nanos.12.png | Bin 508 -> 473 bytes .../signTransactionRemnft/nanos.21.png | Bin 508 -> 473 bytes .../signTransactionRemnft/nanox.04.png | Bin 1009 -> 965 bytes .../signTransactionRemnft/nanox.05.png | Bin 462 -> 428 bytes .../signTransactionRemnft/nanox.14.png | Bin 1009 -> 965 bytes .../signTransactionRemnft/nanox.15.png | Bin 462 -> 428 bytes .../signTransactionRemnft/nanox.25.png | Bin 1009 -> 965 bytes .../signTransactionRemnft/nanox.26.png | Bin 462 -> 428 bytes 293 files changed, 395 insertions(+), 489 deletions(-) create mode 100644 test-integration/snapshots/decodeMessage/nanox.71.png create mode 100644 test-integration/snapshots/decodeMessage/nanox.72.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index f048b24a..9c44d761 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -24,6 +24,7 @@ export const enum VALUE_FORMAT { VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01, VALUE_FORMAT_ASCII_STRING = 0x02, VALUE_FORMAT_NAME = 0x03, + VALUE_FORMAT_ASCII_STRING_WITH_LENGTH = 0x04, VALUE_FORMAT_FIO_AMOUNT = 0x10, VALUE_FORMAT_UINT64 = 0x14, @@ -228,6 +229,45 @@ export function COMMAND_APPEND_DATA_STRING_SHOW(key: string, varData: Buffer, bu } } +//calculates the length of varint +function lenlen(n: number): number { + return 1 + (n >= 128 ? 1 : 0) + (n >= 16384 ? 1 : 0) + (n >= 2097152 ? 1 : 0) + (n >= 268435456 ? 1 : 0) +} + +export function COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + const vD = Buffer.concat([varuint32_to_buf(varData.length), varData]); + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING_WITH_LENGTH, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin + lenlen(bufLenMin)), BigInt(bufLenMax + lenlen(bufLenMax)), + VALUE_POLICY.VALUE_DO_NOT_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + "" + ), + varData: vD, + txLen: vD.length, + } +} + +export function COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW(key: string, varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + const vD = Buffer.concat([varuint32_to_buf(varData.length), varData]); + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING_WITH_LENGTH, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin + lenlen(bufLenMin)), BigInt(bufLenMax + lenlen(bufLenMax)), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: vD, + txLen: vD.length, + } +} + export function COMMAND_APPEND_DATA_NAME_SHOW(key: string, name: HexString): Command { return { ...defaultCommand, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts index 11bdf896..1ae6913a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -154,16 +156,12 @@ export function template_addaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts index a7adad0f..467bb6d1 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts @@ -5,7 +5,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW ADD_STORAGE_CHECK, templateAlternative, COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, - COMMAND_APPEND_DATA_UINT64_SHOW} from "./commands" + COMMAND_APPEND_DATA_UINT64_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -36,14 +38,10 @@ export function template_addbundles(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_UINT64_SHOW("Bundle sets", uint64_to_buf(actionData.bundle_sets).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts index 9ea0de62..3dff2d07 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -5,7 +5,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW ADD_STORAGE_CHECK, templateAlternative, COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -30,15 +32,9 @@ function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_CONST_DATA("01" as HexString), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), ] } @@ -58,26 +54,14 @@ function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_CONST_DATA("02" as HexString), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, actionData.nfts[1].contract_address, actionData.nfts[1].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), ] } @@ -97,37 +81,19 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_CONST_DATA("03" as HexString), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, actionData.nfts[1].contract_address, actionData.nfts[1].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, actionData.nfts[2].contract_address, actionData.nfts[2].token_id), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].url), 0, 128) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 1, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].metadata), 0, 128) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].url), 0, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].metadata), 0, 128), ] } @@ -156,16 +122,12 @@ export function template_addnft(chainId: HexString, tx: ParsedTransaction, parse COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts index 55d026d0..1d29143d 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_cancelfndreq.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t, ParsedCancelFundsRequest} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -30,17 +30,13 @@ export function template_cancelfndreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Request ID", Buffer.from(actionData.fio_request_id)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 77705a2e..0825a0b6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMANDS_DH_ENCODE, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -29,26 +29,14 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Cr.Handle", Buffer.from(actionData.payer_fio_address), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Cr.Handle", Buffer.from(actionData.payee_fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Cr. H.", Buffer.from(actionData.payer_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Cr. H.", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.payee_public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Amount requested", Buffer.from(actionData.amount)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Public Addr", Buffer.from(actionData.payee_public_address)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Amount requested", Buffer.from(actionData.amount)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), COMMAND_APPEND_DATA_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 296), @@ -57,9 +45,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 842c9f79..8a901a83 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -30,38 +30,18 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer FIO Cr.Handle", Buffer.from(actionData.payer_fio_address), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee FIO Cr.Handle", Buffer.from(actionData.payee_fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Request ID", Buffer.from(actionData.fio_request_id)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Cr. H.", Buffer.from(actionData.payer_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Cr. H.", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payer Public Addr.", Buffer.from(actionData.payer_public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Public Addr.", Buffer.from(actionData.payee_public_address)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Amount requested", Buffer.from(actionData.amount)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Status", Buffer.from(actionData.status)), - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Obt ID", Buffer.from(actionData.obt_id)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer Public Addr", Buffer.from(actionData.payer_public_address)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Public Addr", Buffer.from(actionData.payee_public_address)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Amount requested", Buffer.from(actionData.amount)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Token code", Buffer.from(actionData.token_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Status", Buffer.from(actionData.status)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Obt ID", Buffer.from(actionData.obt_id)), COMMAND_APPEND_DATA_MEMO_HASH(actionData.memo, actionData.hash, actionData.offline_url), ]) ], 64, 432), @@ -70,9 +50,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts index d12d08df..ab7aabd4 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,18 +37,12 @@ export function template_regaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts index ce08549c..3a943b77 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,18 +37,12 @@ export function template_regdomain(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts index f5c83c5f..73176c84 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_rejectfndreq.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t, ParsedRejectFundsRequest} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -30,17 +30,13 @@ export function template_rejectfndreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Request ID", Buffer.from(actionData.fio_request_id)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Request ID", Buffer.from(actionData.fio_request_id)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ...COMMANDS_COUNTED_SECTION([ ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1_DECODE_NAME, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.actor), 0, 14)), ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts index 6dbf2b1d..0282dae6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -154,16 +156,12 @@ export function template_remaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts index 67522133..64941fee 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,15 +37,11 @@ export function template_remalladdr(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts index bfcdcf74..821f6ba6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,15 +37,11 @@ export function template_remallnfts(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts index ab9cdec6..a40b43d9 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -5,7 +5,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW ADD_STORAGE_CHECK, templateAlternative, COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -102,16 +104,12 @@ export function template_remnft(chainId: HexString, tx: ParsedTransaction, parse COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts index b5b9a202..8ed388e2 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,13 +37,9 @@ export function template_renewdomain(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts index 902b98c9..faff27de 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -68,16 +70,12 @@ export function template_setdomainpub(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62), ...isPublicCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts index 1ebc91f3..22236d8f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts @@ -2,7 +2,9 @@ import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddr import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, - ADD_STORAGE_CHECK } from "./commands" + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -33,14 +35,10 @@ export function template_stakefio(chainId: HexString, tx: ParsedTransaction, par COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts index 0a532f07..efd565d7 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_trnsfiopubky.ts @@ -3,7 +3,9 @@ import { COMMAND, Command, constDataAppendData, VALUE_FORMAT, VALUE_VALIDATION, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, - ADD_STORAGE_CHECK} from "./commands" + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -33,16 +35,12 @@ export function template_trnsfiopubky(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Payee Pubkey", Buffer.from(actionData.payee_public_key)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Pubkey", Buffer.from(actionData.payee_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts index 841a6642..c38dd36a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts @@ -2,7 +2,9 @@ import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddr import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, - ADD_STORAGE_CHECK } from "./commands" + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -33,14 +35,10 @@ export function template_unstakefio(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), ]), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts index 1ea1a7d6..f597896c 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts @@ -3,7 +3,8 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, - templateAlternative} from "./commands" + templateAlternative, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW} from "./commands" import { uint64_to_buf, uint8_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -23,10 +24,8 @@ function template_n(n: number) { return [ COMMAND_APPEND_CONST_DATA(uint8_to_buf(n as Uint8_t).toString("hex") as HexString), - ... [...Array(n).keys()].flatMap( - k => COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Producer " + (k+1), Buffer.from(actionData.producers[k]), 3, 64) - ]), + ... [...Array(n).keys()].map( + k => COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Producer " + (k+1), Buffer.from(actionData.producers[k]), 3, 64) ) ] } @@ -60,9 +59,7 @@ export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...producerCommands, - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts index 4058ee95..22e75498 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts @@ -2,7 +2,8 @@ import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddr import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, - ADD_STORAGE_CHECK } from "./commands" + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -33,12 +34,8 @@ export function template_voteproxy(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Proxy", Buffer.from(actionData.proxy), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Proxy", Buffer.from(actionData.proxy), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts index 731d7715..7d354521 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts @@ -5,7 +5,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW ADD_STORAGE_CHECK, templateAlternative, COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, - COMMAND_APPEND_DATA_UINT64_SHOW} from "./commands" + COMMAND_APPEND_DATA_UINT64_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -36,18 +38,12 @@ export function template_xferaddress(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Crypto Handle", Buffer.from(actionData.fio_address), 3, 64) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("Owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts index e3182930..72c4867f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts @@ -4,7 +4,9 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW} from "./commands" + COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -35,18 +37,12 @@ export function template_xferdomain(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62) - ]), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_SHOW("New owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)) - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("New owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), - ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW(Buffer.from(actionData.tpid)), - ]), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), ]), ]; } diff --git a/src/decodeDH.c b/src/decodeDH.c index b38ebb57..6746c60d 100644 --- a/src/decodeDH.c +++ b/src/decodeDH.c @@ -96,7 +96,7 @@ static void decodeNewfundsreqMemo_ui_runStep() { ui_displayPaginatedText("Decode shared", "secret", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2) { - ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + ui_displayPaginatedText("Interpreting", "the message as Request funds", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_OUR_PATH) { ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); @@ -172,7 +172,7 @@ static void decodeNewfundsreqHash_ui_runStep() { ui_displayPaginatedText("Decode shared", "secret", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE2) { - ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + ui_displayPaginatedText("Interpreting", "the message as Request funds", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OUR_PATH) { ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); @@ -288,7 +288,9 @@ static void decodeRecordobtMemo_ui_runStep() { ui_displayPaginatedText("Decode shared", "secret", this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE2) { - ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + ui_displayPaginatedText("Interpreting", + "the message as Record other blockchain transaction metadata", + this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OUR_PATH) { ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); @@ -385,7 +387,9 @@ static void decodeRecordobtHash_ui_runStep() { ui_displayPaginatedText("Decode shared", "secret", this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE2) { - ui_displayPaginatedText("Interpreting", "the message as Request funds,", this_fn); + ui_displayPaginatedText("Interpreting", + "the message as Record other blockchain transaction metadata", + this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OUR_PATH) { ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index a3442fdf..5d43bee4 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -45,226 +45,198 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { 0xbb, 0x66, 0xea, 0x0e, 0xff, 0xde, 0x09, 0x43, 0x50, 0xca, 0xba, 0xd4, 0x6f, 0xbf, 0x94, 0xc5, 0x4d, 0x7c, 0x5c, 0xb3, 0x41}, #endif - // transfiopubkey - {0x60, 0x26, 0x4a, 0x32, 0xc0, 0x54, 0x40, 0x2b, 0xb3, 0x41, 0xcc, - 0xd5, 0xb7, 0x8f, 0xef, 0xfe, 0xe0, 0xe2, 0x8f, 0xa5, 0xfc, 0x8c, - 0x03, 0x3f, 0xcc, 0x3d, 0x51, 0x33, 0x0c, 0x8a, 0x70, 0xca}, - // newfundsreq (DH finalize and sign tx) - {0x25, 0xde, 0xe5, 0x00, 0xed, 0xa3, 0x1d, 0x5f, 0xad, 0x3d, 0x5e, - 0xc5, 0x9d, 0xf1, 0x73, 0xf4, 0x8f, 0x63, 0xd1, 0xf4, 0x02, 0x02, - 0x8b, 0x0a, 0x2a, 0x39, 0x53, 0xc1, 0xf7, 0x55, 0xbb, 0xea}, - {0x3f, 0x0e, 0xfa, 0x4a, 0x88, 0x02, 0xdc, 0x89, 0x52, 0x0c, 0x61, - 0x89, 0xcd, 0xa4, 0x2e, 0xc1, 0xf4, 0x99, 0x8e, 0xa6, 0xba, 0xa0, - 0x72, 0x0f, 0xd3, 0xc5, 0x74, 0x12, 0x33, 0x79, 0xaa, 0xd9}, - // reqobt (DH finalize and sign tx) - {0x7c, 0x0e, 0x02, 0x59, 0x92, 0xf4, 0x0f, 0x0f, 0xfd, 0x8c, 0xc0, - 0x19, 0xed, 0x83, 0xf9, 0x98, 0x9a, 0x75, 0x21, 0xa2, 0xa9, 0x1e, - 0x7b, 0x18, 0x8c, 0x3b, 0x7c, 0x2e, 0x21, 0x4b, 0x7f, 0x77}, - {0x4e, 0x14, 0x84, 0xed, 0x2b, 0xcc, 0x25, 0x99, 0xb4, 0xf9, 0x06, - 0x02, 0xc1, 0x5a, 0x7d, 0x78, 0x3e, 0x5a, 0xf6, 0x74, 0x40, 0xdf, - 0xd9, 0x8c, 0x7e, 0x29, 0x64, 0x53, 0xc5, 0x2a, 0xa7, 0x8b}, - // addaddress (1 to 5 addresses) - {0xbb, 0x08, 0x25, 0xcd, 0x94, 0x83, 0x17, 0x1e, 0xb9, 0x2c, 0x6d, - 0x2e, 0x47, 0x35, 0x43, 0xdc, 0xc5, 0xbf, 0xaf, 0x39, 0x91, 0x5b, - 0xed, 0x3a, 0xcd, 0xcc, 0x00, 0x72, 0x64, 0xca, 0x1b, 0xa2}, - {0x76, 0xd3, 0x46, 0x0b, 0xc6, 0x86, 0x3a, 0xc2, 0x3c, 0xbe, 0x70, - 0x9e, 0xef, 0xed, 0xc0, 0xd1, 0x17, 0x50, 0x35, 0x95, 0x6f, 0xf0, - 0xb2, 0x17, 0x66, 0x0a, 0x08, 0x08, 0x5c, 0x31, 0xdc, 0x00}, - {0x13, 0x10, 0x9b, 0x7f, 0x21, 0x46, 0x11, 0xc7, 0xce, 0x9a, 0xfb, - 0x61, 0x40, 0x9d, 0x4e, 0xf8, 0xe5, 0x05, 0x3d, 0x9e, 0x24, 0x1e, - 0xf4, 0xf7, 0xb6, 0x61, 0x76, 0xfe, 0x7c, 0x2e, 0x0b, 0xca}, - {0xff, 0xba, 0xdf, 0x34, 0x4c, 0x1a, 0x18, 0xdf, 0x4b, 0x21, 0xb8, - 0xfd, 0xf8, 0xea, 0x7a, 0x7f, 0x4e, 0xb1, 0x6f, 0x05, 0xd8, 0xe1, - 0x05, 0x29, 0x0d, 0xa4, 0x0d, 0xa2, 0x49, 0x0d, 0x36, 0x12}, - {0xe2, 0xc0, 0x28, 0x29, 0xaf, 0xf7, 0x73, 0xa2, 0xf0, 0xaf, 0x20, - 0x0b, 0x0b, 0xc0, 0x01, 0xac, 0x61, 0x08, 0x5d, 0x39, 0xf6, 0x86, - 0xad, 0xa8, 0xf1, 0xce, 0xb9, 0x90, 0xe7, 0x4e, 0xb4, 0x4e}, - // remaddress (1 to 5 addresses) - {0x87, 0x2c, 0x69, 0x5d, 0xac, 0x27, 0x71, 0xe1, 0xf4, 0xd6, 0xeb, - 0x4e, 0x73, 0x9c, 0xec, 0x9c, 0x42, 0x4d, 0x94, 0x86, 0xf1, 0x3d, - 0x5a, 0x65, 0x58, 0xd0, 0xae, 0xbf, 0x02, 0x0d, 0x8c, 0xed}, - {0x5e, 0x42, 0x16, 0x16, 0xbf, 0xab, 0x3f, 0xde, 0x4d, 0xcc, 0x0f, - 0x1c, 0x86, 0x93, 0x03, 0x5a, 0x1f, 0x46, 0x74, 0xd7, 0xf6, 0xce, - 0x47, 0xf4, 0xdc, 0x76, 0xe4, 0xab, 0xce, 0x17, 0x84, 0xe1}, - {0x34, 0xca, 0x69, 0x49, 0x7f, 0xce, 0x90, 0x31, 0xbb, 0x72, 0x0b, - 0xad, 0x27, 0xe1, 0x17, 0xdc, 0xe3, 0xdb, 0x4f, 0x01, 0x9d, 0xfb, - 0x35, 0xcb, 0xa7, 0x72, 0xb1, 0x9b, 0x1f, 0x36, 0x92, 0x37}, - {0xe0, 0x42, 0xe1, 0x69, 0xf3, 0xbc, 0xb8, 0x3a, 0x07, 0xc0, 0xed, - 0x0b, 0x0a, 0x4d, 0x3c, 0x89, 0xa2, 0xcb, 0x3a, 0x2d, 0x0d, 0x43, - 0x3d, 0x36, 0xdf, 0xb2, 0x5a, 0x96, 0x75, 0xc8, 0x6f, 0xe2}, - {0xbf, 0xbd, 0xd1, 0xef, 0xef, 0x67, 0x88, 0xc1, 0x03, 0xbd, 0xc7, - 0x51, 0x0d, 0xee, 0xa9, 0x62, 0x9c, 0x2a, 0xc2, 0xb0, 0xac, 0x60, - 0x37, 0x30, 0x48, 0xcf, 0x2a, 0xf5, 0xb5, 0x3c, 0x73, 0x67}, - // addnft (1 to 3 nfts) - {0xb5, 0x7a, 0x5b, 0xd1, 0xc1, 0xd8, 0xd5, 0x00, 0x3f, 0xe1, 0x76, - 0x4a, 0xbb, 0x0a, 0x88, 0x16, 0xda, 0x38, 0x41, 0xc3, 0xd5, 0x93, - 0xfe, 0x4c, 0xf0, 0xe4, 0xe6, 0x93, 0xbe, 0x30, 0xf6, 0x94}, - {0x46, 0xc7, 0xf7, 0x84, 0x5c, 0x80, 0xcf, 0x88, 0x0e, 0x63, 0x3e, - 0xb7, 0xe6, 0x10, 0xed, 0x18, 0x8e, 0xdf, 0x38, 0x32, 0xa5, 0x43, - 0x4f, 0x11, 0xc1, 0xbb, 0x1d, 0xc8, 0x67, 0x58, 0x10, 0xdf}, - {0x12, 0x97, 0xe7, 0x66, 0xb4, 0xf1, 0x4a, 0x69, 0x4e, 0x69, 0xa4, - 0x89, 0x12, 0x01, 0xcc, 0xff, 0xb8, 0x9c, 0x8c, 0xba, 0x90, 0xd7, - 0xb9, 0x0a, 0x1d, 0x73, 0x5a, 0xea, 0x71, 0x21, 0x06, 0xd4}, - // remnft (1 to 3 nfts) - {0x1b, 0x25, 0x90, 0xd8, 0xa5, 0xe7, 0x5b, 0xc1, 0x02, 0x46, 0xae, - 0x6e, 0x73, 0xe6, 0xd5, 0x13, 0xf3, 0x40, 0xa3, 0x15, 0xae, 0x9f, - 0x7d, 0x96, 0xed, 0x46, 0x72, 0x84, 0x00, 0xac, 0xf9, 0x3f}, - {0xb2, 0xc5, 0x9b, 0x73, 0x3d, 0x84, 0x37, 0xb5, 0x9b, 0xf9, 0xa5, - 0x9a, 0x05, 0xcf, 0xc6, 0xd2, 0x21, 0xf9, 0x78, 0xec, 0x6b, 0xa1, - 0x7a, 0x51, 0xbd, 0x87, 0xd6, 0x43, 0x44, 0xc2, 0x14, 0x2b}, - {0x76, 0xe3, 0xa5, 0xf2, 0x6c, 0x3e, 0xb9, 0x9d, 0x04, 0xc1, 0x49, - 0x05, 0x5e, 0x6f, 0xae, 0xbc, 0x97, 0x7a, 0x75, 0xaa, 0xe7, 0x8b, - 0x32, 0x26, 0x19, 0xb9, 0x24, 0xdf, 0x16, 0x22, 0x39, 0x6e}, - // remalladdr - {0x0c, 0xc1, 0xac, 0x65, 0x14, 0x53, 0xa8, 0xe6, 0x4c, 0x0c, 0x83, - 0xcb, 0x5a, 0x08, 0xc1, 0x50, 0x11, 0x0e, 0xc8, 0x59, 0x91, 0xcc, - 0xec, 0xb5, 0xb3, 0xd8, 0xa3, 0xc6, 0x4c, 0x4e, 0x42, 0x7e}, - // addbundles - {0x7e, 0x95, 0xf7, 0xd5, 0x10, 0xa1, 0x22, 0x90, 0xbc, 0x0c, 0xa9, - 0x9e, 0xfc, 0xae, 0x01, 0x08, 0x9b, 0x53, 0x07, 0x1a, 0xf5, 0x96, - 0xda, 0xaf, 0x6d, 0x20, 0x1b, 0x99, 0x9e, 0x1c, 0xe7, 0xfe}, - // regaddress - {0x31, 0x75, 0x60, 0x8d, 0xb5, 0x99, 0x15, 0x21, 0x91, 0x2b, 0x03, - 0xf2, 0xf4, 0x05, 0x21, 0x6c, 0x6c, 0x56, 0x10, 0x85, 0x87, 0xdc, - 0x3c, 0x17, 0x58, 0x09, 0x77, 0x3e, 0x75, 0xb0, 0x0e, 0x99}, - // xferaddress - {0xf1, 0x4c, 0x79, 0xd4, 0x6c, 0x49, 0x8b, 0x89, 0xba, 0x69, 0xa8, - 0xf8, 0x7c, 0x85, 0x7c, 0xc9, 0x35, 0x81, 0x1e, 0x1b, 0x61, 0x41, - 0x74, 0x9a, 0x49, 0xa2, 0xe9, 0x66, 0xcf, 0xcd, 0x0d, 0x36}, - // regdomain - {0x60, 0xd8, 0xec, 0x6f, 0x61, 0x65, 0x77, 0x4c, 0xad, 0xf6, 0xae, - 0x63, 0x51, 0x2a, 0xbd, 0x78, 0xa1, 0x25, 0xb7, 0x31, 0xf5, 0x6c, - 0xe2, 0x95, 0x48, 0x5f, 0x49, 0xf2, 0x4a, 0xf0, 0xe4, 0x46}, - // renewdomain - {0x56, 0x06, 0x75, 0xf9, 0xab, 0x9f, 0xbd, 0x46, 0x3c, 0x0d, 0x60, - 0xf1, 0x02, 0x4b, 0x44, 0xea, 0xd4, 0xe3, 0xe6, 0x9e, 0x3a, 0x3c, - 0xf9, 0xb4, 0xf7, 0xee, 0xbd, 0xf3, 0xe8, 0xbb, 0x8a, 0x82}, - // setdomainpub(true, false) - {0x0a, 0x20, 0xee, 0x2e, 0x7b, 0x8b, 0x69, 0xcd, 0x80, 0xf0, 0xdc, - 0xed, 0xaa, 0x49, 0x0a, 0xa1, 0xef, 0x1d, 0x45, 0x92, 0x17, 0xd2, - 0xfc, 0x49, 0x14, 0x5e, 0x08, 0xad, 0xfa, 0x09, 0xda, 0xb0}, - {0xd4, 0x19, 0x5a, 0xae, 0x6f, 0x0d, 0x6d, 0x41, 0xd0, 0xcb, 0x2e, - 0xd1, 0xc7, 0xdb, 0xa8, 0x16, 0x5d, 0x91, 0x78, 0xa2, 0x91, 0x0c, - 0xab, 0x88, 0x5b, 0x0a, 0x44, 0xcb, 0xed, 0x6b, 0x8d, 0xc1}, - // xferdomain - {0xc1, 0x34, 0x06, 0xc6, 0xb1, 0x9f, 0xbd, 0xff, 0xf5, 0xba, 0xe0, - 0x2b, 0x3a, 0x4d, 0x5f, 0x1b, 0xfd, 0x7f, 0x59, 0x48, 0xc4, 0xba, - 0x23, 0x22, 0xc3, 0x63, 0xf5, 0x6d, 0xda, 0x6c, 0xb6, 0x67}, - // remallnfts - {0xf4, 0xaa, 0x02, 0xff, 0x5c, 0x51, 0xea, 0x15, 0x33, 0x80, 0x53, - 0xbc, 0xec, 0x1f, 0x2c, 0x19, 0x85, 0x64, 0xb3, 0xd3, 0xaf, 0x24, - 0x7a, 0x4c, 0x3c, 0xe2, 0xe2, 0x06, 0xec, 0x52, 0xce, 0x65}, - // cancelfndreq - {0x92, 0xdc, 0xfb, 0x2f, 0xdc, 0x06, 0x15, 0xe3, 0x0f, 0xfe, 0x47, - 0x7c, 0x6b, 0x57, 0xe0, 0xf4, 0xbd, 0x12, 0x59, 0x13, 0xe1, 0xa6, - 0x97, 0x4a, 0xa1, 0x82, 0x36, 0xe1, 0x06, 0x69, 0x28, 0xc3}, - // rejectfndreq - {0x1f, 0xcd, 0x65, 0xe4, 0x5c, 0x2f, 0xd4, 0x78, 0x38, 0x01, 0xad, - 0xc5, 0x4a, 0x98, 0xdc, 0x6c, 0xa1, 0x5a, 0xd9, 0x84, 0xe0, 0x60, - 0x1e, 0x40, 0x06, 0xa9, 0x35, 0xb6, 0x05, 0xc4, 0x1e, 0x24}, - // stakefio - {0x41, 0xe9, 0xb6, 0xee, 0x12, 0x64, 0xf8, 0xac, 0xd8, 0x26, 0x79, - 0x6b, 0x8a, 0xed, 0x5a, 0x73, 0xe9, 0x95, 0xef, 0xe2, 0x94, 0xb9, - 0x71, 0x48, 0x14, 0x44, 0x99, 0x2e, 0x17, 0xb4, 0x99, 0xf5}, - // unstakefio - {0x0d, 0x99, 0x33, 0x50, 0x1d, 0x74, 0xfb, 0x4e, 0xd0, 0x1c, 0xb4, - 0xa1, 0x12, 0xfd, 0x05, 0x76, 0x5f, 0x73, 0xda, 0x96, 0x2a, 0x29, - 0x42, 0xb8, 0x96, 0xfd, 0xb9, 0x87, 0xeb, 0xd8, 0xd5, 0x28}, - // voteproducer (1 to 30 producers) - {0xb5, 0xd9, 0xdb, 0x9f, 0x0b, 0x3b, 0x7c, 0xad, 0x2d, 0xc5, 0xd2, - 0xd0, 0xa8, 0xe9, 0xc6, 0xfb, 0x24, 0x31, 0x87, 0x9c, 0x8f, 0x6b, - 0xd7, 0x6a, 0x23, 0x04, 0x78, 0xbd, 0xdc, 0x5b, 0x7e, 0xcb}, - {0xf1, 0x7a, 0xeb, 0xe7, 0x79, 0xc9, 0xf7, 0xee, 0x31, 0x08, 0x67, - 0xc8, 0x43, 0x5c, 0x49, 0x55, 0xba, 0x2c, 0xef, 0x75, 0xc8, 0x1a, - 0x29, 0x80, 0xe7, 0x13, 0x66, 0xb6, 0xfe, 0x31, 0xf8, 0xfd}, - {0x09, 0x64, 0xeb, 0xb4, 0x1d, 0x86, 0xff, 0xae, 0x0b, 0x84, 0xbc, - 0x9a, 0x6f, 0xba, 0x6e, 0x72, 0x9c, 0x5f, 0x6c, 0xf4, 0x96, 0x1a, - 0xfa, 0xb1, 0x31, 0x69, 0x22, 0xb1, 0x18, 0x49, 0x77, 0xd6}, - {0x7e, 0x29, 0x19, 0x93, 0xf5, 0x69, 0x4a, 0xc9, 0x5b, 0x35, 0xaa, - 0xef, 0xb2, 0x49, 0x25, 0x9f, 0x36, 0x74, 0x70, 0xbb, 0x77, 0xc9, - 0xf5, 0x18, 0xea, 0x58, 0x5e, 0x8b, 0xc5, 0x3a, 0x73, 0x61}, - {0x7c, 0xe8, 0x5f, 0x32, 0xe7, 0x70, 0xe2, 0x29, 0xe6, 0x3d, 0x4a, - 0xf7, 0x2e, 0x17, 0x70, 0x32, 0xd8, 0x4b, 0xd3, 0x97, 0x8c, 0xbf, - 0xe2, 0x65, 0xdd, 0x12, 0x02, 0xe7, 0x1e, 0x49, 0xc0, 0xe3}, - {0xdb, 0x33, 0x34, 0x5a, 0xb8, 0x0f, 0x2a, 0x73, 0x2e, 0x8a, 0xae, - 0xd6, 0x54, 0x11, 0x88, 0x78, 0x85, 0x32, 0xc0, 0x4b, 0xeb, 0xf2, - 0x15, 0x48, 0x3e, 0x13, 0xf2, 0xe8, 0x21, 0xc4, 0x20, 0x27}, - {0x85, 0xa4, 0xb9, 0x25, 0x94, 0xcd, 0x9c, 0xea, 0x49, 0xfd, 0xf1, - 0x56, 0x0b, 0xed, 0x72, 0x1f, 0x85, 0x54, 0x84, 0x9b, 0x37, 0xa0, - 0x83, 0x74, 0xc1, 0x9d, 0xf8, 0x89, 0x2e, 0x38, 0x7f, 0x5f}, - {0x71, 0x36, 0x5d, 0x7a, 0xa6, 0x14, 0x0f, 0x81, 0x8b, 0x44, 0x75, - 0xe4, 0x95, 0x7d, 0x39, 0xc9, 0x31, 0xa2, 0x92, 0xde, 0xf7, 0xa5, - 0xdc, 0x34, 0xb2, 0x7d, 0xcf, 0x67, 0xf7, 0x4f, 0xac, 0xdc}, - {0xb6, 0x76, 0x02, 0x1f, 0xdc, 0xdf, 0x22, 0xed, 0xba, 0xd2, 0x5e, - 0x3c, 0x0e, 0x92, 0x68, 0xb6, 0x60, 0xe1, 0x9b, 0xba, 0xfa, 0x3d, - 0xae, 0x63, 0xbe, 0x1b, 0x56, 0x2c, 0x24, 0x11, 0x18, 0xaa}, - {0xf7, 0x76, 0x65, 0x06, 0x9b, 0x59, 0xe4, 0xa6, 0x48, 0xc5, 0xa8, - 0xf1, 0x05, 0x8b, 0x3e, 0x7b, 0xa3, 0x27, 0xc5, 0x5b, 0x42, 0xfd, - 0x77, 0xde, 0x51, 0xcf, 0x01, 0xcd, 0x90, 0x4c, 0xf2, 0xdf}, - {0x45, 0x50, 0x1a, 0xcf, 0x24, 0x58, 0x8c, 0x72, 0xb1, 0x01, 0x53, - 0x18, 0x60, 0xcf, 0x2e, 0xe7, 0x69, 0xcc, 0xe1, 0x33, 0x4d, 0xcf, - 0x9c, 0xca, 0x16, 0x39, 0x0a, 0x42, 0x86, 0x46, 0xa9, 0xd7}, - {0xf8, 0x6b, 0x64, 0x55, 0x5d, 0xd5, 0x5e, 0x60, 0x17, 0xdf, 0x0a, - 0xa9, 0xd6, 0x4a, 0x40, 0x00, 0xae, 0x3c, 0xea, 0x05, 0xef, 0x72, - 0xcc, 0x44, 0xf3, 0x1e, 0x8e, 0x68, 0xaa, 0x29, 0x7d, 0x82}, - {0x4e, 0x9f, 0x93, 0x73, 0x98, 0x6b, 0xde, 0x3f, 0x48, 0x29, 0x6a, - 0x31, 0xc3, 0x90, 0x65, 0x27, 0x52, 0x62, 0xa9, 0x3d, 0x7e, 0x7c, - 0xc9, 0x6b, 0xae, 0x39, 0x1f, 0x5e, 0x67, 0x79, 0xfb, 0x84}, - {0x1b, 0x66, 0x75, 0xc2, 0x2c, 0xa5, 0xd2, 0x8f, 0x47, 0x19, 0x50, - 0x91, 0x18, 0x8e, 0xac, 0xba, 0x2d, 0x30, 0x66, 0x4b, 0xd6, 0x52, - 0xe2, 0x22, 0xe3, 0x06, 0x09, 0x4b, 0x9b, 0x6f, 0xc7, 0x5c}, - {0x9d, 0xc2, 0xe2, 0x5e, 0x25, 0xc1, 0x2e, 0xb2, 0x67, 0x14, 0x0f, - 0xaa, 0x1c, 0x72, 0x47, 0x34, 0x6d, 0x48, 0x9f, 0xec, 0xcb, 0xa2, - 0x1a, 0x6f, 0x6d, 0xec, 0xca, 0x78, 0xf7, 0xec, 0x29, 0x4c}, - {0xdf, 0xca, 0xa4, 0x89, 0x8d, 0xf6, 0x1c, 0x97, 0x9c, 0xd1, 0x0b, - 0x6f, 0xba, 0x85, 0xcd, 0xd0, 0xf6, 0x35, 0x8d, 0xb5, 0x53, 0x38, - 0xb5, 0x89, 0x26, 0xb2, 0xdc, 0xae, 0xf9, 0x7e, 0x23, 0xf4}, - {0x5f, 0x38, 0xb6, 0x06, 0x72, 0x61, 0x3a, 0xc7, 0xfc, 0xd5, 0xab, - 0xed, 0x51, 0x97, 0x22, 0xe4, 0xda, 0xa7, 0x58, 0xd6, 0x24, 0xa9, - 0x37, 0x8b, 0x1b, 0x5e, 0x81, 0x99, 0x12, 0xcc, 0x0c, 0xcf}, - {0x12, 0x76, 0x66, 0x77, 0x12, 0xaf, 0x51, 0xaf, 0x50, 0xa1, 0x70, - 0xb2, 0x76, 0x1f, 0xa7, 0x52, 0xec, 0x85, 0x2e, 0x5c, 0x45, 0x4a, - 0xad, 0xce, 0x6f, 0xfb, 0xd3, 0xf6, 0xda, 0xf0, 0x33, 0x17}, - {0x78, 0xdf, 0xd7, 0x19, 0xec, 0xfe, 0x3e, 0x95, 0xb8, 0x28, 0xb0, - 0x0c, 0x0d, 0x31, 0x25, 0xb9, 0x06, 0x9f, 0x5b, 0x00, 0x7c, 0xe4, - 0x91, 0x9b, 0x93, 0xc3, 0x9b, 0xc8, 0x2b, 0xcc, 0x7a, 0x89}, - {0xb9, 0x66, 0xe2, 0x78, 0xf5, 0x33, 0x7d, 0x9d, 0x5c, 0xbe, 0x89, - 0x3d, 0xfe, 0xde, 0x97, 0x17, 0xa6, 0x33, 0x2a, 0xfb, 0x59, 0xb8, - 0xf7, 0x81, 0x8b, 0x2b, 0x66, 0xf3, 0x38, 0xf9, 0xc0, 0xb9}, - {0x91, 0x8e, 0x76, 0xb2, 0xf3, 0x8e, 0xdf, 0x00, 0x0b, 0xc2, 0x0a, - 0xc8, 0xda, 0x49, 0x12, 0x2c, 0x3a, 0x96, 0x14, 0x44, 0x49, 0x75, - 0x78, 0x85, 0xc8, 0xa0, 0x4f, 0xf8, 0xba, 0xf8, 0x82, 0x93}, - {0x53, 0x87, 0x2e, 0x7e, 0x59, 0x35, 0x0f, 0x30, 0x0d, 0x46, 0x84, - 0x20, 0x82, 0x74, 0x66, 0x0a, 0xe8, 0x3d, 0xc8, 0xe5, 0x6b, 0x5c, - 0x20, 0xb6, 0x4e, 0x10, 0xde, 0x18, 0x91, 0x0c, 0x78, 0x52}, - {0x7f, 0x6e, 0x3a, 0x9f, 0x5d, 0x69, 0x1c, 0xad, 0xcd, 0xe6, 0xb2, - 0xc6, 0x94, 0xde, 0xaf, 0x2d, 0x21, 0x6e, 0xaf, 0x39, 0x29, 0xdc, - 0xe3, 0xe6, 0xef, 0x58, 0x64, 0xf6, 0xeb, 0x84, 0x40, 0x81}, - {0x08, 0x3d, 0x6f, 0x76, 0x8b, 0x20, 0x08, 0x45, 0x46, 0xd8, 0xd2, - 0x38, 0x21, 0xb9, 0x7f, 0xbd, 0x61, 0xc2, 0xcc, 0xfe, 0x78, 0x60, - 0xc6, 0x2b, 0xbf, 0x2b, 0x4f, 0xe9, 0x7f, 0x61, 0x80, 0x7a}, - {0xc2, 0xf6, 0x07, 0x83, 0x02, 0xa9, 0x14, 0x68, 0xef, 0xaf, 0x24, - 0xd0, 0x16, 0x2d, 0x7f, 0xc3, 0x5f, 0x21, 0x90, 0xb4, 0xe0, 0x8c, - 0x7b, 0x0f, 0x6c, 0xe6, 0x25, 0x67, 0x1e, 0x1a, 0xcd, 0x1c}, - {0xdd, 0x03, 0x47, 0x27, 0xee, 0x95, 0x75, 0x7e, 0x74, 0x35, 0x3e, - 0x6a, 0x32, 0x75, 0x9b, 0xb1, 0x38, 0x5d, 0xa4, 0xa7, 0x46, 0x15, - 0xe1, 0xb5, 0xef, 0x4b, 0xdb, 0x4d, 0xbc, 0xd8, 0x8e, 0xed}, - {0xb1, 0xb9, 0xf9, 0x13, 0xa5, 0x38, 0xca, 0x62, 0xa6, 0x76, 0xb0, - 0x87, 0xc2, 0xd9, 0x62, 0x27, 0xc2, 0xa5, 0xa2, 0xdc, 0xe6, 0x2c, - 0xc2, 0x50, 0xa7, 0x79, 0x07, 0x56, 0x48, 0x5d, 0x8a, 0xdf}, - {0xd8, 0xec, 0x4a, 0x46, 0x3a, 0x77, 0x2b, 0x60, 0xcf, 0x9c, 0xa3, - 0x73, 0xec, 0x7f, 0x4e, 0x57, 0x16, 0x58, 0x49, 0x8f, 0xd7, 0xa8, - 0x09, 0x03, 0xd1, 0xb5, 0x05, 0x93, 0x3d, 0x76, 0xb8, 0x58}, - {0x22, 0x56, 0x94, 0x3d, 0x42, 0x3c, 0x7a, 0x12, 0x99, 0x09, 0xa3, - 0x2a, 0x36, 0x26, 0x17, 0x27, 0x2f, 0x88, 0x9e, 0x31, 0xcf, 0xa0, - 0x11, 0x14, 0x6c, 0x89, 0x75, 0x38, 0x2b, 0x94, 0x0e, 0x8c}, - {0xc7, 0x6a, 0x3b, 0xb6, 0x5a, 0xc7, 0xd5, 0xfc, 0x2a, 0xa8, 0x19, - 0x2e, 0xa2, 0xba, 0x30, 0x78, 0xda, 0x25, 0xd2, 0x53, 0xfe, 0x69, - 0xee, 0xec, 0xa3, 0xc2, 0xbd, 0x4b, 0x81, 0x99, 0x2a, 0x85}, - // voteproxy - {0xfb, 0x3a, 0x27, 0x7f, 0xb6, 0x52, 0x01, 0xc2, 0x1d, 0xb9, 0x6e, - 0x00, 0x02, 0xb0, 0xc5, 0x4b, 0x3b, 0x41, 0xe1, 0xf3, 0xb9, 0xe9, - 0xab, 0xd6, 0x06, 0x3e, 0x30, 0x31, 0x98, 0x18, 0xd7, 0xe4}, + {0x28, 0xf0, 0x0e, 0x38, 0xc1, 0xb7, 0xe3, 0x24, 0x58, 0x1c, 0xdc, + 0xe7, 0x35, 0xcc, 0x7f, 0xb9, 0xd0, 0x4c, 0x35, 0x9e, 0x0d, 0x9e, + 0x48, 0x7c, 0x5c, 0xdb, 0xad, 0x4b, 0x58, 0x92, 0x24, 0x6e}, + {0x47, 0xb7, 0x1c, 0x69, 0x39, 0xa9, 0x3a, 0x18, 0x4f, 0x3b, 0x72, + 0x19, 0xc6, 0xa0, 0x34, 0xfb, 0x53, 0xf1, 0x86, 0xe5, 0x89, 0xbb, + 0x28, 0x7b, 0x8e, 0x8f, 0xaf, 0x8e, 0xc9, 0xd9, 0x1b, 0x79}, + {0x1f, 0x05, 0xe1, 0xc9, 0x76, 0x1d, 0x08, 0x16, 0x38, 0xb0, 0x7a, + 0x41, 0x1c, 0xa2, 0xe9, 0x13, 0x75, 0x27, 0x11, 0xd2, 0x6f, 0xb3, + 0x80, 0xcc, 0xcd, 0x9e, 0x1b, 0x5c, 0xb3, 0xfb, 0x1b, 0xaf}, + {0x8e, 0xda, 0xb1, 0x23, 0x45, 0x44, 0xd2, 0x64, 0xd9, 0x3f, 0xc1, + 0x92, 0xd3, 0xfa, 0x93, 0x1a, 0xc5, 0xdf, 0x3d, 0x4a, 0x38, 0xad, + 0x75, 0x18, 0xb9, 0x69, 0x13, 0xd0, 0x23, 0x84, 0xe9, 0xc3}, + {0xdb, 0xc9, 0x13, 0xde, 0x67, 0xc7, 0x88, 0x0a, 0x0a, 0x6b, 0x12, + 0x0e, 0xe4, 0xf8, 0xec, 0x9c, 0x89, 0xc9, 0x4f, 0xb0, 0xc0, 0xc8, + 0x3d, 0xa3, 0x97, 0xd8, 0x18, 0x69, 0xcb, 0x63, 0x47, 0xb9}, + {0x41, 0x89, 0xe2, 0x01, 0x6d, 0xeb, 0xed, 0x50, 0x44, 0xf2, 0x21, + 0xa4, 0x07, 0x3f, 0x64, 0x58, 0x0b, 0xe5, 0x02, 0xa2, 0xfe, 0x6a, + 0x7b, 0x90, 0x21, 0xc1, 0x73, 0xae, 0x95, 0xd9, 0x75, 0xc6}, + {0x51, 0xc1, 0x6f, 0x18, 0x9e, 0xed, 0xab, 0xc8, 0x96, 0x9c, 0x2c, + 0x96, 0xcb, 0x9c, 0xb8, 0x40, 0x27, 0xc9, 0x1b, 0x69, 0xdc, 0x3d, + 0xae, 0x30, 0xd0, 0xeb, 0xc4, 0x21, 0xfc, 0xc2, 0x78, 0xbe}, + {0x3c, 0xa4, 0x40, 0xfa, 0xdd, 0xbe, 0xe8, 0x89, 0x09, 0x76, 0x33, + 0x4d, 0x8e, 0xc9, 0x51, 0xd0, 0x3b, 0x74, 0x05, 0x7c, 0xb0, 0xb9, + 0x30, 0x9a, 0x10, 0xde, 0x98, 0x58, 0x84, 0xe0, 0xae, 0x9e}, + {0xa3, 0x78, 0x17, 0x2a, 0x86, 0x10, 0xde, 0xf1, 0xa6, 0xc7, 0x90, + 0x76, 0xa2, 0x09, 0x18, 0x51, 0xb3, 0x25, 0xd0, 0x5c, 0x15, 0xcc, + 0x82, 0x4f, 0x2a, 0xb6, 0xf0, 0xff, 0x36, 0xf9, 0x6d, 0x6f}, + {0x82, 0xe7, 0xe1, 0x1c, 0x93, 0xa0, 0x91, 0xe6, 0xff, 0x9d, 0xf9, + 0x57, 0x6f, 0xfc, 0x1d, 0xd2, 0x00, 0xff, 0xf9, 0x45, 0x96, 0x63, + 0x54, 0x34, 0x31, 0xce, 0x5d, 0xbd, 0x21, 0xf9, 0x87, 0x35}, + {0x86, 0xda, 0x31, 0xd0, 0xb3, 0x91, 0xf1, 0xc1, 0x65, 0xe9, 0xe9, + 0x85, 0xc9, 0x37, 0x14, 0x03, 0x2e, 0x82, 0xc4, 0xf8, 0x31, 0x95, + 0x26, 0xd5, 0x57, 0xa7, 0x7b, 0x4a, 0x3f, 0x7a, 0x43, 0xae}, + {0xdd, 0xed, 0x12, 0x96, 0xbb, 0x36, 0xaa, 0xf5, 0x1a, 0x14, 0xf1, 0x44, 0x5a, 0x2b, 0x2f, 0x36, + 0xde, 0xf1, 0x6e, 0x8a, 0x14, 0x06, 0x22, 0x56, 0xa3, 0x3d, 0x3d, 0xed, 0xe7, 0x99, 0x7d, 0x3}, + {0x02, 0xc9, 0xeb, 0xc6, 0x9f, 0xb3, 0x18, 0x63, 0xfb, 0x1d, 0x4e, + 0x15, 0xf8, 0xb1, 0xf6, 0xfc, 0x2b, 0xcb, 0x30, 0x06, 0xac, 0x21, + 0x16, 0x02, 0x25, 0xfc, 0xd0, 0x4e, 0xc5, 0xbc, 0xa4, 0x8f}, + {0xba, 0xfd, 0x46, 0xa8, 0x94, 0xf9, 0xe4, 0xff, 0x25, 0xbe, 0xa1, + 0xec, 0x3e, 0xee, 0x2d, 0x0b, 0xe9, 0x0b, 0x34, 0x3d, 0x65, 0x38, + 0x40, 0x74, 0xdd, 0x2a, 0x13, 0x27, 0x71, 0xe2, 0xba, 0xcb}, + {0x2c, 0xdf, 0xc4, 0x9c, 0x68, 0xc0, 0xed, 0x31, 0x88, 0x7a, 0xc1, + 0x33, 0x71, 0xbd, 0x02, 0x5a, 0x82, 0x7f, 0x5c, 0x8a, 0xe5, 0x8a, + 0xdd, 0x18, 0xd9, 0xf6, 0x9a, 0xbf, 0xfd, 0x19, 0xfb, 0xb7}, + {0x61, 0xb2, 0x52, 0x0e, 0x47, 0xd1, 0x32, 0x67, 0xad, 0x2e, 0x75, + 0xa6, 0xd3, 0x7c, 0x0f, 0x2c, 0xef, 0x8b, 0x9a, 0xa0, 0x91, 0xe4, + 0xe4, 0x94, 0xf3, 0xb5, 0x96, 0x7e, 0x0e, 0x0e, 0xb6, 0xd9}, + {0x47, 0x11, 0xd5, 0x38, 0xfa, 0x3f, 0x46, 0x12, 0x35, 0xb8, 0x80, + 0x37, 0x13, 0x74, 0xee, 0x80, 0xd8, 0xba, 0xa9, 0xa7, 0x96, 0xe8, + 0xb0, 0x7c, 0x7b, 0xf3, 0xdb, 0xb9, 0x73, 0x75, 0xf2, 0x6b}, + {0xc7, 0x3d, 0x4c, 0x17, 0x9e, 0x7f, 0x76, 0xa7, 0x7d, 0xc3, 0x51, + 0x98, 0xd3, 0x3b, 0x2f, 0x3b, 0x16, 0xa8, 0x02, 0x92, 0x2f, 0xad, + 0x01, 0x94, 0xce, 0x06, 0xdc, 0x72, 0x1a, 0x29, 0xdf, 0xd2}, + {0x1c, 0x8b, 0x17, 0x2e, 0x85, 0xc0, 0x05, 0x50, 0x86, 0xae, 0x64, + 0x95, 0xf0, 0x9b, 0xef, 0x22, 0x8c, 0x8f, 0x41, 0x9e, 0xe7, 0x3d, + 0x6e, 0xc1, 0x61, 0x2f, 0xe4, 0xc9, 0x64, 0xce, 0x43, 0xb6}, + {0xeb, 0x8f, 0x59, 0xef, 0x8a, 0xf1, 0x54, 0xa9, 0xff, 0x5b, 0xc9, 0x86, 0x3e, 0xa3, 0x6c, 0xea, + 0xb4, 0xb9, 0x70, 0x60, 0xab, 0x86, 0xdb, 0xc1, 0xb1, 0x3d, 0xbd, 0x84, 0xb0, 0x4d, 0x50, 0xf}, + {0xdd, 0x12, 0x60, 0x42, 0xa6, 0x07, 0x7f, 0xcb, 0x0c, 0x64, 0xb6, + 0x0d, 0x6d, 0x69, 0x2f, 0x61, 0x52, 0x40, 0x21, 0x73, 0xb2, 0x6c, + 0x77, 0xc2, 0xb4, 0xdf, 0x5f, 0x26, 0x72, 0xcf, 0x84, 0x5a}, + {0xc4, 0x4a, 0xd7, 0x2d, 0xd7, 0xdd, 0x4e, 0x3f, 0xa8, 0xb4, 0x18, + 0xd9, 0x22, 0x67, 0x21, 0x28, 0x25, 0x4c, 0xfc, 0xeb, 0xf4, 0x5f, + 0x56, 0xd8, 0xc5, 0xdc, 0x46, 0x5c, 0x28, 0xeb, 0x6a, 0x43}, + {0x68, 0xd7, 0x51, 0xa6, 0x3e, 0x25, 0xa2, 0xee, 0xde, 0xce, 0x08, + 0x81, 0xaf, 0x56, 0x59, 0x19, 0x09, 0x57, 0xff, 0xbb, 0x7e, 0x5e, + 0xf2, 0xef, 0x0f, 0x83, 0x81, 0xc4, 0xbc, 0x4c, 0x90, 0x28}, + {0x29, 0x19, 0x30, 0x31, 0xa4, 0xbf, 0xe6, 0xf4, 0x21, 0x40, 0x15, + 0x9f, 0x09, 0x38, 0xca, 0x1e, 0x35, 0x78, 0x60, 0x3f, 0xf2, 0x63, + 0xe2, 0x97, 0x7d, 0x6c, 0x05, 0xc8, 0x5e, 0x5b, 0x6a, 0xa6}, + {0x5d, 0x44, 0x03, 0x77, 0x9c, 0x8f, 0xa8, 0x5e, 0xfa, 0xd5, 0xbb, + 0xc8, 0x3f, 0xec, 0x9a, 0x8f, 0x89, 0x6c, 0x42, 0x71, 0x6f, 0x97, + 0xe7, 0x49, 0x29, 0xbd, 0xcd, 0x96, 0x32, 0x87, 0x62, 0xad}, + {0xdb, 0xf4, 0x39, 0x2a, 0x30, 0x20, 0x31, 0x7b, 0x50, 0x8d, 0x3e, 0xb3, 0xe6, 0xef, 0x66, 0xf0, + 0x83, 0x49, 0x21, 0xd5, 0xa9, 0x6d, 0x4a, 0x22, 0x03, 0xec, 0x80, 0x80, 0xe4, 0xe9, 0x67, 0x9}, + {0x3c, 0x54, 0x8d, 0x69, 0xf7, 0x15, 0x39, 0xb8, 0xb4, 0x13, 0x60, 0xf2, 0x67, 0x35, 0x5e, 0x4c, + 0xe6, 0x36, 0x6c, 0x66, 0x83, 0x40, 0x6a, 0x2c, 0xb3, 0xa7, 0x0b, 0x63, 0x1f, 0xaa, 0xda, 0x3}, + {0xd5, 0x29, 0x22, 0xf4, 0x67, 0xa4, 0x19, 0xf6, 0xa5, 0x6b, 0x34, + 0x02, 0xcb, 0x5f, 0x07, 0x61, 0xc2, 0x01, 0xb4, 0xf2, 0xd5, 0x7e, + 0x6d, 0xf6, 0x1e, 0x94, 0x83, 0xa6, 0x00, 0x36, 0x6b, 0x43}, + {0x0a, 0xa0, 0x3c, 0x21, 0x98, 0xf7, 0x09, 0xd1, 0xae, 0xf7, 0x04, + 0x60, 0x4e, 0x13, 0xf7, 0x22, 0x25, 0x69, 0xb9, 0x88, 0x5c, 0x82, + 0x83, 0xc2, 0x06, 0xa3, 0xfc, 0x9e, 0x0a, 0x79, 0x91, 0xe8}, + {0x64, 0x30, 0x1f, 0xd9, 0x07, 0x6b, 0x1f, 0x4c, 0xb6, 0xa7, 0x37, + 0x09, 0x95, 0xaf, 0xec, 0xee, 0x6d, 0x5f, 0x17, 0x4b, 0xf4, 0x02, + 0x2f, 0x7b, 0xb3, 0x9c, 0x1a, 0x46, 0x31, 0xf4, 0xf9, 0xfc}, + {0x1c, 0xe4, 0xc4, 0x79, 0x55, 0x89, 0x4f, 0xcd, 0x1a, 0x12, 0x8d, + 0xb2, 0x30, 0x59, 0x95, 0x5a, 0x65, 0x5b, 0x80, 0x92, 0xc4, 0xea, + 0x3f, 0x3d, 0x97, 0x6c, 0x43, 0x47, 0xa7, 0x94, 0x66, 0x94}, + {0x16, 0x55, 0x88, 0x61, 0x72, 0x11, 0x41, 0xc3, 0x66, 0xe8, 0x9d, + 0x6d, 0x17, 0xd7, 0xa5, 0x76, 0x19, 0xcf, 0x36, 0xb5, 0x30, 0xca, + 0xe8, 0xac, 0xed, 0xe8, 0xd6, 0xbe, 0xd6, 0x8b, 0xe6, 0x5d}, + {0x9b, 0xd8, 0x30, 0x73, 0xe5, 0xdb, 0xb5, 0x1a, 0xd1, 0x30, 0x37, + 0xd9, 0xc7, 0x30, 0x53, 0xf7, 0x1c, 0x5d, 0x77, 0xf7, 0x28, 0xd7, + 0x6a, 0xf9, 0x16, 0x04, 0xd8, 0x5c, 0x37, 0x6d, 0x69, 0xd4}, + {0xfd, 0x82, 0xbb, 0x14, 0xd4, 0x6e, 0xbb, 0x8f, 0x9c, 0x52, 0x43, 0x77, 0x38, 0xaa, 0x24, 0x77, + 0x51, 0x8a, 0xb9, 0x3e, 0x54, 0x5f, 0x19, 0x27, 0xd3, 0x37, 0x69, 0x00, 0xad, 0xe1, 0x87, 0x1}, + {0x72, 0x8e, 0xfb, 0x79, 0xb2, 0x23, 0xef, 0x30, 0x87, 0x2c, 0x52, + 0xa3, 0x89, 0x7f, 0x31, 0x45, 0x19, 0x63, 0x39, 0x7b, 0x79, 0x66, + 0x41, 0xad, 0xff, 0x47, 0x34, 0xb0, 0x3b, 0x58, 0x89, 0xf1}, + {0x0d, 0xfd, 0x6f, 0xac, 0x3f, 0x0b, 0x9a, 0x09, 0xac, 0x43, 0x90, + 0xd0, 0x6e, 0x52, 0x98, 0x00, 0x98, 0xdf, 0x05, 0x4a, 0x1b, 0x7c, + 0xca, 0x2e, 0x88, 0x69, 0xf7, 0x2a, 0x5e, 0x19, 0x80, 0x86}, + {0x44, 0xdf, 0x93, 0x84, 0x9b, 0xae, 0x10, 0xa7, 0xe0, 0xdc, 0xf8, + 0x40, 0x43, 0x93, 0xa5, 0xb9, 0x98, 0xbc, 0x63, 0x20, 0xa0, 0x8f, + 0x6b, 0x9e, 0x4c, 0xa2, 0x33, 0xb8, 0x39, 0xc2, 0x24, 0x88}, + {0xd4, 0xf1, 0xf7, 0x84, 0x80, 0xfb, 0x41, 0x84, 0x4a, 0x29, 0xfe, + 0xe0, 0xab, 0x15, 0xcc, 0x57, 0x32, 0x89, 0x91, 0xed, 0x77, 0x01, + 0xc6, 0xcb, 0x76, 0x9e, 0x24, 0x38, 0xea, 0x8c, 0x39, 0x34}, + {0xf9, 0x81, 0xd3, 0x36, 0xba, 0x09, 0x91, 0x65, 0xbb, 0x18, 0x99, + 0xef, 0x85, 0xe8, 0x64, 0xa1, 0x71, 0x2a, 0x98, 0x61, 0xf8, 0x11, + 0x59, 0x87, 0x26, 0xb6, 0x15, 0x75, 0xbb, 0x3b, 0xcb, 0xad}, + {0xec, 0x69, 0xaf, 0x1b, 0x7b, 0x9a, 0x89, 0x97, 0x7c, 0x6a, 0x5e, + 0xbb, 0x4c, 0xe2, 0xfd, 0xf7, 0xf7, 0x10, 0x52, 0xad, 0xe8, 0x99, + 0xa9, 0xa7, 0xc7, 0x80, 0x8e, 0x38, 0x95, 0xcf, 0x13, 0x4c}, + {0x9b, 0xff, 0xc5, 0x10, 0xbc, 0xe7, 0xdc, 0xbe, 0xfb, 0x6d, 0xd2, + 0xbc, 0x1a, 0x47, 0xfb, 0xbe, 0x86, 0x46, 0x7c, 0x75, 0x15, 0x71, + 0xbc, 0xe8, 0xe0, 0x5a, 0xcd, 0xcd, 0x7b, 0x3a, 0x8c, 0x60}, + {0x30, 0x77, 0x85, 0x37, 0xdb, 0xba, 0xa9, 0x7c, 0xe5, 0x22, 0xbf, + 0x3a, 0x46, 0x53, 0x9f, 0x98, 0x02, 0x00, 0x96, 0x1d, 0x5a, 0x29, + 0x3f, 0x75, 0xfd, 0x3c, 0x80, 0x23, 0xbf, 0x52, 0x9e, 0xeb}, + {0x56, 0xc7, 0x2c, 0x93, 0x98, 0x9e, 0x43, 0x66, 0xae, 0xfb, 0x0c, + 0xfc, 0x79, 0x2b, 0x56, 0xd2, 0x70, 0xff, 0x4a, 0x49, 0xa7, 0x04, + 0x4b, 0x4b, 0xa0, 0x78, 0x1a, 0x83, 0x49, 0xab, 0x0b, 0x35}, + {0x9e, 0x01, 0x7f, 0x88, 0x2c, 0xd5, 0x46, 0x57, 0x97, 0xcd, 0x10, + 0x11, 0x9c, 0x67, 0x0f, 0x93, 0x8a, 0x55, 0xea, 0xb1, 0xe6, 0xdd, + 0x50, 0x6c, 0x6b, 0xfb, 0x8c, 0x0c, 0x2d, 0x8f, 0x72, 0xe9}, + {0xd9, 0x3c, 0x1b, 0x17, 0xc7, 0x8a, 0x88, 0x95, 0xa7, 0xf5, 0xa1, + 0xe6, 0x7b, 0x0d, 0xe4, 0x12, 0x19, 0xaf, 0x53, 0x8e, 0x1b, 0xad, + 0x21, 0xeb, 0xa6, 0x19, 0xea, 0xa3, 0xe0, 0x7a, 0x03, 0xa5}, + {0x22, 0xc9, 0xce, 0x7e, 0xe2, 0xb8, 0x89, 0x3e, 0xc2, 0x0f, 0x7c, + 0x89, 0xd4, 0xc1, 0x03, 0xb8, 0xe0, 0x3f, 0x78, 0x6f, 0xa9, 0xd9, + 0x6a, 0x10, 0xe2, 0xd1, 0x21, 0x97, 0xa0, 0x52, 0xeb, 0xd7}, + {0x1a, 0x2e, 0x43, 0xab, 0xca, 0x84, 0x69, 0x3c, 0x32, 0x36, 0x00, + 0x3a, 0xd1, 0x97, 0x5b, 0xad, 0x42, 0x74, 0x00, 0x66, 0x17, 0xe3, + 0x69, 0xdd, 0xf9, 0x50, 0xdc, 0xe4, 0xd6, 0xcd, 0x51, 0xd8}, + {0x21, 0x77, 0xa8, 0x5a, 0xb9, 0x7a, 0xdd, 0x1e, 0x94, 0x88, 0x25, + 0x6c, 0x5f, 0x10, 0x96, 0xa9, 0x8d, 0x03, 0x4d, 0x9d, 0x4d, 0xff, + 0x2a, 0x31, 0x43, 0xd7, 0xb1, 0x63, 0xb8, 0x17, 0x9c, 0x73}, + {0xa0, 0x54, 0x6a, 0xe2, 0x6b, 0x6c, 0x06, 0x17, 0xe9, 0xf4, 0x5f, + 0x13, 0x7c, 0x10, 0x46, 0xc4, 0xe8, 0x06, 0x71, 0x25, 0x1a, 0x77, + 0x35, 0x5c, 0xd1, 0x03, 0xb9, 0xa9, 0xb5, 0xb7, 0x2d, 0x10}, + {0x17, 0x2f, 0x95, 0x9a, 0x77, 0x94, 0x12, 0x05, 0x6d, 0xea, 0xe1, + 0x10, 0x44, 0x54, 0x33, 0x5b, 0xc5, 0xad, 0x9d, 0x6f, 0xf0, 0x79, + 0x80, 0x62, 0x3d, 0xa5, 0x32, 0xa1, 0x76, 0xa8, 0x65, 0x51}, + {0x4c, 0xbe, 0x84, 0xf2, 0xde, 0x0d, 0xd9, 0x96, 0xb3, 0xae, 0x85, + 0x42, 0xe4, 0x16, 0x4f, 0xe3, 0x9b, 0x7d, 0x20, 0xec, 0x2c, 0x90, + 0xba, 0x5f, 0x1d, 0xe9, 0x35, 0xb7, 0xa1, 0x36, 0x9b, 0x6b}, + {0xbf, 0x2d, 0xd8, 0x6a, 0xae, 0x29, 0x10, 0x9a, 0xf6, 0x5d, 0xe5, + 0xfd, 0x1d, 0x25, 0x26, 0x15, 0x07, 0xf7, 0xa1, 0x86, 0xc7, 0x0a, + 0x56, 0x45, 0x16, 0xa0, 0xeb, 0x52, 0x82, 0x43, 0xdf, 0x1c}, + {0x3b, 0x4d, 0x04, 0xf6, 0x95, 0xe4, 0xaa, 0xe9, 0x56, 0xe0, 0x55, + 0xe5, 0x94, 0x8a, 0x5a, 0xbf, 0x29, 0x01, 0x25, 0x25, 0x04, 0xeb, + 0x4b, 0xae, 0x0e, 0xcd, 0x24, 0x00, 0x2a, 0x7e, 0x91, 0x4c}, + {0xe8, 0xf3, 0xae, 0x5b, 0x81, 0x78, 0x6e, 0x44, 0x69, 0x86, 0x8f, + 0x15, 0xc2, 0x4f, 0xed, 0xf7, 0x92, 0x4f, 0x7b, 0xde, 0x9d, 0x88, + 0x2c, 0x7d, 0xa5, 0xc6, 0xa5, 0xed, 0x1e, 0xec, 0x1d, 0xb7}, + {0xa3, 0x17, 0x31, 0xf9, 0x22, 0x04, 0xa1, 0x4b, 0xca, 0xed, 0x66, + 0x25, 0x92, 0xdf, 0x83, 0x06, 0xc8, 0xc7, 0x4a, 0x5b, 0x83, 0x19, + 0x71, 0xf1, 0x4f, 0x70, 0x75, 0x04, 0x67, 0xeb, 0x61, 0xb9}, + {0x83, 0x3d, 0x23, 0x7f, 0xd6, 0xb6, 0xe7, 0xa9, 0x13, 0x80, 0xc5, + 0x76, 0xe7, 0x3a, 0x0e, 0x53, 0xdf, 0xec, 0xe7, 0x85, 0xcb, 0xc6, + 0x50, 0xb6, 0xfd, 0x30, 0xa4, 0x77, 0x02, 0xc5, 0x68, 0x25}, + {0x96, 0x05, 0x58, 0x98, 0xd0, 0x92, 0x95, 0xd9, 0x35, 0x5c, 0x3f, + 0xc3, 0xf5, 0xd7, 0x37, 0xb1, 0x94, 0xf2, 0xa0, 0x48, 0x2c, 0x26, + 0xd3, 0xc0, 0x66, 0x68, 0x32, 0x41, 0x3d, 0x86, 0xb2, 0x4e}, + {0xc9, 0x30, 0x53, 0xc9, 0x69, 0xf4, 0x70, 0xd6, 0xdf, 0xa7, 0x23, 0xa8, 0x0b, 0xd7, 0xc5, 0x3c, + 0x4f, 0x6d, 0xf9, 0x6d, 0xb6, 0xc4, 0xb1, 0x52, 0x77, 0xc3, 0x29, 0x75, 0xfd, 0x93, 0x9a, 0xa}, + {0xbf, 0xe6, 0x40, 0xcb, 0x9f, 0x22, 0xda, 0x13, 0x56, 0xc8, 0x0b, + 0x46, 0xc1, 0xcc, 0x86, 0xdd, 0xe7, 0xc9, 0x30, 0x8a, 0x3d, 0x69, + 0xf5, 0x08, 0x21, 0xf9, 0x48, 0xac, 0x57, 0x8a, 0xb9, 0x84}, + {0xf8, 0x38, 0xf3, 0xbb, 0xa1, 0x39, 0xa5, 0xf7, 0xad, 0x23, 0x75, + 0x54, 0x3b, 0xb4, 0xbc, 0x6e, 0x1b, 0xa2, 0x53, 0xfc, 0x64, 0x26, + 0xf4, 0x3c, 0x5b, 0x91, 0x97, 0x72, 0x97, 0x31, 0x5b, 0x29}, + {0x6f, 0x08, 0xa1, 0x78, 0x86, 0x69, 0xa2, 0x87, 0xee, 0x0f, 0xc4, + 0x0f, 0xae, 0x6d, 0xa9, 0x91, 0x7e, 0x21, 0xea, 0xe6, 0x28, 0xf8, + 0x98, 0x36, 0x51, 0x1f, 0x08, 0xcf, 0x0a, 0xbb, 0xc7, 0x1d}, + {0x80, 0xc9, 0xa0, 0x96, 0x65, 0x8b, 0x2f, 0xce, 0x71, 0x40, 0xaa, + 0x66, 0x30, 0x57, 0x30, 0xb7, 0xb5, 0x60, 0x4d, 0xf6, 0x1f, 0xac, + 0xe6, 0xfb, 0x1d, 0x1f, 0x34, 0xd4, 0x82, 0x53, 0x63, 0xb1}, + {0x4e, 0x23, 0x62, 0x7b, 0x5a, 0x7f, 0x7c, 0x0e, 0x41, 0x6f, 0x23, + 0x0d, 0xba, 0x74, 0xe8, 0xb9, 0xe8, 0x32, 0x9d, 0x47, 0xae, 0x4c, + 0x8e, 0xd4, 0x53, 0x6c, 0x4a, 0xf7, 0x4d, 0x7e, 0x8a, 0xab}, + {0xe3, 0xfb, 0xc0, 0x07, 0xbd, 0x7f, 0x27, 0x2e, 0xff, 0x0c, 0xd6, + 0x74, 0xb8, 0xf2, 0x1c, 0x27, 0xf2, 0x9e, 0x67, 0x6c, 0x2f, 0x2b, + 0x23, 0x64, 0x7e, 0xa9, 0x0f, 0x9c, 0x85, 0x82, 0xea, 0x3c}, + {0x3e, 0x39, 0xe5, 0xae, 0x26, 0x28, 0x07, 0x0f, 0x5a, 0x28, 0x77, + 0x5a, 0x64, 0xdd, 0x15, 0xba, 0x52, 0x11, 0x7f, 0xfc, 0xfb, 0x3b, + 0xf7, 0x9d, 0xf6, 0x7f, 0x79, 0x9a, 0xb1, 0xb3, 0xe7, 0x44}, + {0xd3, 0xce, 0x25, 0x9e, 0x0b, 0x23, 0x30, 0xc2, 0xce, 0x41, 0xd1, + 0xa5, 0x49, 0xfa, 0xc2, 0xb7, 0x10, 0xa5, 0xa5, 0xa8, 0xbd, 0xb3, + 0x98, 0x19, 0x5d, 0x44, 0x65, 0x71, 0x8f, 0x50, 0xb4, 0xd3}, }; enum { diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index f20156e2..f421f5cb 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -74,6 +74,18 @@ static void displayName(const uint8_t *value, MAX_DISPLAY_VALUE_LENGTH); // null terminated, no return vallue } +static void displayASCIIStringWithLength(const uint8_t *value, + uint8_t valueLen, + char display[MAX_DISPLAY_VALUE_LENGTH]) { + uint64_t strLen = 0; + uint8_t strLenLen = getNumberFromVarUInt(value, valueLen, &strLen); + VALIDATE(strLen < MAX_DISPLAY_VALUE_LENGTH, ERR_INVALID_DATA); + VALIDATE(valueLen == strLenLen + strLen, ERR_INVALID_DATA); + str_validateTextBuffer(value + strLenLen, strLen); + memcpy(display, value + strLenLen, strLen); + display[strLen] = 0; +} + static void displayMemoHash(const uint8_t *value, uint8_t valueLen, char display[MAX_DISPLAY_VALUE_LENGTH]) { @@ -309,6 +321,9 @@ void parseValueToDisplay(value_format_t format, case VALUE_FORMAT_NAME: displayName(value, valueLen, display); break; + case VALUE_FORMAT_ASCII_STRING_WITH_LENGTH: + displayASCIIStringWithLength(value, valueLen, display); + break; case VALUE_FORMAT_FIO_AMOUNT: { uint64_t amount; parseUInt64(value, valueLen, &amount); diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index 1e37e903..f24d0d3d 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -10,6 +10,7 @@ typedef enum { VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01, VALUE_FORMAT_ASCII_STRING = 0x02, VALUE_FORMAT_NAME = 0x03, + VALUE_FORMAT_ASCII_STRING_WITH_LENGTH = 0x04, // Number VALUE_FORMAT_FIO_AMOUNT = 0x10, diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js index 0b2c8477..c6a3c582 100644 --- a/test-integration/decodeMessage.js +++ b/test-integration/decodeMessage.js @@ -115,7 +115,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt memo"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent3, context: "recordobt"}); - await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796572207075626c69632061646472657373145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433206537461747573064f627420494401074d79206d656d6f0000") } @@ -125,7 +125,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt hash"); console.log(encryptedContent4) const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent4, context: "recordobt"}); - await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "2d5061796572207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e672d5061796565207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e670a416d6f756e74203130300442544331044254433206537461747573064f62742049440001234d792068617368206973207175697465206c6f6e6720746f6f2c20746f6f2c20746f6f01224f66666c696e652055524c206973207175697465206c6f6e6720746f6f2c20746f6f") } diff --git a/test-integration/snapshots/decodeMessage/nanox.03.png b/test-integration/snapshots/decodeMessage/nanox.03.png index 16de8fc0f37ff6f728af96098915c70e1686dacd..a1a25bcc339c3581703c9debb8715b97f6567df6 100644 GIT binary patch delta 567 zcmV-70?7T@1kePKB!3r4L_t(|ob8!Oj>I4gMboXiN$!6n?$V1$2;m_P*oJidw@Oi9 zo6+ItH~;_u0002^Pn1$hDXXL4*(bKoLf_XAoadSEE61sYpE%QPpGzs{dDcbOKG%}k zq${bFl~!#XYKOMcW9uxmRvF&sB^RSIYTYrbzp}zFk*dR@ve9p=v zs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T?+DTv>m+UEJ6O_@<;cnjsE0%TummHWY`$~wdMSb?8)fa!tDCz00sMD>t`@M_)q?WX zP)d?YnyH&c2}a5>TPNXdF=p(1UVj9=otLShGf4Lm0Dl1ZTB35mJ_qjnN3@6wa5$1E zl;hFYb!hzAQiOh8qSt*^-k~?I>$zL(w2-xYtJ*5T@5@tZ(_Z*U4OQyQ#NbHa4q(^I zOdoF5&;;B)22OzT8Dz#FwVyTz5gx;(2zU7~*?zRg)Fe#RN2xQk@Kz12CHnF-jvX7= zo09MV`!Fb!nLrI)3?={o0000000000000000000G$RF`e7^6}S4xIo1002ovPDHLk FV1jP05{Li* delta 576 zcmV-G0>Ayx1la_TB!3`DL_t(|ob8!Oj>I4gMd?=GB=W*A?$8#;Jv$d8X@}bI#Xwl}T4Wmy*(? zDJhkeR&^a}hqlsVYb?~|?)=U$%5vvfe%6z*&bj%SY<*GJp?`L$FFiIkNK=x}S-Az( zDBYdp{F~10+S!m@2B6?I*IeuboKkUHkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt z8LpUt@XPDhf1 zVm$h~4v0TaiqJ1g^rFuSJM_+VKR1(|7P6MRdaV-tzC0B*?S+qYP^HdD4DL)>0qlGk z$)T%*1~AFvlmSpafQ%TV_QS?tp2vw&gu8GUY(K_h&>>89M=2Rv*wsNxi9S7zea8ki z`>ViW_BqiejT{$nhqLlID_RpDm=XX0000000000000000001DRl+r&6?I4gMboXiN$!6n?$V1$2;m_P*oJidw@Oi9 zo6+ItH~;_u0002^Pn1$hDXXL4*(bKoLf_XAoadSEE61sYpE%QPpGzs{dDcbOKG%}k zq${bFl~!#XYKOMcW9uxmRvF&sB^RSIYTYrbzp}zFk*dR@ve9p=v zs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T?+DTv>m+UEJ6O_@<;cnjsE0%TummHWY`$~wdMSb?8)fa!tDCz00sMD>t`@M_)q?WX zP)d?YnyH&c2}a5>TPNXdF=p(1UVj9=otLShGf4Lm0Dl1ZTB35mJ_qjnN3@6wa5$1E zl;hFYb!hzAQiOh8qSt*^-k~?I>$zL(w2-xYtJ*5T@5@tZ(_Z*U4OQyQ#NbHa4q(^I zOdoF5&;;B)22OzT8Dz#FwVyTz5gx;(2zU7~*?zRg)Fe#RN2xQk@Kz12CHnF-jvX7= zo09MV`!Fb!nLrI)3?={o0000000000000000000G$RF`e7^6}S4xIo1002ovPDHLk FV1jP05{Li* delta 576 zcmV-G0>Ayx1la_TB!3`DL_t(|ob8!Oj>I4gMd?=GB=W*A?$8#;Jv$d8X@}bI#Xwl}T4Wmy*(? zDJhkeR&^a}hqlsVYb?~|?)=U$%5vvfe%6z*&bj%SY<*GJp?`L$FFiIkNK=x}S-Az( zDBYdp{F~10+S!m@2B6?I*IeuboKkUHkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt z8LpUt@XPDhf1 zVm$h~4v0TaiqJ1g^rFuSJM_+VKR1(|7P6MRdaV-tzC0B*?S+qYP^HdD4DL)>0qlGk z$)T%*1~AFvlmSpafQ%TV_QS?tp2vw&gu8GUY(K_h&>>89M=2Rv*wsNxi9S7zea8ki z`>ViW_BqiejT{$nhqLlID_RpDm=XX0000000000000000001DRl+r&6?`T1k?qPB!8PpL_t(|ob8%ha^)ZlM48m=g#9mxz2qYmibAM)NCtD$=gY<* zWZpD{KnNj(5JJfNNhzh2PJ7YD?pu{y8Z1N7FIw^uzLxw%?5v?GuNY&D(P9m}mbv7w z>H%FqaR=D?sxrcM_E6Oj2%O^C3dneM zSQk6?QY-Bk@t=fC)_zi^@~XdV&C4+@a2)>%$b&{TC3aUw_-oTnmDeCmXYlYX!>h$; z8R*+wcCcsVDu37P-BrIaixHk3g6_hl<<1)UXV22kww~J@b_gMa_;YaAdJ)d6AQt*8 zo~s~Dtqd*MD=4~(OrE1@(k6awhG?lYXF$w%p(*21O#^#N9AC50-NcTY!pVKvB*v92 z|4FmXs=g(=%bGLVd4PNKKTrY7|4=2Y4hEX%1VK4e7=Lj_8`*s8;Cd-SPBx(J8_z7e z_80K)0a#aP&aNYX^F?iv1k+6JG{6~cjxioPzj_XTj=>pwzbDrZLDx|YVy{p`_n_@d zj_`NKqBlUj;3O>llbk92RPbCD8H)Z|y^76VZM_?M#jTLdUTu{k+@-`1;MgQAmB=cjtDAO} zXE5%$i?xIhLI@$`0<>EAy#1=$3UB!3`DL_t(|ob8!Oj>I4gMd?=GB=W*A?$8#;Jv$d8X@}bI#Xwl}T4Wmy*(? zDJhkeR&^a}hqlsVYb?~|?)=U$%5vvfe%6z*&bj%SY<*GJp?`L$FFiIkNK=x}S-Az( zDBYdp{F~10+S!m@2B6?I*IeuboKkUHkj}d#X)E8(lC~^IRt`YfG@2u^`;Msp%i3vt z8LpUt@XPDhf1 zVm$h~4v0TaiqJ1g^rFuSJM_+VKR1(|7P6MRdaV-tzC0B*?S+qYP^HdD4DL)>0qlGk z$)T%*1~AFvlmSpafQ%TV_QS?tp2vw&gu8GUY(K_h&>>89M=2Rv*wsNxi9S7zea8ki z`>ViW_BqiejT{$nhqLlID_RpDm=XX0000000000000000001DRl+r&6?@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf DgR%My delta 450 zcmV;z0X_bk1l$9VB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=XF{jhRF%YhdyU<8thF#8vT5@o0TTKc6VS< zG0^75-Kr2mzW(TkCRn`#u#I$?TfF?8-8-NdYl}l4*?S9eynlus;u(P$00026!Tva) zh^p>+qYohvIyl#gY1btcioEHfZ~3p^-5n6+7ilW%yD@ovQ5g^8U!|$9quc?_3s%a5 z4mT*Zd7E?ZfJx^pGCHg2=pNqt^Ou(=Pk;%Vm!R}`%xhA)e;K)aIOjFz-xkJLS?-%y zf;M9U001lXXMf!EY(e;w*Gn~*DUHj_MDv$k`q>jT|A(HRwki3a&V-M2YOHX1cFb%b z)=WA&IoOGL&E_x_^`8otdfM3-ntdP=R+7dAX&Yo_d!!C-ZRMHQrXuDyp6V8gnl$CH z(A*E`?1}!FMVn~%1!DPw)K$x9T`x6a;=1m4Uox&(B|OrhR9}1E=)0v8uxR~>1!-GR tN{be&R`bcBe5R)b000000000-djmh7g@Xy<`9=T$002ovPDHLkV1inu*$w~z delta 953 zcmV;q14jJZ1I`DKBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfHbmYO diff --git a/test-integration/snapshots/decodeMessage/nanox.31.png b/test-integration/snapshots/decodeMessage/nanox.31.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..ee51839298dd18fab729e0cee14040a1d0bd5122 100644 GIT binary patch delta 953 zcmV;q14jJF1I`DKBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjf>%rat delta 431 zcmV;g0Z{(V2gn1EBYy#pNkl@DK3v)rAjRt&LoEAiH>Dq9 z&Aij(qtCyalIty+ZsleQ5M8+i|A!?1xDjb+A~iAEEl658?o0L}O(Xgjr=i^@FX3o< zGX-$seh#CT*MFWFwI}Vue3CZ>W&X9jD_)*AlE=7p&ysm_1-ncmy(O9FjZCh9FSKgf z-u&Qv@(OrzZUBIf+P5u>JGkw)ApMt&$1+@i4MyMDEx;b5@9Y*}=)>8QSuKFur3Quz z;I^niS^#tRvq261Sick7`J2w({C70l+3$fG+>aXEk0=@d00000000000000000026 Z=?#%bOZ3R#fnERr002ovPDHLkV1m~s(s=*? diff --git a/test-integration/snapshots/decodeMessage/nanox.32.png b/test-integration/snapshots/decodeMessage/nanox.32.png index b2674191a124127bd923db472bc86027d05d6db7..d420a8095ad96ec20fc49ce4c6087c1554578e21 100644 GIT binary patch delta 430 zcmV;f0a5;>1jqxBB!7=dL_t(|obA|cl7k=&fMK??H{t$A;x7GRht2RAkX1w9=U1x{ zA^~)C4gdfExZIEY6GBK%d+(2f-urG_`bdppYx1D7yM7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$f{7#2O8@`> delta 523 zcmV+m0`&dJ1Ed6yB!BBkL_t(|ob8xVa>O7AKy9Zt@%~5hF8#=Ch5{0dZjzn8_qAaO zASg~K1poj50N`@I)N^Z1KGs?<4Ca6>HWiW-x(ds^tmWI4J}U2dYONm^`A- z?}f2KMehjPbAL7yNw6GOo>{x=D1Ql0kuS`v6S-G3esGkgbF;o+zx>Eaqz%|Y#; zt%#(n$AFcihlcox$r#`|rJk^PD@{ zkGdx=hH2={Otl~h!%+YL00000000000000000000000000Qj%`0;#nKWc=0R$p8QV N07*qoLO7AKy9Zt@%~5hF8#=Ch5{0dZjzn8_qAaO zASg~K1poj50N`@I)N^Z1KGs?<4Ca6>HWiW-x(ds^tmWI4J}U2dYONm^`A- z?}f2KMehjPbAL7yNw6GOo>{x=D1Ql0kuS`v6S-BcbBGkgbF;o+zx>Eaqz%|Y#; zt%#(n$AFcihlcox$r#`|rJk^PD@{ xkGdx=hH2={Otl~h!%>p~0u&nn008)}`~s=92xR=#y1gr#*B!BZsL_t(|ob8xfa)U4oMb%Ds;{7j)z4U_#*u6<>aTtlV)NbwS0H?Wv8 z%DCc5bcF2*8-LUgIpU62yml8lbP11A-0vvl08MP%>8 zbx`Dqui`dnmR zhT3+UbU{~tBc`*u6<>aTtlV)NbwS0H?Wv8 z%DCc5bcF2*8-LUgIpU62yml8lbP11A-0vvl08MP%>8 zbx`Dqui`dnmR zhT3+UbU{~tBc`*{FVR! delta 331 zcmV-R0krvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCihvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCihJfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Eg1!8wGXMYp diff --git a/test-integration/snapshots/decodeMessage/nanox.36.png b/test-integration/snapshots/decodeMessage/nanox.36.png index 56eff5485e79dd0f3771be67cb4e65b087e49838..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 100644 GIT binary patch delta 358 zcmV-s0h#`Z1AzmOB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef<05F*8l(j delta 366 zcmV-!0g?WJ1BnBWB!5szL_t(|obB3C4#FS|fMGP=g!><yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$g0Od~oB#j- diff --git a/test-integration/snapshots/decodeMessage/nanox.37.png b/test-integration/snapshots/decodeMessage/nanox.37.png index 9fbc447c72dd7395262af62672e5d0b2156bb7ad..56eff5485e79dd0f3771be67cb4e65b087e49838 100644 GIT binary patch delta 366 zcmV-!0g?X70*M2VB!5szL_t(|obB3C4#FS|fMGP=g!><yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$f){tGP-AqLxY?mwUci z3R2|6eM~U}000000KmU^WDnrHh-lmHo;Z?Ul$?OR^u3DHP;UZS_4{%!KP=&yJ%E#j zLYJ$1RT0sjfA)7vsM-NY^J$q^T>e(K1BO~xEd8e5U664bDu3c04`KiS06+rK=YYEL z@*T_%y8B5(-5kO+J0K#KFI&va-M{X(-?nY~>6kg!{1kuAN0-~mE%M49z(T)l=QVq- znnPFV(2b*a>gDc-s=0k%vk!D9;BuOCpm++}`QO8EQ9X3jxCjFP0LW0xf{Yu-T%@7N zNJEp6h9)Bol_@|PdN-PLpm+)*4Fv!I00000aJ@H=aNex*Rz6(-0000)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$f-A{?kN^Mx diff --git a/test-integration/snapshots/decodeMessage/nanox.39.png b/test-integration/snapshots/decodeMessage/nanox.39.png index 8a50d7e0aefb037bc7c64b380116e1dd54e9430f..6fb64278872da49278bf6b6e344d72375d2a804d 100644 GIT binary patch delta 282 zcmV+#0p)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$f?Yp-NWIH`m=K0&9J;k1yw5Ln z&X876iYWmA00000U=|PW2J|ztyuB=oV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~ z#a)$|mE+Ixt_0N{05^NLx#I1gbbCM*YsJv7^xlFJuc1MVF@F&Q0001xQfd_yM9U0k zsFosz@$zm!k81g)ni6jpXLOfqe5~=xQETotH_rbWhjtGbK->i6!DKsbj5Lz)5Ox-~ z2kdD+W^X(n0002PnyTJ;jER`Da1${ztG+vLeukdT6+S7HwtZXgtp2!nnqr|eTo1TN z?m^<2fP;GHl{#zQb*cY|*aLo%n6M%ypc{qK+sF;&-Ixd9)3j4!000000H*K;?9J9^ T{Tde$00000NkvXXu0mjf^NfJhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)m=Z8B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfGsMtU diff --git a/test-integration/snapshots/decodeMessage/nanox.41.png b/test-integration/snapshots/decodeMessage/nanox.41.png index a7a8740548d2608032872a36bbf128b89b69847d..0966b381351991acb6db707ea26cd67901f222f9 100644 GIT binary patch delta 429 zcmV;e0aE^z1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfz!T6A delta 378 zcmV-=0fqj@1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVhtNNdN!< diff --git a/test-integration/snapshots/decodeMessage/nanox.42.png b/test-integration/snapshots/decodeMessage/nanox.42.png index 69ea1320dab303f5042d49f9f7c140fc45e3aa31..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjN1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$f@b`uZvX%Q diff --git a/test-integration/snapshots/decodeMessage/nanox.43.png b/test-integration/snapshots/decodeMessage/nanox.43.png index 16de8fc0f37ff6f728af96098915c70e1686dacd..69ea1320dab303f5042d49f9f7c140fc45e3aa31 100644 GIT binary patch delta 375 zcmV--0f_$D1d#)fBYy!{Nklx_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q> zBw8--szL~H{jnD%sGb41P3Xhh29*7Qm?7jCNo~-i^Xj=BQ(Z5 zvlopLRMTgZF$NSI;==fz&3$@k|dtXVZX$*b^)#m{=@4ZUZzT^xjHj3k< zEGv^W`3A0%%5dVA$*vDqA$yzv0000)%zPC;>Fz=(drLK6Y-yU# zV`wvOm!zS#D~U5_JTd761r`1K9+SBYy%QNkl=WDHLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMly zq$w$tl~#2fYKOMcV{0tbFv@c0S$@`&vCg^qnQVPg*MFgQs4qP>Hb_&F&sn(z z)hOMaA11e{WFTaeDXBxx((&XTq)M^+9%*)*CXvHOmw|I6BG zd>OF>^IgPrN8@Fx(_OZpuVvyrUNYRcB*9Yu$$yqet)yU-ntMT2$>v!R%Z&9U3)13yVM=fA%K|a(btdeXHEWA5mv_Oi z<&tVW!h!*KokP>Gk^5QoKM9`-EWt=So9`GLFGbM9Mw$EL>ZWf01^z2QR}0wF)q?WX zP&y=)W2P(`B^c?9+4>OP7UPK>&+%K(=^Unpjv(Dj0Dl1BYw{JuODHSL9ubWo+vNDS^wSpn>P z8Ofomg9b3k#6MGOsFfm4Fj5w>WtDbhUf8#$lhQu6iP5SVVCn%~Kye4y`l>R*cJ@%!5D1*&*$T*b zbyycW_EIbD81bKkOV)l;rt+%4Y|YCtEpQzF3dn;-H6?aeNBC>gPL)?7RLQXcI?HkW5 zyY?6G?*Uj>XwI%9fb&Idk_6LC?liy|ZH_S>JHL7ke~!T!d%q{w4?)*a4PviQL-(NV zOOEh&$D%htz2GD){ga$2{Z#N=78{b>iY5>}l*L(3W;q~5WM=hF5Mjjr&uh6)Z0@bP zKHSHw%zrtO3OrkqPYI{`#5l@x}hJjTqkVjOdg(a6wEh<7jtDKbi4s zqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-#v^HnIo#@NO6%al`UVY;v+>|7z#8J@3 jZ?7;y2qA6IWBYy#-NklF{jhRF%YhdyU<8thF#8vT5@o0TTKc6VS< zG0^75-Kr2mzW(TkCRn`#u#I$?TfF?8-8-NdYl}l4*?S9eynlus;u(P$00026!Tva) zh^p>+qYohvIyl#gY1btcioEHfZ~3p^-5n6+7ilW%yD@ovQ5g^8U!|$9quc?_3s%a5 z4mT*Zd7E?ZfJx^pGCHg2=pNqt^Ou(=Pk;%Vm!R}`%xhA)e;K)aIOjFz-xkJLS?-%y zf;M9U001lXXMf!EY(e;w*Gn~*DUHj_MDv$k`q>jT|A(HRwki3a&V-M2YOHX1cFb%b z)=WA&IoOGL&E_x_^`8otdfM3-ntdP=R+7dAX&Yo_d!!C-ZRMHQrXuDyp6V8gnl$CH z(A*E`?1}!FMVn~%1!DPw)K$x9T`x6a;=1m4Uox&(B|OrhR9}1E=)0v8uxR~>1!-GR tN{be&R`bcBe5R)b000000000-djmh7g@Xy<`9=T$002ovPDHLkV1i+@*%AN% diff --git a/test-integration/snapshots/decodeMessage/nanox.45.png b/test-integration/snapshots/decodeMessage/nanox.45.png index ee51839298dd18fab729e0cee14040a1d0bd5122..6f75fc203945fbfa9c6324dba7d955249d68eeba 100644 GIT binary patch delta 514 zcmV+d0{#8Y2b%z;nIT~-=bUq%(I%cRZF)NG zxR!Z$`hSD|rc_GFIahn_v*lbJslx4Bj*Ql$Z3$uFTe3r`v46((T;`eD0oOe1$NF3s zV-1Q3K_nL4CE3PT*z$erI;r)$)4j*aw8QugxWx%~a#xv%k+0`DL{_>ue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfNA%s) diff --git a/test-integration/snapshots/decodeMessage/nanox.46.png b/test-integration/snapshots/decodeMessage/nanox.46.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..389c244b04442e80358f7291847758d515e7dc33 100644 GIT binary patch delta 450 zcmV;z0X_c61Kb0UB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=X7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$g5`$Nf&c&j diff --git a/test-integration/snapshots/decodeMessage/nanox.47.png b/test-integration/snapshots/decodeMessage/nanox.47.png index 97ae27db2577a5d34b00960e1361c2021ac427b6..ee51839298dd18fab729e0cee14040a1d0bd5122 100644 GIT binary patch delta 953 zcmV;q14jJp1ue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfc|_hO delta 725 zcmV;`0xJE^2kZrqBYy(3NklsC6;f~x>dj99LMpv$bXPR z`LZzQnx2Mv;gV5*rTy!v_bRXZ+KfsUM(mF9JWml=segRSg@3&Q1jirA>T7coFbn8V z%$TadAjR@Z#Vxuysd4AYo8YvrRCR8#SAggvv&)>jbbL)t@GdTu^y@Mwb*mF|{7ese zk>wV90800W;Vp#-?ifobHK!9j)AO;pCcdy-pP?XdfjOW9pwY5~P$0ws#Jn_J2@m?S_5cS27 diff --git a/test-integration/snapshots/decodeMessage/nanox.48.png b/test-integration/snapshots/decodeMessage/nanox.48.png index d4e695926e6dff215ee0d2e582cf232adf95a2f0..d420a8095ad96ec20fc49ce4c6087c1554578e21 100644 GIT binary patch delta 431 zcmV;g0Z{(<1;_)CBYy#pNkl@DK3v)rAjRt&LoEAiH>Dq9 z&Aij(qtCyalIty+ZsleQ5M8+i|A!?1xDjb+A~iAEEl658?o0L}O(Xgjr=i^@FX3o< zGX-$seh#CT*MFWFwI}Vue3CZ>W&X9jD_)*AlE=7p&ysm_1-ncmy(O9FjZCh9FSKgf z-u&Qv@(OrzZUBIf+P5u>JGkw)ApMt&$1+@i4MyMDEx;b5@9Y*}=)>8QSuKFur3Quz z;I^niS^#tRvq261Sick7`J2w({C70l+3$fG+>aXEk0=@d00000000000000000026 Z=?#%bOZ3R#fnERr002ovPDHLkV1gQt(xCtV delta 737 zcmV<70v`Ry1Na4yBYy(FNkl|b0000004(PpExN9&{+e@M6^urSstKkpWDUY=3Fk+;a7e$~$vM9+=9JQZ zqg}l$*cnGBV`H3irc;SsZMT_XPy3pUhZWvocD)I((_^{5le z+>(}W6Sg=2(w)s9OM#xb9ZL;yLT7qCHf7>BCAYD43sR_C#)DX7Z(rUJ%p(O0ZJ}@(G{{RBEAmG6@08@{M0001X za#ie(C8gex)fwc2^Kb~Ab3m%$Wx1@#-WX?vjUWfY=6A*Sy(d&41jGNyAyP=<^Wn~ z5p27z789j|QlTwXo!)%a36LUgLF$Aq-bf=IDq4Nba1u_28C2JOPYOMM(o1@J)TLlc z!cRgUbvuswpOu8|I0ezbNL~lj(9JyAf@&a$0sz35vho3DQeE4h!CX&4$i04CPeF?I znPhpS`+pJ#dwWxFV{cJ9E$`*ca66H%06D6UT0~R7TDicjov?$LJ(?mMMb-Ouya%zu zkp8!F%}zQe2D*(IfCBx2EOYPpcRkqcEe=Ec%ySzv0CxRPmqjfMd7uejx@D5v_YsvI z*q;gg&coe)ks3N_o;uw!|B~EAc*2xU7-zZ#09pXR^T8+QFM0|(lgN|s8s4W_egNAw z%Xwf6+RXd5AUm&kW#*Fy;P9?5ylenGnk86==N}V`K@#4~L276$&@2G}0G!S*Y1H&` TkXTP-00000NkvXXu0mjfs)Sme diff --git a/test-integration/snapshots/decodeMessage/nanox.49.png b/test-integration/snapshots/decodeMessage/nanox.49.png index 14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9..97ae27db2577a5d34b00960e1361c2021ac427b6 100644 GIT binary patch delta 725 zcmV;`0xJFH0_+8lBYy(3NklsC6;f~x>dj99LMpv$bXPR z`LZzQnx2Mv;gV5*rTy!v_bRXZ+KfsUM(mF9JWml=segRSg@3&Q1jirA>T7coFbn8V z%$TadAjR@Z#Vxuysd4AYo8YvrRCR8#SAggvv&)>jbbL)t@GdTu^y@Mwb*mF|{7ese zk>wV90800W;Vp#-?ifobHK!9j)AO;pCcdy-pP?XdfjOW9pwY5~P$0ws#Jn_J2@m?S_5c1?B>fBYy!cNkl~YDxeA00000h~lBWfa`M3WxOnl;!5stnSeUkqN*u>gn=vV%pf)bCRMt{svhyefq0I~V4W@oTQ ze^?IeB>SbkfL)tHSN`PEoRMQ$FxSbZg#M5xpgER<`;)p%bVJK-t#^75RxUx&;$B!u zfV{E?p`U>I&Y8Yfp~HJ)^R}FR$sadi004j}EIi}O|8Jd{nSq6VXQ$)TZ#VsqW+67d z-)XSyQm%wM(M4>=`sC-FET=6P)D4Z?@9Z0Q0*HIlxCDglclM1)faQK?`IhoFIRgLy e00000U|b0000004(PpExN9&{+e@M6^urSstKkpWDUY=3Fk+;a7e$~$vM9+=9JQZ zqg}l$*cnGBV`H3irc;SsZMT_XPy3pUhZWvocD)I((_^{5le z+>(}W6Sg=2(w)s9OM#xb9ZL;yLT7qCHf7>BCAYD43sR_C#)DX7Z(rUJ%p(O0ZJ}@(G{{RBEAmG6@08@{M0001X za#ie(C8gex)fwc2^Kb~Ab3m%$Wx1@#-WX?vjUWfY=6A*Sy(d&41jGNyAyP=<^Wn~ z5p27z789j|QlTwXo!)%a36LUgLF$Aq-bf=IDq4Nba1u_28C2JOPYOMM(o1@J)TLlc z!cRgUbvuswpOu8|I0ezbNL~lj(9JyAf@&a$0sz35vho3DQeE4h!CX&4$i04CPeF?I znPhpS`+pJ#dwWxFV{cJ9E$`*ca66H%06D6UT0~R7TDicjov?$LJ(?mMMb-Ouya%zu zkp8!F%}zQe2D*(IfCBx2EOYPpcRkqcEe=Ec%ySzv0CxRPmqjfMd7uejx@D5v_YsvI z*q;gg&coe)ks3N_o;uw!|B~EAc*2xU7-zZ#09pXR^T8+QFM0|(lgN|s8s4W_egNAw z%Xwf6+RXd5AUm&kW#*Fy;P9?5ylenGnk86==N}V`K@#4~L276$&@2G}0G!S*Y1H&` TkXTP-00000NkvXXu0mjf-VRz< delta 359 zcmV-t0hs>y1%U&QBYy!%Nkl?Yj*NWIG*NC**W5F@nse@|+3 zV2cdU5C8xG0002+7N6A>7$+imJI1)MCU>|@KpFay$29m$K#qPH?$d)Vd{_(7 z;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DPSbGe8;%^ib7={|L$A3f&0001Z0V(7oofke- zpC^8{-*0AN>2Aj+O}kFDrY0aX;#j{n*IVuuf}fl+de&^?x{M@S5DRs zPVSUuKLMSVbj?c&HJX4>bs*D9oNV^{faRkOYovGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCih<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$fJfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef|k^$7XSbN delta 303 zcmV+~0nq+|1IhxBB!3Y}L_t(|obB3M4#F@DL{Wp-iTA%G?}d*_QIv$DmP#I%d%ju< zQsl&aOfdrh00000z`uB858%9rXxr|dIFetKoPfUcy^7ONZvtBN`*JToEa90wfRlzo zm#ceK5z(K2_IFFD+5t%OX_;4C{#LgGhFVuF{ifbskZ~I-;(s0wVgLXDKmyU{fV%PW z9n259`$Vh7bmoZIQO~|DL9s zgA~S~m=XX000000{>8((0_TZHInFs7*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWK zaB+`HMC$QJ{}@8lCje$f-8^FVPjR1sCe{%{zlk>sN=!qYxPQk&3;+NCFtBbN(5#-6 znY)NAp4YE0(acQFV0~V}Fq84JD!5SgQtFP`T=sPtJi5NSjWb!FJ5Z8n<#;<#PL0l< zC}rmUKV|;}bnOS_Wf56C964=(oO9C#%LatSBah$xfUOOzYw>f&Pe2`IrRz;zHoCt1 z^KJtlEeHSr0BGm9{#QgdfjY{n?z2NoD6diyKKqZ#s?GC)&hJY2sG!~4X)dT>7_oF{ z2%5QxL-!eiy8Q1o-lqY&+cM6hp8~xDbXyj4|H9xE0ssI20002s;|)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$g5^1XPyhe` diff --git a/test-integration/snapshots/decodeMessage/nanox.54.png b/test-integration/snapshots/decodeMessage/nanox.54.png index 5a9a698b9ef0161df686d9e7c0eefcda79141330..9fbc447c72dd7395262af62672e5d0b2156bb7ad 100644 GIT binary patch delta 303 zcmV+~0nq;71IhxBB!3Y}L_t(|obB3M4#F@DL{Wp-iTA%G?}d*_QIv$DmP#I%d%ju< zQsl&aOfdrh00000z`uB858%9rXxr|dIFetKoPfUcy^7ONZvtBN`*JToEa90wfRlzo zm#ceK5z(K2_IFFD+5t%OX_;4C{#LgGhFVuF{ifbskZ~I-;(s0wVgLXDKmyU{fV%PW z9n259`$ Bja>i$ delta 454 zcmV;%0XhE40^kFXB!8z#L_t(|obB0Bl7k=&fMIrLZ^HeL#9j8m87D&^Mv5i0|M%2V zK^hbxrUU>00N_+gDW&Mo1Jxt@UEP6i_qVzOx5?`|=WGysDErB`V>?-=5&3H_a4Fk z007vGUhO&ai(~sByVk_L)j(Et)~TEJ*oaMB+Bfre3yo~VsuWoDHMMe(dZT0ttP>kQsENsLUV?O{EV*nO=_92{FF977%<}u0f wn)A)=e4S5Sbnb!Z0{{R300000006)o{~f`i2>4P8yZ`_I07*qoM6N<$f;f8JrT_o{ diff --git a/test-integration/snapshots/decodeMessage/nanox.55.png b/test-integration/snapshots/decodeMessage/nanox.55.png index 0f9f76e5234f7bad79c8181475231c36c5d43b8d..6fb64278872da49278bf6b6e344d72375d2a804d 100644 GIT binary patch delta 282 zcmV+#0pBYyz)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$f(zAua{vGU delta 531 zcmV+u0_^>?0;>d&BYy$%Nkl;QMF4Ky}<$)5mC3RW7su}8?!;%I70002D z68}ebsh1aDQ{})?pfskT#qoi1!LzAUX?eDNd0n-t_j;JexTww{6_G5c@|x=VPL+#J zv?~O@NCT|2Yk%2WrYK4Y>SWJO!65+2jxwFulT@*$blkOsRSPR$_Xx4V(`m+D$+!X6 z4{w@DskgIJ*ed`79vRy-@@(;P%5@A6TrjH>F7dOv=-Q;{mr z>P^MC+0PMQ#66qiB}dS6ApigXFq7ra+B@^So3K|nH-A|c(|;X(7#Xhi4?3+kJ~dTY zeaC97OmdO)4EodeJvAJw_R<#Eu&imLm0Izp_;?@A1N)~>s z8d}*$>%SW=a=rrhn!cBi8GOY}cvAJzg*)B@1~^rI0RR9100000000000Dx`z1F&A$ Vr99rEqznK6002ovPDHLkV1l=^`N04H diff --git a/test-integration/snapshots/decodeMessage/nanox.56.png b/test-integration/snapshots/decodeMessage/nanox.56.png index 0966b381351991acb6db707ea26cd67901f222f9..5a9a698b9ef0161df686d9e7c0eefcda79141330 100644 GIT binary patch delta 454 zcmV;%0XhE11K00N_+gDW&Mo1Jxt@UEP6i_qVzOx5?`|=WGysDErB`V>?-=5&3H_a4Fk z007vGUhO&ai(~sByVk_L)j(Et)~TEJ*oaMB+Bfre3yo~VsuWoDHMMe(dZT0ttP>kQsENsLUV?O{EV*nO=_92{FF977%<}u0f wn)A)=e4S5Sbnb!Z0{{R300000006)o{~f`i2>4P8yZ`_I07*qoM6N<$f;8>jqyPW_ delta 429 zcmV;e0aE_p1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfJ<-rx diff --git a/test-integration/snapshots/decodeMessage/nanox.57.png b/test-integration/snapshots/decodeMessage/nanox.57.png index a7a8740548d2608032872a36bbf128b89b69847d..0f9f76e5234f7bad79c8181475231c36c5d43b8d 100644 GIT binary patch delta 530 zcmV+t0`2{k1FHm(B!BWrL_t(|ob8)Yvg;rSK=bb0ow)xcxtIIljN=oq#$Yt*IbV%d zKv0uFdmI1&0002D^KZ6-7-M-ELXcg#v1&<|^7F76mRQTSVRildPL*CwBgPnGv>e)= z^Hg7i5K7zbWNrW~^191Tmo4g$9K3Rf+(4>?J^5LpHG3z7kbgeQmNs&=<_O8NWoOpx z0C%blG&X$6rg=#KGGk6$cn?@}1iAB+6JIhn0Qoph95X#7by>Zt8S0(Gk_G?(006fV z|3`MImlt1C<-k&)G^U}&@qu!|v#C^RdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZa zD+Ins1FW=b*?(K6C`t+HWY12)AppsaGM(9zRI#RX+_i*N3oBpu2(iM`X~tg3xB=G> zZ<dds_Kt=KYqDWkt)#Y zO~ts`&kR20000mljYCaJM+Aouva)YS$`JOe;s`o8LsvZI;}T8HC0)C z$7-xha*^{4`qTG4H5{w<(iYgT>Y|*BJnsm48GB_zOVpCi``9-CuXlao)&QJJ7JjT6 zTG>bIzZ))cz5@4}zL$_0e8o+8QuWb=JKh5ZI8}ZD000000000000000fNl8$uwK}u UJl>+D01E&B07*qoM6N<$f_E(Wq5uE@ delta 378 zcmV-=0fqjn1eF7jB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVzRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfxnIx> delta 374 zcmV-+0g3*{1CaxeB!5^*L_t(|obB6P5`r)cM$ziHlkR^>-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g0Kjup#T5? diff --git a/test-integration/snapshots/decodeMessage/nanox.59.png b/test-integration/snapshots/decodeMessage/nanox.59.png index 16de8fc0f37ff6f728af96098915c70e1686dacd..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 379 zcmV->0fhe91eF7jBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1jc@wOs%J delta 577 zcmV-H0>1r~1K9+SBYy%QNkl=WDHLf>~6T-O!vE5@mXpLwS1oO90Cb(Kk1KbMly zq$w$tl~#2fYKOMcV{0tbFv@c0S$@`&vCg^qnQVPg*MFgQs4qP>Hb_&F&sn(z z)hOMaA11e{WFTaeDXBxx((&XTq)M^+9%*)*CXvHOmw|I6BG zd>OF>^IgPrN8@Fx(_OZpuVvyrUNYRcB*9Yu$$yqet)yU-ntMT2$>v!R%Z&9U3)13yVM=fA%K|a(btdeXHEWA5mv_Oi z<&tVW!h!*KokP>Gk^5QoKM9`-EWt=So9`GLFGbM9Mw$EL>ZWf01^z2QR}0wF)q?WX zP&y=)W2P(`B^c?9+4>OP7UPK>&+%K(=^Unpjv(Dj0Dl1BYw{JuODHSL9ubWo+vNDS^wSpn>P z8Ofomg9b3k-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g3h+5wg3PC delta 450 zcmV;z0X_ba1Kb0UB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=X}N%2haqNBYy%HNklctg`YUnZJ$di=Xuse*FM*h z+N3L~m6cX)9cqWR(qro^wB_#nMi^ze`dNRri?Qu<_w%rgMSoj|+M&Mm*w`RVoqW#9 zBdA3g?nCZ>H@LTUHe{CxsCcb47dr`AD(?u=8S5l%$wB38;rgmlAK^5%qsr zJDo2hmSDb%oZ;xaggV{j2>MzA?*S2{-QCy=2LJ#7D|mae;QSVZL4S(pTacnbwr>&L z<>FIkW_-+(E-xi1UExZ$3#bJp!Gx?RSC zVap}edWHoPFx-c(VJG*q>i;2pDzF42oov2y@OmkNCL3k#&#Rld{Q>-UfUXv>+0}yb z)lf>3N}8#gMhQmBFy_*$ZJz&;1={71Bi3vf7+ zD3s&T*L7(8*;0glU82{0R^FjEuj{#6?6i=ze5=|j!SBmcY13Z#NDWo$%*5bG;0|Ed z%S<0`)zAdoJqAvI@)=~tAhn-12N52_r3iQVFxh^z$J8WD)kmo_wD499ttI;MG>#n` z*qf5@05SV0l$k&cT?{4w000000000000000000005Xc|#P8g$74i23F0000ue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjf4N%?* diff --git a/test-integration/snapshots/decodeMessage/nanox.62.png b/test-integration/snapshots/decodeMessage/nanox.62.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..389c244b04442e80358f7291847758d515e7dc33 100644 GIT binary patch delta 450 zcmV;z0X_c61Kb0UB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=X7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$g5`$Nf&c&j diff --git a/test-integration/snapshots/decodeMessage/nanox.63.png b/test-integration/snapshots/decodeMessage/nanox.63.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..ee51839298dd18fab729e0cee14040a1d0bd5122 100644 GIT binary patch delta 953 zcmV;q14jI<1kMMLBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfiuT>+ delta 533 zcmV+w0_y$F2dxBQ@-F?zbcX>%jAoOazW24E z1P~M_v=jgU004lu^QE3!Yx1$y`o>@e9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^ zd(Cb`soWFVKUw>B>%H`CuHC4taz-8qTWcz?UVdW9fqw!N^?#4z<=Slmu7VB4jcFK6 zMol_Zuh`|3$<8B}5Uj4}T1xyApmOAh<+#O3P zqp#M*AWwV}FOnL@$??|1Z{3H7XGs;nVrLR+{Gh%*?1VCyiMsVxzg;64wVtDRjjq9| z$Md+8H7hyyBldDanD0d^UNRn&jce}z0r8dzUYrf;I7W?1Oan*fE5nsBpFk0 zX4fdx&f1Ddx_a!fZ4~jENj)LOH=?G8!O;HT}f9B!7=dL_t(|obA|cl7k=&fMK??H{t$A;x7GRht2RAkX1w9=U1x{ zA^~)C4gdfExZIEY6GBK%d+(2f-urG_`bdppYx1D7yM7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$g7l@*ivR!s delta 331 zcmV-R0krvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCihO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@sJfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef^iV0`~Uy| diff --git a/test-integration/snapshots/decodeMessage/nanox.66.png b/test-integration/snapshots/decodeMessage/nanox.66.png index 56eff5485e79dd0f3771be67cb4e65b087e49838..14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9 100644 GIT binary patch delta 331 zcmV-R0kr;!1LgvdB!4YQL_t(|obB3C4#FS|fMGP=WcNQ3cky9L$jaEvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCih<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$fJfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Eg07mUC;$Ke delta 320 zcmV-G0l)r%1KR?SB!41FL_t(|obB3S4uc>JhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)m<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$f)tvm;s5{u delta 429 zcmV;e0aE^n1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjftM||Z diff --git a/test-integration/snapshots/decodeMessage/nanox.69.png b/test-integration/snapshots/decodeMessage/nanox.69.png index cbdc0a716eee4c7c2031ff28ccd9dba647040582..8a50d7e0aefb037bc7c64b380116e1dd54e9430f 100644 GIT binary patch delta 320 zcmV-G0l)r+1KR?SB!41FL_t(|obB3S4uc>JhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)mw z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_gzRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfz!T6A delta 378 zcmV-=0fqj@1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVhtNNdN!< diff --git a/test-integration/snapshots/decodeMessage/nanox.71.png b/test-integration/snapshots/decodeMessage/nanox.71.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdc0a716eee4c7c2031ff28ccd9dba647040582 GIT binary patch literal 390 zcmV;10eSw3P)m^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanox.72.png b/test-integration/snapshots/decodeMessage/nanox.72.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png index 80e70f7e10418dd0132e1ee1dc5340aee1f79430..9ebb3ca9aaa6c733312c80462ec4c3be4c524256 100644 GIT binary patch delta 494 zcmVgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000VRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000VRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000VRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000VRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f*fDC A>i_@% delta 410 zcmV;L0cHNM1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*&8tN&o-= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.10.png b/test-integration/snapshots/signTransactionRecordobt/nanos.10.png index bafc0e320244351797fec5739b9a6d9029cf45e8..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4U1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.25.png b/test-integration/snapshots/signTransactionRecordobt/nanos.25.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f*fDC A>i_@% delta 410 zcmV;L0cHNM1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*&8tN&o-= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.30.png b/test-integration/snapshots/signTransactionRecordobt/nanos.30.png index bafc0e320244351797fec5739b9a6d9029cf45e8..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4U1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f*fDC A>i_@% delta 410 zcmV;L0cHNM1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*&8tN&o-= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.50.png b/test-integration/snapshots/signTransactionRecordobt/nanos.50.png index bafc0e320244351797fec5739b9a6d9029cf45e8..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4U1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png index 03ce20464f95e49db96bbf4acf2c53b7eedcb45c..ca0f072d21f268ed096cea953a3896f48c09fa6c 100644 GIT binary patch delta 422 zcmV;X0a^az1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f-U&Z4FCWD delta 457 zcmV;)0XF`?1LFgbB!8+&L_t(|ob8#xa>XDBMbl3E{~w%1y2y-mynrC^%xgKTXbdPI zj^sFsq9}_0%7=E~b#@d092q{~WTHB< zN09JfEDk`1pyPt84I`UTpfr;r+(6ux8n&ZHsn-ERis*enK7Zhc*-VoajwI(vW*d}4 zE>^_i0Q9X=&BCx$50T-lHrWKDoTW1WJ7uj(Yi`fr#^9BNsQGj$Bh_DL)+sF$6~eE@ zcLp4aW#2Ao&kOVtI62Mn+yG5XXk3Vs;oiDJ&=XDX8HrEAX~A*;Vz7xb_RIPlD$A7l zQYjzor+l!J_|r_IP`E@Im+rGE_m7UI5$DOF;#!BxRLwbiM7a^%pX zQK!6iWd-!DeyC?*c}rNN{MPg!%#hQ#(1|J6N7@cpAh5O?n9zlqGubo};eb{E@o%*7 z+N$3ZgSz3bfcuwZbTzccUm4w4Ta_6~a&m=EWM2xJ9zvcZ`f?){P*M2QaH#GzzgNTH zmZy)G=ie%PWTv1(LFPT+@NLYfgS{wI`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1g5*%c%eW delta 460 zcmV;-0WFnPMcqvM{~zpyyYP&v=mG`-Rh)2EwjLk@ zLLKir6vnR_sB={u2q<^DhfLv$l;u+!0MQr(v^v&R}Aij&3QXjrHxcZmB zwtA_B97)PFy^^E^^r?8LWMN@TF2)JHa}V4)IlU8&n0OuJ?0^ZvYpa0?U8p&euNK@6 zXr&MTE=#Jd`aLnI82$?Qeo2N_Lwo#{(dD&OnV}>nS4HS}7NsEa;0mv;VgVIZTpA8l zOdP^%@Mq_{+$tQTrJzDb+C5-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f*fDC A>i_@% delta 410 zcmV;L0cHNM1GEE>B!7EJL_t(|ob8#x4udcVhH;ti|G*yH!KAAekQNY)eA&TP{EMZc zWdKQ%BuUc8y8M5!`lvza6uQTl@%mxZ9(Z^o*Vj+bW=vh;9DuKt5WwE8X@+%yY2KaP zn#Bxl^7_T*a7-x(&CszVon4w3rU5wIY8?agpuJE(E+xgB;(v|nY}R&y)_Fw$+TiOG zF0b!Fnb!7^y#z%7P+!~CExd5pOi$<=)iedQY|9ERoXr7xpI}q018{l|B_uEu75?4G z2%_U2a!$!YwK1wd`F6*37XQh7Yd+Bqyn~ok=(kUPA~_ZDWDMfT7(`+``)!JUT+%nG zq-w^>uOJS?kAHf4i{P^prs|-jS)j^Wno26AZ(d22m*iYFXooU7+63&;<7@qlf<&Cs zALx|lB1N)tt_8`lt)yOqg)`~^7?#@%E2)q{{V& zE2)g;UFiCoTWP7kDu~<%1mm_30A22WLH19QBnjsSWfP1d#wz0|Z2$lO07*qoM6N<$ Ef*&8tN&o-= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.70.png b/test-integration/snapshots/signTransactionRecordobt/nanos.70.png index bafc0e320244351797fec5739b9a6d9029cf45e8..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4U1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n-EygvW{ delta 403 zcmV;E0c`%M1FZv)B!6^CL_t(|ob8xV6N4ZKfN8h>{}1kAd+5$t0-=KB;=4U8Qy>uv z0D>S0f}n!W_WRvI3pybU3XNo@@$wzWb=%n?*V4a1`($c~r32n7QUHzyEh~IBSk}Yc z{W48Ucgqo8OTJJdL^uuAB^j)esRMsD%h<2_!)s|6l;ol^0)N`H*V7sS%t00|WJVY* z7Nig<1J|Bb2cTA-l8kU6^T5OQ!taf$_YNr84-||{j;++ju^y@pxU@dG1mF<$`AC}< zi4auRDd(gtlut$_P`2Icw0V9k&%w*vfM?)v5UuOv>4@F%Cw$;f_`nm*-7i!8q)A_; zliI8(zJe~$`hTdW>jQ&InCgS3%LH0~s&rB*E$W?AR8fh3b#`hWqL+Zh-T!q`g%b!Y zdqHw6I;msmHlWV|itRS_PUZJDJk%BJYW+=6tRJoSsPAVhQAIdDb xxjhed(@jB$I=~s5Isp1|_cOA85CnlcUx>g+EL3KiXbb=V002ovPDHLkV1mvKzyJUM diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.05.png b/test-integration/snapshots/signTransactionRecordobt/nanox.05.png index 80e70f7e10418dd0132e1ee1dc5340aee1f79430..9ebb3ca9aaa6c733312c80462ec4c3be4c524256 100644 GIT binary patch delta 494 zcmVgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s5TBr)Rv>7XE=G!GbwBJY66=QVueh}^- z%}>vtQ(M&$CkJCD9Ah+&qeD!}ADX2S)t-{@X&WnruC}E3B7Yzweh6A$tEnJ!#wEke zn_*;FWM*XM88c5?TYM2vGSv7lRld}H4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5q zoypmMrz-_jNZm87D=QV9eoBSEGj=JM?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A! z6|O~RFTaXWDSrrVgW(SV@H%Abf81nHU-}Me3tvH21}!JMc0-M1t0(z-JeRgDOB%9$ zP<30hq`&kmHMqoXBi#Wly#_6i(~`=su7^|o4TXbp(ToUaz`M`-TrPG%+o42BRT!}S zyBd=spx-eUx^^j+NI|EQr%HP8Q1^;mzeSVRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s5TBr)Rv>7XE=G!GbwBJY66=QVueh}^- z%}>vtQ(M&$CkJCD9Ah+&qeD!}ADX2S)t-{@X&WnruC}E3B7Yzweh6A$tEnJ!#wEke zn_*;FWM*XM88c5?TYM2vGSv7lRld}H4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5q zoypmMrz-_jNZm87D=QV9eoBSEGj=JM?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A! z6|O~RFTaXWDSrrVgW(SV@H%Abf81nHU-}Me3tvH21}!JMc0-M1t0(z-JeRgDOB%9$ zP<30hq`&kmHMqoXBi#Wly#_6i(~`=su7^|o4TXbp(ToUaz`M`-TrPG%+o42BRT!}S zyBd=spx-eUx^^j+NI|EQr%HP8Q1^;mzeSVRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s5TBr)Rv>7XE=G!GbwBJY66=QVueh}^- z%}>vtQ(M&$CkJCD9Ah+&qeD!}ADX2S)t-{@X&WnruC}E3B7Yzweh6A$tEnJ!#wEke zn_*;FWM*XM88c5?TYM2vGSv7lRld}H4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5q zoypmMrz-_jNZm87D=QV9eoBSEGj=JM?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A! z6|O~RFTaXWDSrrVgW(SV@H%Abf81nHU-}Me3tvH21}!JMc0-M1t0(z-JeRgDOB%9$ zP<30hq`&kmHMqoXBi#Wly#_6i(~`=su7^|o4TXbp(ToUaz`M`-TrPG%+o42BRT!}S zyBd=spx-eUx^^j+NI|EQr%HP8Q1^;mzeSVRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|gw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f_<>$F8}}l delta 534 zcmV+x0_pvT1g`{;B!BivL_t(|ob8)SZp0uAKxs8M$^DPSUAl;b5C(^D9k=hT62jPE zg9#=R0ssI2000000Q?uetQ#;-j4@qb*Jap}6v?$C=%YxfCD7Oplc1T z;U2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$g0i&qJOBUy delta 536 zcmV+z0_XjV1hE8=B!BoxL_t(|ob8)SZp0uAK+~!>;r>VBE?q=I2pfm*5V!BG5(1dm z#so8ST>t<8000000PtVqGq^NBuKFC0X7Fc#r2SmoYM~3hPY+;_ zLecK@?v)s09)Ijx7kHfkaEzLpdvyQH?+hq(?NRkN{=R}PK7T`B!r$140RR91034uc zAMlwk?qYitLWnUYaq_9%gE7v$TY1|%=DY21CqIq#az*U3L9J&gR4p-jcrC34kQDA# zb1QjNvhVOjcGx9LPN3S9vQtl8LdOkIC^WZ$dXXy2ciYNiu#z=Zy{pki_S5@JH)&aSsuc^+^_p{=X5jmJ}g@ipLT zc;VY5=~^vmA#YV{o6KLU(Bc^_CX|DzJw4!v9)0jEUXLW9#Oawh004|2gTA9>p!UE%b}?&!l=_&TfSYow^OjKm43d;Sc_g`O5uVSC9?z}X6e&47 zLuYU%1gQ(x^4zLSph^*sijyMVvIsviADzAIDrR6GaF|{DfNO3_u3Fdu00000007`! a`~rz-%@K4K0vVkE0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s5TBr)Rv>7XE=G!GbwBJY66=QVueh}^- z%}>vtQ(M&$CkJCD9Ah+&qeD!}ADX2S)t-{@X&WnruC}E3B7Yzweh6A$tEnJ!#wEke zn_*;FWM*XM88c5?TYM2vGSv7lRld}H4ei;7VY4>N;Hc|qNSi(f$iP?AOUX)?eKY5q zoypmMrz-_jNZm87D=QV9eoBSEGj=JM?CH+v&UObJW8W3scFR=MelaSn+i<8&^~?A! z6|O~RFTaXWDSrrVgW(SV@H%Abf81nHU-}Me3tvH21}!JMc0-M1t0(z-JeRgDOB%9$ zP<30hq`&kmHMqoXBi#Wly#_6i(~`=su7^|o4TXbp(ToUaz`M`-TrPG%+o42BRT!}S zyBd=spx-eUx^^j+NI|EQr%HP8Q1^;mzeSVRE?qcvC<&18QCirN*Yk7^9qbmnx}8?UmhVDELD*9><~ft$&0&0y5$cK^to|38(_n zLw%jGh^0o=WFl`}naA}O?g%J#(fCv0Av8=9jTRT!3Pm>Yn*9L)z(L3Poc-Y|=wY7Uh@~`(qpD=qqSi|5w~#YZvs4@9 z|Dwq~?q%Nyn69e+XW}XLazL1O+$5mB+nn>5&O|Kkl9fQ&s0z5W84bnww2Mv{_YoFz&aTl<} z3O`x)Qk`pZ8kWMX##4(qXF2Z8Disy<)e5$)4^k?hHEMnES4{F6Grm3+lKSHS~=h zYD@j<5_QYEHGc~4fWDj|DF_~e=??(#I%Mkqql-a*>pS9&_zH3`V*ePgh8n5%P4f1* zZWSzB8e~1ARpDq^X|zg47C2kCNef}MLMK~d7kw*%#u2$_cmxFS)>*v|F2$V= z2>g!ds7n6A?-JR-$&3iN?wA{0yBg1@Aayl6O(x}!hkv8)-CsYARxGP)-`0w>2GpLl zujKcY*9P_h4>MyQkgmn)f6e{?0N@~SN@soe3VN95H)18H#ZgtVYEf&Y{adKHQnOSW z<^Q6admLrm2)JEU|IfrztmS}o-=VW=a1XWRfyoto@UBI;Iy>AsN<59_B0!$PR1a~U u{wiP*1|t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000t5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8Bt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1g1k*M|TA delta 482 zcmV<80UiF?1N;M!B!9z6L_t(|ob8&;4#OY_fZ4LW{{!!^9hw*?KO)fDTE6tKX^RMm zl?@YWS%wrZ};^`XLj6C5j=`XRzc8T7En++4F=qUE(ZXhA= zFPm^Z?vUFwv5zOk^{x{!&4i|oqp@7PC=O{&Vt6k-S|AbIa z7|&lLJeKjX9D9IJ`1I@ndlwg#!u>j|StZ?r(YN7HPWc*o80KXfhv|PoOOoj#Ns{~V Y1Map_8BO7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1fa)(Fyu3EG4GT=dRYb?p)#NSLLJ_r`lL+y(}qK4P`o z+OM_=0gt(^D}T~V7&G2_@i4)c&jl@Xrnns4w<~u3E0~W{c(`o|`cjrWxsQANdxc4o zB*~@x*gr#wh7m`_VapJLbX_~1dKT1zQftGv2xYQpY|*Pbi+#3re}cw#p&d-m57{Ct zflWtG1j8qY8>9%A+8HsWR%sZ<(`x@zKSPmKd+6D;Tz@hE`b`cGTm+buEnft5`s|ge zsO&THls^D#SL%YcieBL)#!PbS@-Ghz&rDr^09HL#hDv2@=JnThaVJ9x&7^t638iqU zdxR8WFYZS}`CJg%4(t9i&et-~*7zQv8xy%GL$k-&-LzR} zd?Lyd32;%gsB$WSPk#tO)(z=S1HmlNf~rbm+kc#IO${20**zoRz`EoT|H77L*NRI| zc_9OprLjl5=UtU`-hO6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f{Hl6F#rGn delta 436 zcmV;l0Zaa@1I`1GB!87jL_t(|obB0Ja)U4ofMMF{O?>|&`7V86;!(5^5mqt(_e8-6 z;YCm~O#lD@!0CR*R_|RNXsykAT5C}Q8&0-y8{CAvHFcXGPqZDP&b7g(_imK!f7J!r zOO)|As>Z`@vqkUSUgBCZAGenWJGA!P+24WrzAiQvlT1$L7k@3jDK|Z%;4)6Mj+4=> z=+N34pjW^V^G@}`{HN_%cRRC~qIIbjyL(YL)hOEXxk)OrUI7Oc?p0xJ$9-(SOEb0X z@-gk2UTC8nUV;=`a5h@5#ox(4khizdCFmT>lOlS*8nsJpBxOojK3a5^8)PAJb^yi{ z8@FwP+BU1WuYb88LnWK3#+hhQJ}O%|A)-5y(e`?le9zw74c|CjyX2{YTvLLI+H2b0 zYx+k!0RVW@1-aAR#{S&?E#2u)dkrl&7-xSA+RlDqF0I%A_QJpi<#h4mr-2UJYm{jz;kGMiM*Tlo5ipt~rX`YmHH2G?T@000000000000000 e00000)btN4pKl=e`;(gh0000 Date: Fri, 30 Sep 2022 12:30:31 +0200 Subject: [PATCH 48/83] Add Speculos tests to CI --- .github/workflows/ci-workflow.yml | 130 +- .gitignore | 1 + ledgerjs-fio/package-lock.json | 9993 ----------------------------- null.d | 1 - 4 files changed, 125 insertions(+), 10000 deletions(-) delete mode 100644 ledgerjs-fio/package-lock.json delete mode 100644 null.d diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index edef4072..6b81651e 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -1,6 +1,6 @@ name: Compilation & tests -on: [workflow_dispatch, push] +on: [workflow_dispatch, push, pull_request] jobs: job_nanoS_build_debug: @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c steps: - name: Clone @@ -18,7 +18,7 @@ jobs: run: | make DEBUG=1 - - name: Upload app binary + - name: Upload app binary NanoS uses: actions/upload-artifact@v2 with: name: fio-app-nanoS-debug @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c steps: - name: Clone @@ -39,19 +39,40 @@ jobs: run: | make DEBUG=1 BOLOS_SDK=$NANOX_SDK - - name: Upload app binary + - name: Upload app binary NanoX uses: actions/upload-artifact@v2 with: name: fio-app-nanoX-debug path: bin + job_nanoSP_build_debug: + name: Build debug app for NanoSP + runs-on: ubuntu-latest + + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c + + steps: + - name: Clone + uses: actions/checkout@v2 + + - name: Build + run: | + make DEBUG=1 BOLOS_SDK=$NANOSP_SDK + + - name: Upload app binary NanoSP + uses: actions/upload-artifact@v2 + with: + name: fio-app-nanoSP-debug + path: bin + job_scan_build: name: Clang Static Analyzer runs-on: ubuntu-latest needs: job_nanoS_build_debug container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c steps: - uses: actions/checkout@v2 @@ -65,3 +86,100 @@ jobs: with: name: scan-build path: scan-build + + job_speculos_nanos_tests_5001: + name: NanoS Speculos 5001 tests + needs: job_nanoS_build_debug + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v2 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16.10.0 + - name: Download app binary + uses: actions/download-artifact@v2 + with: + name: fio-app-nanoS-debug + path: bin + + - name: install speculos + run: | + export BOLOS_SDK= + make js-yarn + make test-yarn + - name: Run tests + run: | + make speculos_port_5001_test + - name: Upload Speculos 5001s log + uses: actions/upload-artifact@v2 + with: + name: speculos-5001s-log + path: tests_speculos/speculos-port-5001.log + - name: Upload Speculos 5003s log + uses: actions/upload-artifact@v2 + with: + name: speculos-5001s-log + path: tests_speculos/speculos-port-5003.log + job_speculos_nanox_tests_5001: + name: NanoX Speculos 5001 tests + needs: job_nanoX_build_debug + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v2 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16.10.0 + - name: Download app binary + uses: actions/download-artifact@v2 + with: + name: fio-app-nanoX-debug + path: bin + + - name: install speculos + run: | + export BOLOS_SDK= + make js-yarn + make test-yarn + - name: Run tests + run: | + TARGET_DEVICE=NANO_X make speculos_port_5001_test + - name: Upload Speculos 5001s log + uses: actions/upload-artifact@v2 + with: + name: speculos-5001x-log + path: tests_speculos/speculos-port-5001.log + job_speculos_nanosp_tests_5001: + name: NanoS+ Speculos 5001 tests + needs: job_nanoSP_build_debug + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v2 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16.10.0 + - name: Download app binary + uses: actions/download-artifact@v2 + with: + name: fio-app-nanoSP-debug + path: bin + + - name: install speculos + run: | + export BOLOS_SDK= + make js-yarn + make test-yarn + - name: Run tests + run: | + TARGET_DEVICE=NANO_SP make speculos_port_5001_test + - name: Upload Speculos 5001sp log + uses: actions/upload-artifact@v2 + with: + name: speculos-5001sp-log + path: tests_speculos/speculos-port-5001.log + diff --git a/.gitignore b/.gitignore index efac2b31..dfc06c4f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ pkg *.log *.new.png yarn.lock +null.d diff --git a/ledgerjs-fio/package-lock.json b/ledgerjs-fio/package-lock.json deleted file mode 100644 index 63759448..00000000 --- a/ledgerjs-fio/package-lock.json +++ /dev/null @@ -1,9993 +0,0 @@ -{ - "name": "ledgerjs-hw-app-fio", - "version": "3.2.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "ledgerjs-hw-app-fio", - "version": "3.2.0", - "license": "Apache-2.0", - "dependencies": { - "@ledgerhq/hw-transport": "^5.12.0", - "@types/ledgerhq__hw-transport": "^4.21.3", - "base-x": "^3.0.5", - "bech32": "^1.1.4", - "wait-console-input": "^0.1.7" - }, - "devDependencies": { - "@fioprotocol/fiojs": "^1.0.1", - "@ledgerhq/hw-transport-node-hid": "^5.12.0", - "@types/chai": "^4.2.15", - "@types/chai-as-promised": "^7.1.3", - "@types/ledgerhq__hw-transport-node-hid": "^4.22.2", - "@types/mocha": "^8.2.1", - "@types/node": "^14.14.28", - "@typescript-eslint/eslint-plugin": "^4.15.0", - "@typescript-eslint/parser": "^4.15.0", - "bigi": "^1.4.2", - "bs58": "^4.0.1", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "chalk": "^4.0.0", - "create-hmac": "^1.1.7", - "ecurve": "^1.0.6", - "eslint": "^7.19.0", - "eslint-import-resolver-typescript": "^2.3.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-simple-import-sort": "^7.0.0", - "eslint-plugin-typescript": "^0.14.0", - "flow-bin": "^0.149.0", - "flowgen": "^1.14.0", - "gh-pages": "^3.1.0", - "mocha": "^7.1.1", - "node-fetch": "^2.6.1", - "prettier": "^2.2.1", - "prettier-eslint": "^12.0.0", - "randombytes": "^2.1.0", - "text-encoding": "^0.7.0", - "ts-node": "^9.1.1", - "typedoc": "^0.21.9", - "typescript": "^4.1.5" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@fioprotocol/fiojs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@fioprotocol/fiojs/-/fiojs-1.0.1.tgz", - "integrity": "sha512-+rxJ/ynUkox/DO3ihHPpAc//DDI+DQvrphLqwRKufw0atC3GKluGR2qMTeO45O0UjorvOIw6esuuG7NpbVUm8Q==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "babel-runtime": "6.26.0", - "bigi": "^1.4.2", - "browserify-aes": "^1.2.0", - "bs58": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "ecurve": "^1.0.6", - "long": "^4.0.0", - "randombytes": "^2.1.0", - "text-encoding": "0.7.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "node_modules/@ledgerhq/devices": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", - "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", - "dependencies": { - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/logs": "^5.50.0", - "rxjs": "6", - "semver": "^7.3.5" - } - }, - "node_modules/@ledgerhq/errors": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", - "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" - }, - "node_modules/@ledgerhq/hw-transport": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", - "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", - "dependencies": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "events": "^3.3.0" - } - }, - "node_modules/@ledgerhq/hw-transport-node-hid": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.51.1.tgz", - "integrity": "sha512-Y2eVCCdhVs2Lfr7N2x2cNb+ogcZ24ZATO4QxaQ7LogjiPwYmzmvuXFn8zFjMSrKUCn9CtbptXcuiu0NkGsjWlw==", - "dev": true, - "dependencies": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/hw-transport-node-hid-noevents": "^5.51.1", - "@ledgerhq/logs": "^5.50.0", - "lodash": "^4.17.21", - "node-hid": "2.1.1", - "usb": "^1.7.0" - } - }, - "node_modules/@ledgerhq/hw-transport-node-hid-noevents": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz", - "integrity": "sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg==", - "dev": true, - "dependencies": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/logs": "^5.50.0", - "node-hid": "2.1.1" - } - }, - "node_modules/@ledgerhq/logs": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", - "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/chai": { - "version": "4.2.21", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", - "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", - "dev": true - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz", - "integrity": "sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/ledgerhq__hw-transport": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.4.tgz", - "integrity": "sha512-vep+6yZnGv6owAthIY0w3f72w4dJIb4+yE5PCHveInTlZE9wukvU6Wc5Eig0OUUxcdhTazzeZx1xUaNVLqyQSg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ledgerhq__hw-transport-node-hid": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/@types/ledgerhq__hw-transport-node-hid/-/ledgerhq__hw-transport-node-hid-4.22.2.tgz", - "integrity": "sha512-b9dXYEZ8Iijv20LykEVhbThVzSjchMpvj8y/mSsCSP1n7Ncs+YqD8mjEV/bGTks9jAP8CdxhRqOGq+h47/4B9g==", - "dev": true, - "dependencies": { - "@types/ledgerhq__hw-transport": "*", - "@types/node": "*", - "@types/node-hid": "*" - } - }, - "node_modules/@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.12.tgz", - "integrity": "sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw==" - }, - "node_modules/@types/node-hid": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/node-hid/-/node-hid-1.3.1.tgz", - "integrity": "sha512-VPxuGDCoDxOUKrTZPSok7IEmiK4cVLfj8Csu09FtG5uF+eqf1HETERHXQkO02Rk6j6YiiHxp0/DA9R4llvhEzQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.30.0.tgz", - "integrity": "sha512-NgAnqk55RQ/SD+tZFD9aPwNSeHmDHHe5rtUyhIq0ZeCWZEvo4DK9rYz7v9HDuQZFvn320Ot+AikaCKMFKLlD0g==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.30.0", - "@typescript-eslint/scope-manager": "4.30.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.30.0.tgz", - "integrity": "sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.30.0", - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/typescript-estree": "4.30.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz", - "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.30.0.tgz", - "integrity": "sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.30.0", - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/typescript-estree": "4.30.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz", - "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz", - "integrity": "sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.30.0.tgz", - "integrity": "sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz", - "integrity": "sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.30.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "node_modules/bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ecurve": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", - "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", - "dev": true, - "dependencies": { - "bigi": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", - "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz", - "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-mocha": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.2.0.tgz", - "integrity": "sha512-8oOR47Ejt+YJPNQzedbiklDqS1zurEaNrxXpRs+Uk4DMDPVmKNagShFeUaYsfvWP55AhI+P1non5QZAHV6K78A==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.1.0", - "ramda": "^0.27.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", - "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-plugin-typescript": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz", - "integrity": "sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==", - "deprecated": "Deprecated: Use @typescript-eslint/eslint-plugin instead", - "dev": true, - "dependencies": { - "requireindex": "~1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "node_modules/flow-bin": { - "version": "0.149.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.149.0.tgz", - "integrity": "sha512-32hM6iKSInPCUuooS23SJ4c5Up0Tt9ozrXEE6urEpTDJU0z/vQblnCBRt3QZaEEDzSKOu2QZAU6K7fbShOOHaQ==", - "dev": true, - "bin": { - "flow": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flowgen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/flowgen/-/flowgen-1.14.1.tgz", - "integrity": "sha512-rpwM75zi4BH5CLHtak0/1wZ40/3eEi2E7CafjiGPnyL2b9y3zznSrgbNTnpkspU1o4C0Ypsvfwi0lFslIVxWVw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/highlight": "^7.10.4", - "commander": "^6.1.0", - "lodash": "^4.17.20", - "prettier": "^2.1.1", - "shelljs": "^0.8.4", - "typescript": "^4.0.2", - "typescript-compiler": "^1.4.1-2" - }, - "bin": { - "flowgen": "lib/cli/index.js" - } - }, - "node_modules/flowgen/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gh-pages": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", - "dev": true, - "dependencies": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "globby": "^6.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/marked": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.2.tgz", - "integrity": "sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA==", - "dev": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-abi": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", - "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", - "dev": true, - "dependencies": { - "semver": "^5.4.1" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-addon-api": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", - "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==", - "dev": true - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-hid": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz", - "integrity": "sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^3.0.2", - "prebuild-install": "^6.0.0" - }, - "bin": { - "hid-showdevices": "src/show-devices.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-hid/node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node_modules/node-hid/node_modules/prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "dependencies": { - "lru-cache": "^5.1.1" - } - }, - "node_modules/onigasm/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/onigasm/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prebuild-install": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", - "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-eslint": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-12.0.0.tgz", - "integrity": "sha512-N8SGGQwAosISXTNl1E57sBbtnqUGlyRWjcfIUxyD3HF4ynehA9GZ8IfJgiep/OfYvCof/JEpy9ZqSl250Wia7A==", - "dev": true, - "dependencies": { - "@typescript-eslint/parser": "^3.0.0", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^7.9.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^2.0.0", - "pretty-format": "^23.0.1", - "require-relative": "^0.8.7", - "typescript": "^3.9.3", - "vue-eslint-parser": "~7.1.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", - "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", - "dev": true, - "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "node_modules/requireindex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", - "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shiki": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.8.tgz", - "integrity": "sha512-499zQUTjcNTVwwiaPrWldUTXIV3T9HZWxDwE82bY+9GE7P2uD6hpHUTXNbTof3iOG6WT+/062+OMbl0lDoG8WQ==", - "dev": true, - "dependencies": { - "json5": "^2.2.0", - "onigasm": "^2.2.5", - "vscode-textmate": "5.2.0" - } - }, - "node_modules/shiki/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "dev": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/text-encoding": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz", - "integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==", - "deprecated": "no longer maintained", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": ">=2.7" - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedoc": { - "version": "0.21.9", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.9.tgz", - "integrity": "sha512-VRo7aII4bnYaBBM1lhw4bQFmUcDQV8m8tqgjtc7oXl87jc1Slbhfw2X5MccfcR2YnEClHDWgsiQGgNB8KJXocA==", - "dev": true, - "dependencies": { - "glob": "^7.1.7", - "handlebars": "^4.7.7", - "lunr": "^2.3.9", - "marked": "^3.0.2", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shiki": "^0.9.8", - "typedoc-default-themes": "^0.12.10" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 12.10.0" - }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x" - } - }, - "node_modules/typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typescript-compiler": { - "version": "1.4.1-2", - "resolved": "https://registry.npmjs.org/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz", - "integrity": "sha1-uk99si2RU0oZKdkACdzhYety/T8=", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/usb": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/usb/-/usb-1.7.2.tgz", - "integrity": "sha512-SfVSItgsD9+YfEpcK1UZ8tQ7e8GdxQ0xoQtB773omNBKTVj3IuFJNKjwSnpE58FGcV4tUoKLHmBMc018RUY5SA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.4.0", - "node-addon-api": "3.0.2", - "prebuild-install": "^5.3.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "node_modules/vue-eslint-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.1.tgz", - "integrity": "sha512-8FdXi0gieEwh1IprIBafpiJWcApwrU+l2FEj8c1HtHFdNXMd0+2jUSjBVmcQYohf/E72irwAXEXLga6TQcB3FA==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.0.1", - "lodash": "^4.17.15" - }, - "engines": { - "node": ">=8.10" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/wait-console-input": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/wait-console-input/-/wait-console-input-0.1.7.tgz", - "integrity": "sha512-gDxDpK1hbpsCk9nryIDUhrtK6wS9ei/o//BTFSYdMChlKMpHVUdw0LSnPR9lVSMgBAKybbezUYA8XRjTqu11hQ==", - "dependencies": { - "readline-sync": "^1.4.9" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "@fioprotocol/fiojs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@fioprotocol/fiojs/-/fiojs-1.0.1.tgz", - "integrity": "sha512-+rxJ/ynUkox/DO3ihHPpAc//DDI+DQvrphLqwRKufw0atC3GKluGR2qMTeO45O0UjorvOIw6esuuG7NpbVUm8Q==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "babel-runtime": "6.26.0", - "bigi": "^1.4.2", - "browserify-aes": "^1.2.0", - "bs58": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "ecurve": "^1.0.6", - "long": "^4.0.0", - "randombytes": "^2.1.0", - "text-encoding": "0.7.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@ledgerhq/devices": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", - "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", - "requires": { - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/logs": "^5.50.0", - "rxjs": "6", - "semver": "^7.3.5" - } - }, - "@ledgerhq/errors": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", - "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" - }, - "@ledgerhq/hw-transport": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", - "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", - "requires": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "events": "^3.3.0" - } - }, - "@ledgerhq/hw-transport-node-hid": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.51.1.tgz", - "integrity": "sha512-Y2eVCCdhVs2Lfr7N2x2cNb+ogcZ24ZATO4QxaQ7LogjiPwYmzmvuXFn8zFjMSrKUCn9CtbptXcuiu0NkGsjWlw==", - "dev": true, - "requires": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/hw-transport-node-hid-noevents": "^5.51.1", - "@ledgerhq/logs": "^5.50.0", - "lodash": "^4.17.21", - "node-hid": "2.1.1", - "usb": "^1.7.0" - } - }, - "@ledgerhq/hw-transport-node-hid-noevents": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.51.1.tgz", - "integrity": "sha512-9wFf1L8ZQplF7XOY2sQGEeOhpmBRzrn+4X43kghZ7FBDoltrcK+s/D7S+7ffg3j2OySyP6vIIIgloXylao5Scg==", - "dev": true, - "requires": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/logs": "^5.50.0", - "node-hid": "2.1.1" - } - }, - "@ledgerhq/logs": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", - "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/chai": { - "version": "4.2.21", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", - "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", - "dev": true - }, - "@types/chai-as-promised": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz", - "integrity": "sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "@types/ledgerhq__hw-transport": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.4.tgz", - "integrity": "sha512-vep+6yZnGv6owAthIY0w3f72w4dJIb4+yE5PCHveInTlZE9wukvU6Wc5Eig0OUUxcdhTazzeZx1xUaNVLqyQSg==", - "requires": { - "@types/node": "*" - } - }, - "@types/ledgerhq__hw-transport-node-hid": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/@types/ledgerhq__hw-transport-node-hid/-/ledgerhq__hw-transport-node-hid-4.22.2.tgz", - "integrity": "sha512-b9dXYEZ8Iijv20LykEVhbThVzSjchMpvj8y/mSsCSP1n7Ncs+YqD8mjEV/bGTks9jAP8CdxhRqOGq+h47/4B9g==", - "dev": true, - "requires": { - "@types/ledgerhq__hw-transport": "*", - "@types/node": "*", - "@types/node-hid": "*" - } - }, - "@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, - "@types/node": { - "version": "14.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.12.tgz", - "integrity": "sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw==" - }, - "@types/node-hid": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/node-hid/-/node-hid-1.3.1.tgz", - "integrity": "sha512-VPxuGDCoDxOUKrTZPSok7IEmiK4cVLfj8Csu09FtG5uF+eqf1HETERHXQkO02Rk6j6YiiHxp0/DA9R4llvhEzQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.30.0.tgz", - "integrity": "sha512-NgAnqk55RQ/SD+tZFD9aPwNSeHmDHHe5rtUyhIq0ZeCWZEvo4DK9rYz7v9HDuQZFvn320Ot+AikaCKMFKLlD0g==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.30.0", - "@typescript-eslint/scope-manager": "4.30.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.30.0.tgz", - "integrity": "sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.30.0", - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/typescript-estree": "4.30.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/typescript-estree": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz", - "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.30.0.tgz", - "integrity": "sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.30.0", - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/typescript-estree": "4.30.0", - "debug": "^4.3.1" - }, - "dependencies": { - "@typescript-eslint/typescript-estree": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz", - "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz", - "integrity": "sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.30.0", - "@typescript-eslint/visitor-keys": "4.30.0" - } - }, - "@typescript-eslint/types": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.30.0.tgz", - "integrity": "sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", - "dev": true - }, - "@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz", - "integrity": "sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.30.0", - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true, - "requires": { - "base-x": "^3.0.2" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ecurve": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", - "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", - "dev": true, - "requires": { - "bigi": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", - "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "dependencies": { - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-import-resolver-typescript": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz", - "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - } - }, - "eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "eslint-plugin-mocha": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.2.0.tgz", - "integrity": "sha512-8oOR47Ejt+YJPNQzedbiklDqS1zurEaNrxXpRs+Uk4DMDPVmKNagShFeUaYsfvWP55AhI+P1non5QZAHV6K78A==", - "dev": true, - "requires": { - "eslint-utils": "^2.1.0", - "ramda": "^0.27.1" - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-simple-import-sort": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", - "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", - "dev": true, - "requires": {} - }, - "eslint-plugin-typescript": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz", - "integrity": "sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==", - "dev": true, - "requires": { - "requireindex": "~1.1.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true - }, - "filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "flow-bin": { - "version": "0.149.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.149.0.tgz", - "integrity": "sha512-32hM6iKSInPCUuooS23SJ4c5Up0Tt9ozrXEE6urEpTDJU0z/vQblnCBRt3QZaEEDzSKOu2QZAU6K7fbShOOHaQ==", - "dev": true - }, - "flowgen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/flowgen/-/flowgen-1.14.1.tgz", - "integrity": "sha512-rpwM75zi4BH5CLHtak0/1wZ40/3eEi2E7CafjiGPnyL2b9y3zznSrgbNTnpkspU1o4C0Ypsvfwi0lFslIVxWVw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/highlight": "^7.10.4", - "commander": "^6.1.0", - "lodash": "^4.17.20", - "prettier": "^2.1.1", - "shelljs": "^0.8.4", - "typescript": "^4.0.2", - "typescript-compiler": "^1.4.1-2" - }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - } - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "gh-pages": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", - "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", - "dev": true, - "requires": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "globby": "^6.1.0" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, - "loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "marked": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.2.tgz", - "integrity": "sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-abi": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", - "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", - "dev": true, - "requires": { - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "node-addon-api": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", - "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==", - "dev": true - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - }, - "node-hid": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz", - "integrity": "sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^3.0.2", - "prebuild-install": "^6.0.0" - }, - "dependencies": { - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - } - } - }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - }, - "dependencies": { - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "prebuild-install": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", - "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", - "dev": true - }, - "prettier-eslint": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-12.0.0.tgz", - "integrity": "sha512-N8SGGQwAosISXTNl1E57sBbtnqUGlyRWjcfIUxyD3HF4ynehA9GZ8IfJgiep/OfYvCof/JEpy9ZqSl250Wia7A==", - "dev": true, - "requires": { - "@typescript-eslint/parser": "^3.0.0", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^7.9.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^2.0.0", - "pretty-format": "^23.0.1", - "require-relative": "^0.8.7", - "typescript": "^3.9.3", - "vue-eslint-parser": "~7.1.0" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", - "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", - "dev": true - }, - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true - } - } - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "requireindex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", - "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shiki": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.8.tgz", - "integrity": "sha512-499zQUTjcNTVwwiaPrWldUTXIV3T9HZWxDwE82bY+9GE7P2uD6hpHUTXNbTof3iOG6WT+/062+OMbl0lDoG8WQ==", - "dev": true, - "requires": { - "json5": "^2.2.0", - "onigasm": "^2.2.5", - "vscode-textmate": "5.2.0" - }, - "dependencies": { - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "dev": true, - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "text-encoding": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz", - "integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typedoc": { - "version": "0.21.9", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.9.tgz", - "integrity": "sha512-VRo7aII4bnYaBBM1lhw4bQFmUcDQV8m8tqgjtc7oXl87jc1Slbhfw2X5MccfcR2YnEClHDWgsiQGgNB8KJXocA==", - "dev": true, - "requires": { - "glob": "^7.1.7", - "handlebars": "^4.7.7", - "lunr": "^2.3.9", - "marked": "^3.0.2", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shiki": "^0.9.8", - "typedoc-default-themes": "^0.12.10" - } - }, - "typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true - }, - "typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", - "dev": true - }, - "typescript-compiler": { - "version": "1.4.1-2", - "resolved": "https://registry.npmjs.org/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz", - "integrity": "sha1-uk99si2RU0oZKdkACdzhYety/T8=", - "dev": true - }, - "uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", - "dev": true, - "optional": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "usb": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/usb/-/usb-1.7.2.tgz", - "integrity": "sha512-SfVSItgsD9+YfEpcK1UZ8tQ7e8GdxQ0xoQtB773omNBKTVj3IuFJNKjwSnpE58FGcV4tUoKLHmBMc018RUY5SA==", - "dev": true, - "requires": { - "bindings": "^1.4.0", - "node-addon-api": "3.0.2", - "prebuild-install": "^5.3.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "vue-eslint-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.1.tgz", - "integrity": "sha512-8FdXi0gieEwh1IprIBafpiJWcApwrU+l2FEj8c1HtHFdNXMd0+2jUSjBVmcQYohf/E72irwAXEXLga6TQcB3FA==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.0.1", - "lodash": "^4.17.15" - }, - "dependencies": { - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - } - } - }, - "wait-console-input": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/wait-console-input/-/wait-console-input-0.1.7.tgz", - "integrity": "sha512-gDxDpK1hbpsCk9nryIDUhrtK6wS9ei/o//BTFSYdMChlKMpHVUdw0LSnPR9lVSMgBAKybbezUYA8XRjTqu11hQ==", - "requires": { - "readline-sync": "^1.4.9" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/null.d b/null.d deleted file mode 100644 index 4b1d012d..00000000 --- a/null.d +++ /dev/null @@ -1 +0,0 @@ -obj/keyDerivation_test.o obj/keyDerivation_test.o: /dev/null From 83f49a6b335fc025166ca426721aa191c53bd6d9 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 3 Oct 2022 16:20:56 +0200 Subject: [PATCH 49/83] Minor fixes all around --- MakefileTest.mk | 4 + README.md | 2 +- doc/ins_get_public_key.md | 2 +- doc/ins_sign_tx.md | 170 +++++++---- .../transactionTemplates/commands.ts | 9 +- .../template_addaddress.ts | 2 +- .../template_addbundles.ts | 2 +- .../transactionTemplates/template_addnft.ts | 14 +- .../template_newfundsreq.ts | 4 +- .../template_recordobt.ts | 4 +- .../template_regaddress.ts | 2 +- .../template_remaddress.ts | 2 +- .../template_remalladdr.ts | 2 +- .../template_remallnfts.ts | 2 +- .../transactionTemplates/template_remnft.ts | 2 +- .../transactionTemplates/template_stakefio.ts | 2 +- .../template_unstakefio.ts | 2 +- .../template_voteproducer.ts | 2 +- .../template_voteproxy.ts | 2 +- .../template_xferaddress.ts | 2 +- ledgerjs-fio/src/utils/parseTxActions.ts | 9 +- src/signTransactionIntegrity.c | 273 ++++++------------ test-integration/signTransactionRecordobt.js | 2 +- .../signTransactionTrnsfiopubky.js | 41 +++ .../signTransactionAddaddress/nanos.04.png | Bin 473 -> 453 bytes .../signTransactionAddaddress/nanos.12.png | Bin 473 -> 453 bytes .../signTransactionAddaddress/nanos.21.png | Bin 473 -> 453 bytes .../signTransactionAddaddress/nanos.31.png | Bin 473 -> 453 bytes .../signTransactionAddaddress/nanos.42.png | Bin 473 -> 453 bytes .../signTransactionAddaddress/nanox.04.png | Bin 965 -> 950 bytes .../signTransactionAddaddress/nanox.05.png | Bin 428 -> 409 bytes .../signTransactionAddaddress/nanox.14.png | Bin 965 -> 950 bytes .../signTransactionAddaddress/nanox.15.png | Bin 428 -> 409 bytes .../signTransactionAddaddress/nanox.25.png | Bin 965 -> 950 bytes .../signTransactionAddaddress/nanox.26.png | Bin 428 -> 409 bytes .../signTransactionAddaddress/nanox.37.png | Bin 965 -> 950 bytes .../signTransactionAddaddress/nanox.38.png | Bin 428 -> 409 bytes .../signTransactionAddaddress/nanox.50.png | Bin 965 -> 950 bytes .../signTransactionAddaddress/nanox.51.png | Bin 428 -> 409 bytes .../signTransactionAddnft/nanos.04.png | Bin 473 -> 453 bytes .../signTransactionAddnft/nanos.12.png | Bin 473 -> 453 bytes .../signTransactionAddnft/nanos.21.png | Bin 473 -> 453 bytes .../signTransactionAddnft/nanox.04.png | Bin 965 -> 950 bytes .../signTransactionAddnft/nanox.05.png | Bin 428 -> 409 bytes .../signTransactionAddnft/nanox.14.png | Bin 965 -> 950 bytes .../signTransactionAddnft/nanox.15.png | Bin 428 -> 409 bytes .../signTransactionAddnft/nanox.25.png | Bin 965 -> 950 bytes .../signTransactionAddnft/nanox.26.png | Bin 428 -> 409 bytes .../signTransactionNewfundsreq/nanos.04.png | Bin 448 -> 467 bytes .../signTransactionNewfundsreq/nanos.05.png | Bin 453 -> 467 bytes .../signTransactionNewfundsreq/nanos.20.png | Bin 448 -> 467 bytes .../signTransactionNewfundsreq/nanos.21.png | Bin 453 -> 467 bytes .../signTransactionNewfundsreq/nanos.36.png | Bin 448 -> 467 bytes .../signTransactionNewfundsreq/nanos.37.png | Bin 453 -> 467 bytes .../signTransactionNewfundsreq/nanos.52.png | Bin 448 -> 467 bytes .../signTransactionNewfundsreq/nanos.53.png | Bin 453 -> 467 bytes .../signTransactionNewfundsreq/nanox.04.png | Bin 520 -> 539 bytes .../signTransactionNewfundsreq/nanox.05.png | Bin 524 -> 540 bytes .../signTransactionNewfundsreq/nanox.23.png | Bin 520 -> 539 bytes .../signTransactionNewfundsreq/nanox.24.png | Bin 524 -> 540 bytes .../signTransactionNewfundsreq/nanox.42.png | Bin 520 -> 539 bytes .../signTransactionNewfundsreq/nanox.43.png | Bin 524 -> 540 bytes .../signTransactionNewfundsreq/nanox.61.png | Bin 520 -> 539 bytes .../signTransactionNewfundsreq/nanox.62.png | Bin 524 -> 540 bytes .../signTransactionOtherEosio/nanos.05.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.105.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.122.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.14.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.140.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.159.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.179.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.200.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.222.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.24.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.245.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.269.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.294.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.320.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.347.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.35.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.375.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.404.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.434.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.465.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.47.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.497.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.530.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.564.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.599.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.60.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.635.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.672.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.680.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.74.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanos.89.png | Bin 473 -> 453 bytes .../signTransactionOtherEosio/nanox.05.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.06.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.103.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.104.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.121.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.122.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.140.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.141.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.16.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.160.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.161.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.17.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.181.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.182.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.203.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.204.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.226.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.227.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.250.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.251.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.275.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.276.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.28.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.29.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.301.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.302.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.328.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.329.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.356.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.357.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.385.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.386.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.41.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.415.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.416.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.42.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.446.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.447.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.478.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.479.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.511.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.512.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.545.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.546.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.55.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.56.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.580.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.581.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.616.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.617.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.653.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.654.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.691.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.692.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.70.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.71.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.730.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.731.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.740.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.741.png | Bin 428 -> 409 bytes .../signTransactionOtherEosio/nanox.86.png | Bin 965 -> 950 bytes .../signTransactionOtherEosio/nanox.87.png | Bin 428 -> 409 bytes .../nanos.04.png | Bin 473 -> 453 bytes .../nanos.11.png | Bin 473 -> 453 bytes .../nanos.19.png | Bin 473 -> 453 bytes .../nanos.27.png | Bin 473 -> 453 bytes .../nanos.74.png | Bin 473 -> 453 bytes .../nanox.04.png | Bin 965 -> 950 bytes .../nanox.05.png | Bin 428 -> 409 bytes .../nanox.13.png | Bin 965 -> 950 bytes .../nanox.14.png | Bin 428 -> 409 bytes .../nanox.23.png | Bin 965 -> 950 bytes .../nanox.24.png | Bin 428 -> 409 bytes .../nanox.33.png | Bin 965 -> 950 bytes .../nanox.34.png | Bin 428 -> 409 bytes .../nanox.87.png | Bin 965 -> 950 bytes .../nanox.88.png | Bin 428 -> 409 bytes .../nanos.04.png | Bin 473 -> 453 bytes .../nanos.12.png | Bin 473 -> 453 bytes .../nanox.04.png | Bin 965 -> 950 bytes .../nanox.05.png | Bin 428 -> 409 bytes .../nanox.14.png | Bin 965 -> 950 bytes .../nanox.15.png | Bin 428 -> 409 bytes .../signTransactionRecordobt/nanos.05.png | Bin 448 -> 467 bytes .../signTransactionRecordobt/nanos.06.png | Bin 453 -> 467 bytes .../signTransactionRecordobt/nanos.25.png | Bin 448 -> 467 bytes .../signTransactionRecordobt/nanos.26.png | Bin 453 -> 467 bytes .../signTransactionRecordobt/nanos.44.png | Bin 371 -> 279 bytes .../signTransactionRecordobt/nanos.45.png | Bin 448 -> 467 bytes .../signTransactionRecordobt/nanos.46.png | Bin 453 -> 467 bytes .../signTransactionRecordobt/nanos.64.png | Bin 371 -> 279 bytes .../signTransactionRecordobt/nanos.65.png | Bin 448 -> 467 bytes .../signTransactionRecordobt/nanos.66.png | Bin 453 -> 467 bytes .../signTransactionRecordobt/nanox.05.png | Bin 520 -> 539 bytes .../signTransactionRecordobt/nanox.06.png | Bin 524 -> 540 bytes .../signTransactionRecordobt/nanox.28.png | Bin 520 -> 539 bytes .../signTransactionRecordobt/nanox.29.png | Bin 524 -> 540 bytes .../signTransactionRecordobt/nanox.50.png | Bin 428 -> 336 bytes .../signTransactionRecordobt/nanox.51.png | Bin 520 -> 539 bytes .../signTransactionRecordobt/nanox.52.png | Bin 524 -> 540 bytes .../signTransactionRecordobt/nanox.73.png | Bin 428 -> 336 bytes .../signTransactionRecordobt/nanox.74.png | Bin 520 -> 539 bytes .../signTransactionRecordobt/nanox.75.png | Bin 524 -> 540 bytes .../signTransactionRemaddress/nanos.04.png | Bin 473 -> 453 bytes .../signTransactionRemaddress/nanos.12.png | Bin 473 -> 453 bytes .../signTransactionRemaddress/nanos.21.png | Bin 473 -> 453 bytes .../signTransactionRemaddress/nanos.31.png | Bin 473 -> 453 bytes .../signTransactionRemaddress/nanos.42.png | Bin 473 -> 453 bytes .../signTransactionRemaddress/nanox.04.png | Bin 965 -> 950 bytes .../signTransactionRemaddress/nanox.05.png | Bin 428 -> 409 bytes .../signTransactionRemaddress/nanox.14.png | Bin 965 -> 950 bytes .../signTransactionRemaddress/nanox.15.png | Bin 428 -> 409 bytes .../signTransactionRemaddress/nanox.25.png | Bin 965 -> 950 bytes .../signTransactionRemaddress/nanox.26.png | Bin 428 -> 409 bytes .../signTransactionRemaddress/nanox.37.png | Bin 965 -> 950 bytes .../signTransactionRemaddress/nanox.38.png | Bin 428 -> 409 bytes .../signTransactionRemaddress/nanox.50.png | Bin 965 -> 950 bytes .../signTransactionRemaddress/nanox.51.png | Bin 428 -> 409 bytes .../signTransactionRemnft/nanos.04.png | Bin 473 -> 453 bytes .../signTransactionRemnft/nanos.12.png | Bin 473 -> 453 bytes .../signTransactionRemnft/nanos.21.png | Bin 473 -> 453 bytes .../signTransactionRemnft/nanox.04.png | Bin 965 -> 950 bytes .../signTransactionRemnft/nanox.05.png | Bin 428 -> 409 bytes .../signTransactionRemnft/nanox.14.png | Bin 965 -> 950 bytes .../signTransactionRemnft/nanox.15.png | Bin 428 -> 409 bytes .../signTransactionRemnft/nanox.25.png | Bin 965 -> 950 bytes .../signTransactionRemnft/nanox.26.png | Bin 428 -> 409 bytes .../signTransactionTrnsfiopubky/nanos.26.png | Bin 0 -> 314 bytes .../signTransactionTrnsfiopubky/nanos.27.png | Bin 0 -> 366 bytes .../signTransactionTrnsfiopubky/nanos.28.png | Bin 0 -> 498 bytes .../signTransactionTrnsfiopubky/nanos.29.png | Bin 0 -> 390 bytes .../signTransactionTrnsfiopubky/nanos.30.png | Bin 0 -> 411 bytes .../signTransactionTrnsfiopubky/nanos.31.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanos.32.png | Bin 0 -> 356 bytes .../signTransactionTrnsfiopubky/nanos.33.png | Bin 0 -> 426 bytes .../signTransactionTrnsfiopubky/nanox.33.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanox.34.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanox.35.png | Bin 0 -> 1007 bytes .../signTransactionTrnsfiopubky/nanox.36.png | Bin 0 -> 453 bytes .../signTransactionTrnsfiopubky/nanox.37.png | Bin 0 -> 502 bytes .../signTransactionTrnsfiopubky/nanox.38.png | Bin 0 -> 515 bytes .../signTransactionTrnsfiopubky/nanox.39.png | Bin 0 -> 937 bytes .../signTransactionTrnsfiopubky/nanox.40.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanox.41.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanox.42.png | Bin 0 -> 405 bytes 240 files changed, 278 insertions(+), 280 deletions(-) create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.26.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.27.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.28.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.33.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.34.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanox.42.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 0aea0ec2..2fe9668b 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -70,6 +70,10 @@ speculos_port_5001_test: $(call run_announce,$@) $(MAKE) --no-print-directory speculos_port_5001_start && ($(MAKE) --no-print-directory speculos_port_5001_test_internal; ret=$$?;$(MAKE) --no-print-directory speculos_port_5001_stop;$(call run_announce,note: logs: cat speculos-port-5001.log);cat speculos-port-5001.log; exit $$ret) +.PHONY: get_integrity_hashes_ftom_logs +get_integrity_hashes_ftom_logs: + sed -n -e 's/^.*Integrity check for: //p' speculos-port-5001.log + #Test on physical device diff --git a/README.md b/README.md index 86fbcf8a..8d07b8ed 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Determines the size of the app. Further interesting options are: ` - `NO_PULL=1`- do not pull containers (this works also for other commands using containers) -- `NO_INTEGRITY_CHECK=1- IF ` - integrity check is always ok, must also have `DEVEL=1`. +- `NO_INTEGRITY_CHECK=1` - integrity check is always ok, must also have `DEVEL=1`. If you run speculos tests you can obtain required integrity hashes from logs using `make get_integrity_hashes_ftom_logs`. You can copy them to signTransactionIntegrity.c . This is the easiest way to update integrity hash list after changes. ## Javascript layer diff --git a/doc/ins_get_public_key.md b/doc/ins_get_public_key.md index 9ce64202..09294749 100644 --- a/doc/ins_get_public_key.md +++ b/doc/ins_get_public_key.md @@ -28,7 +28,7 @@ The public key and derivation path will be shown either way if the derivation pa | (optional) Last derivation index | 4 | Little endian | | (optional) No. of remaining keys | 4 | Little endian | -Ledger will will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). +Ledger will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). **Response** diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index 799d7920..f620e3ef 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -57,17 +57,20 @@ FINISH command returns signature and serialized transaction hash. All other comm ### INIT | Field | Value | +| ---------------- | | P1 | `0x01` | | P2 | unused | **Constant data** + | Field | Length | Comments | -| --------------------------------- | -------| ----------------------------------- | -(none) +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | **Variable data** -| Field | Length | Comments | -| --------------------------------- | -------| ----------------------------------- | + +| Field | Length | Comments | +| --------------------------------- | -------| ---------------------------------- | | Chain ID | 32 | Must be mainnet or testnet chainId | | BIP32 path len | 1 | min 2, max 10 | | First derivation index | 4 | Little endian. Must be 44' | @@ -78,51 +81,98 @@ FINISH command returns signature and serialized transaction hash. All other comm | (optional) No. of remaining keys | 4 | Little endian | **Ledger actions** + - Validate Chain Id - Validate derivation path, ledger accepts only certain derivation paths (see [src/securityPolicy.c](../src/securityPolicy.c)) - Appends Chain Id to the transaction - Display chain to the user +- Initialize integrity validation ### APPEND_CONST_DATA | Field | Value | -| P1 | `0x01` | +| ---------------- | +| P1 | `0x02` | | P2 | unused | **Constant data** + | Field | Length | Comments | | --------------------------------- | -------- | ----------------------------------- | | Data to append to transaction | variable | | **Variable data** + | Field | Length | Comments | -| --------------------------------- | -------| ----------------------------------- | -(none) +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | **Ledger actions** + - Appends data to the transaction +- Continue integrity validation ### SHOW_MESSAGE ----------- -Key Len -Key -Value Len -Value ----------- -=================== -APPEND_DATA ----------- -ValueFormat: NAME, STRING, UINT64 (1b) -ValueValidation: NONE, LENGTH, EQUALS_STORED (1b) -ValueValidationArg 1 (8b) -ValueValidationArg 2 (8b) -Policy + storage (1b) higher 4 bits storage, lower 4 bits policy -Key Len: -Key ----------- -Value -=================== -START_COUNTED_SECTION + +| Field | Value | +| ---------------- | +| P1 | `0x03` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Key Len | 1 | | +| Key | variable | | +| Value Len | 1 | | +| Value | variable | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Ledger actions** + +- Display the message +- Continue integrity validation + +### APPEND_DATA + +| Field | Value | +| ---------------- | +| P1 | `0x04` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ------------------------------------------ | +| Value Format | 1 | NAME, STRING, UINT64 | +| ValueValidation | 1 | NONE, LENGTH, EQUALS_STORED | +| ValueValidationArg 1 | 8 | | +| ValueValidationArg 2 | 8 | | +| Policy and storage | 1 | higher 4 bits storage, lower 4 bits policy | +| Key length | 1 | | +| Key | variable | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Value | variable | | + +**Ledger actions** + +- Parse and validate the value +- Append value to tx +- Display key and value if policy requires it +- Continue integrity validation + +### START_COUNTED_SECTION + ---------- ValueFormat: must be number format (1b) ValueValidation: NONE, LENGTH (1b) @@ -130,47 +180,63 @@ ValueValidationArg 1 (8b) ValueValidationArg 2 (8b) ---------- expected length -==================== -END_COUNTED_SECTION + +### END_COUNTED_SECTION ---------- ---------- -==================== -STORE_VALUE + +### STORE_VALUE P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b ---------- ---------- Value -==================== -Start DH encryprion + +### Start DH encryprion ---------- ---------- Encryption pubkey -==================== -End DH encryprion ----------- ----------- -==================== -FINISH + +### End DH encryprion ---------- ---------- -==================== +### FINISH -**Command** +| Field | Value | +| ---------------- | +| P1 | `0x10` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Data to append to transaction | variable | | + +**Variable data** -|Field|Value| -|-----|-----| -| P1 | `0x10` | -| P2 | unused | -| data | BIP44 path. See [GetExtPubKey call](ins_get_public_key.md) for a format example | +| Field | Length | Comments | +| --------------------------------- | ------ | ------------------------------------------------------------------- | +| BIP32 path len | 1 | min 2, max 10 | +| First derivation index | 4 | Little endian. Must be 44' | +| Second derivation index | 4 | Little endian. Must be 235' | +| (optional) Third derivation index | 4 | Little endian | +| ... | ... | ... | +| (optional) Last derivation index | 4 | Little endian | +| (optional) No. of remaining keys | 4 | Little endian | -*Serialization* +Ledger will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). + +**Ledger actions** -Adds 33 empty bytes. This stands for extension points (1 byte) and context-free data (32 bytes). +- Adds 33 empty bytes to tx. This stands for extension points (1 byte) and context-free data (32 bytes). +- Finish integrity validation +- Request confirmation to sign the transaction +- Return the signature and hash **Response** -|Field|Length| Comments| -|-----|-----|-----| -| Signature |65| Witness signature.| -| Hash |32| Serialized Tx hash.| +| Field | Length | Comments | +| --------- | ------ | ------------------ | +| Signature | 65 | Witness signature | +| Hash | 32 | Serialized Tx hash | diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 9c44d761..b91ba175 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -1,6 +1,6 @@ import { assert } from "console"; import { InvalidDataReason } from "../../errors" -import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path, VarlenAsciiString } from "types/internal" +import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path, VarlenAsciiString, Uint64_str } from "types/internal" import { buf_to_hex, path_to_buf, uint8_to_buf, varuint32_to_buf } from "../../utils/serialize"; import type { SignedTransactionData } from "../../types/public"; import { chunkBy } from "../../utils/ioHelpers" @@ -98,8 +98,7 @@ export function constDataAppendData(format: VALUE_FORMAT, validation: VALUE_VALI return buf.toString("hex") as HexString; } -export function constDataShowMessage(key: string, value: string) { - const buf = Buffer.allocUnsafe(2+key.length+value.length); +export function constDataShowMessage(key: string, value: string) { const buf = Buffer.allocUnsafe(2+key.length+value.length); buf.writeUInt8(key.length, 0); buf.write(key, 1); buf.writeUInt8(value.length, 1+key.length); @@ -284,7 +283,7 @@ export function COMMAND_APPEND_DATA_NAME_SHOW(key: string, name: HexString): Com } } -export function COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: number = 0xFFFFFFFF): Command { +export function COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: bigint = BigInt("0x7FFFFFFFFFFFFFFF")): Command { return { ...defaultCommand, command: COMMAND.APPEND_DATA, @@ -300,7 +299,7 @@ export function COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW(key: string, varData: Buffer } } -export function COMMAND_APPEND_DATA_UINT64_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: number = 0xFFFFFFFF): Command { +export function COMMAND_APPEND_DATA_UINT64_SHOW(key: string, varData: Buffer, minAmount: number = 0, maxAmount: bigint = BigInt("0x7FFFFFFFFFFFFFFF")): Command { return { ...defaultCommand, command: COMMAND.APPEND_DATA, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts index 1ae6913a..f5a8880b 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addaddress.ts @@ -156,7 +156,7 @@ export function template_addaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts index 467bb6d1..f313ca13 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts @@ -38,7 +38,7 @@ export function template_addbundles(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_UINT64_SHOW("Bundle sets", uint64_to_buf(actionData.bundle_sets).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts index 3dff2d07..7d524d71 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -33,7 +33,7 @@ function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), ] } @@ -55,12 +55,12 @@ function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, actionData.nfts[1].contract_address, actionData.nfts[1].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), ] } @@ -82,17 +82,17 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, actionData.nfts[0].contract_address, actionData.nfts[0].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, actionData.nfts[1].contract_address, actionData.nfts[1].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, actionData.nfts[2].contract_address, actionData.nfts[2].token_id), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].url), 0, 128), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 1, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].metadata), 0, 128), ] } @@ -122,7 +122,7 @@ export function template_addnft(chainId: HexString, tx: ParsedTransaction, parse COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 0825a0b6..27d0553f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -29,8 +29,8 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Cr. H.", Buffer.from(actionData.payer_fio_address), 3, 64), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Cr. H.", Buffer.from(actionData.payee_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Handle", Buffer.from(actionData.payer_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Handle", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Public Addr", Buffer.from(actionData.payee_public_address)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 8a901a83..1c12f015 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -31,8 +31,8 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Request ID", Buffer.from(actionData.fio_request_id)), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Cr. H.", Buffer.from(actionData.payer_fio_address), 3, 64), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Cr. H.", Buffer.from(actionData.payee_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Handle", Buffer.from(actionData.payer_fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Handle", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer Public Addr", Buffer.from(actionData.payer_public_address)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts index ab7aabd4..ae6fa445 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts @@ -37,7 +37,7 @@ export function template_regaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Owner Pubkey", Buffer.from(actionData.owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts index 0282dae6..9638652c 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts @@ -156,7 +156,7 @@ export function template_remaddress(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts index 64941fee..e5165e0f 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts @@ -37,7 +37,7 @@ export function template_remalladdr(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts index 821f6ba6..c8c75905 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts @@ -37,7 +37,7 @@ export function template_remallnfts(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts index a40b43d9..007b7f5e 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -104,7 +104,7 @@ export function template_remnft(chainId: HexString, tx: ParsedTransaction, parse COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ...addressesCommands, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts index 22236d8f..370681f7 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_stakefio.ts @@ -35,7 +35,7 @@ export function template_stakefio(chainId: HexString, tx: ParsedTransaction, par COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts index c38dd36a..485add24 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_unstakefio.ts @@ -35,7 +35,7 @@ export function template_unstakefio(chainId: HexString, tx: ParsedTransaction, p COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts index f597896c..bb417a51 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproducer.ts @@ -59,7 +59,7 @@ export function template_voteproducer(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ ...producerCommands, - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts index 22e75498..0b1961a5 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_voteproxy.ts @@ -35,7 +35,7 @@ export function template_voteproxy(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Proxy", Buffer.from(actionData.proxy), 3, 64), - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts index 7d354521..2adcd839 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts @@ -38,7 +38,7 @@ export function template_xferaddress(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Cr. Handle", Buffer.from(actionData.fio_address), 3, 64), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Handle", Buffer.from(actionData.fio_address), 3, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Owner Pubkey", Buffer.from(actionData.new_owner_fio_public_key)), COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 011af4a8..d8c68952 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -6,7 +6,6 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransacti import { InvalidDataReason } from "../errors" import { _Uint64_bigint, - _Uint64_num, ParsedTransferFIOTokensData, ParsedRequestFundsData, ParsedRecordOtherBlockchainTransactionMetadata, @@ -70,7 +69,7 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: RecordOtherBlockchainTransactionMetadata): ParsedRecordOtherBlockchainTransactionMetadata { return { - fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID), payer_fio_address: parseAscii(data.payer_fio_address, InvalidDataReason.INVALID_PAYER_FIO_ADDRESS, 3, 64), payee_fio_address: parseAscii(data.payee_fio_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS, 3, 64), max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), @@ -130,7 +129,7 @@ function parseNFT(a: NFT): ParsedNFT { contract_address: parseAscii(a.contract_address, InvalidDataReason.INVALID_TOKEN_CODE, 1, 128), token_id: parseAscii(a.token_id, InvalidDataReason.INVALID_TOKEN_CODE, 1, 64), url: parseAscii(a.url, InvalidDataReason.INVALID_TOKEN_CODE, 0, 128), - hash: parseAscii(a.hash, InvalidDataReason.INVALID_TOKEN_CODE, 1, 64), + hash: parseAscii(a.hash, InvalidDataReason.INVALID_TOKEN_CODE, 0, 64), metadata: parseAscii(a.metadata, InvalidDataReason.INVALID_TOKEN_CODE, 0, 128), } } @@ -184,7 +183,7 @@ export function parseRemoveAllMappedAddresses(data: RemoveAllMappedAddresses): P export function parseCancelRequestFunds(data: CancelFundsRequest): ParsedCancelFundsRequest { return { - fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID), max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), @@ -193,7 +192,7 @@ export function parseCancelRequestFunds(data: CancelFundsRequest): ParsedCancelF export function parseRejectRequestFunds(data: RejectFundsRequest): ParsedRejectFundsRequest { return { - fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID, 3, 64), + fio_request_id: parseAscii(data.fio_request_id, InvalidDataReason.INVALID_FIO_REQUEST_ID), max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 5d43bee4..0b9174c9 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -45,198 +45,87 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { 0xbb, 0x66, 0xea, 0x0e, 0xff, 0xde, 0x09, 0x43, 0x50, 0xca, 0xba, 0xd4, 0x6f, 0xbf, 0x94, 0xc5, 0x4d, 0x7c, 0x5c, 0xb3, 0x41}, #endif - {0x28, 0xf0, 0x0e, 0x38, 0xc1, 0xb7, 0xe3, 0x24, 0x58, 0x1c, 0xdc, - 0xe7, 0x35, 0xcc, 0x7f, 0xb9, 0xd0, 0x4c, 0x35, 0x9e, 0x0d, 0x9e, - 0x48, 0x7c, 0x5c, 0xdb, 0xad, 0x4b, 0x58, 0x92, 0x24, 0x6e}, - {0x47, 0xb7, 0x1c, 0x69, 0x39, 0xa9, 0x3a, 0x18, 0x4f, 0x3b, 0x72, - 0x19, 0xc6, 0xa0, 0x34, 0xfb, 0x53, 0xf1, 0x86, 0xe5, 0x89, 0xbb, - 0x28, 0x7b, 0x8e, 0x8f, 0xaf, 0x8e, 0xc9, 0xd9, 0x1b, 0x79}, - {0x1f, 0x05, 0xe1, 0xc9, 0x76, 0x1d, 0x08, 0x16, 0x38, 0xb0, 0x7a, - 0x41, 0x1c, 0xa2, 0xe9, 0x13, 0x75, 0x27, 0x11, 0xd2, 0x6f, 0xb3, - 0x80, 0xcc, 0xcd, 0x9e, 0x1b, 0x5c, 0xb3, 0xfb, 0x1b, 0xaf}, - {0x8e, 0xda, 0xb1, 0x23, 0x45, 0x44, 0xd2, 0x64, 0xd9, 0x3f, 0xc1, - 0x92, 0xd3, 0xfa, 0x93, 0x1a, 0xc5, 0xdf, 0x3d, 0x4a, 0x38, 0xad, - 0x75, 0x18, 0xb9, 0x69, 0x13, 0xd0, 0x23, 0x84, 0xe9, 0xc3}, - {0xdb, 0xc9, 0x13, 0xde, 0x67, 0xc7, 0x88, 0x0a, 0x0a, 0x6b, 0x12, - 0x0e, 0xe4, 0xf8, 0xec, 0x9c, 0x89, 0xc9, 0x4f, 0xb0, 0xc0, 0xc8, - 0x3d, 0xa3, 0x97, 0xd8, 0x18, 0x69, 0xcb, 0x63, 0x47, 0xb9}, - {0x41, 0x89, 0xe2, 0x01, 0x6d, 0xeb, 0xed, 0x50, 0x44, 0xf2, 0x21, - 0xa4, 0x07, 0x3f, 0x64, 0x58, 0x0b, 0xe5, 0x02, 0xa2, 0xfe, 0x6a, - 0x7b, 0x90, 0x21, 0xc1, 0x73, 0xae, 0x95, 0xd9, 0x75, 0xc6}, - {0x51, 0xc1, 0x6f, 0x18, 0x9e, 0xed, 0xab, 0xc8, 0x96, 0x9c, 0x2c, - 0x96, 0xcb, 0x9c, 0xb8, 0x40, 0x27, 0xc9, 0x1b, 0x69, 0xdc, 0x3d, - 0xae, 0x30, 0xd0, 0xeb, 0xc4, 0x21, 0xfc, 0xc2, 0x78, 0xbe}, - {0x3c, 0xa4, 0x40, 0xfa, 0xdd, 0xbe, 0xe8, 0x89, 0x09, 0x76, 0x33, - 0x4d, 0x8e, 0xc9, 0x51, 0xd0, 0x3b, 0x74, 0x05, 0x7c, 0xb0, 0xb9, - 0x30, 0x9a, 0x10, 0xde, 0x98, 0x58, 0x84, 0xe0, 0xae, 0x9e}, - {0xa3, 0x78, 0x17, 0x2a, 0x86, 0x10, 0xde, 0xf1, 0xa6, 0xc7, 0x90, - 0x76, 0xa2, 0x09, 0x18, 0x51, 0xb3, 0x25, 0xd0, 0x5c, 0x15, 0xcc, - 0x82, 0x4f, 0x2a, 0xb6, 0xf0, 0xff, 0x36, 0xf9, 0x6d, 0x6f}, - {0x82, 0xe7, 0xe1, 0x1c, 0x93, 0xa0, 0x91, 0xe6, 0xff, 0x9d, 0xf9, - 0x57, 0x6f, 0xfc, 0x1d, 0xd2, 0x00, 0xff, 0xf9, 0x45, 0x96, 0x63, - 0x54, 0x34, 0x31, 0xce, 0x5d, 0xbd, 0x21, 0xf9, 0x87, 0x35}, - {0x86, 0xda, 0x31, 0xd0, 0xb3, 0x91, 0xf1, 0xc1, 0x65, 0xe9, 0xe9, - 0x85, 0xc9, 0x37, 0x14, 0x03, 0x2e, 0x82, 0xc4, 0xf8, 0x31, 0x95, - 0x26, 0xd5, 0x57, 0xa7, 0x7b, 0x4a, 0x3f, 0x7a, 0x43, 0xae}, - {0xdd, 0xed, 0x12, 0x96, 0xbb, 0x36, 0xaa, 0xf5, 0x1a, 0x14, 0xf1, 0x44, 0x5a, 0x2b, 0x2f, 0x36, - 0xde, 0xf1, 0x6e, 0x8a, 0x14, 0x06, 0x22, 0x56, 0xa3, 0x3d, 0x3d, 0xed, 0xe7, 0x99, 0x7d, 0x3}, - {0x02, 0xc9, 0xeb, 0xc6, 0x9f, 0xb3, 0x18, 0x63, 0xfb, 0x1d, 0x4e, - 0x15, 0xf8, 0xb1, 0xf6, 0xfc, 0x2b, 0xcb, 0x30, 0x06, 0xac, 0x21, - 0x16, 0x02, 0x25, 0xfc, 0xd0, 0x4e, 0xc5, 0xbc, 0xa4, 0x8f}, - {0xba, 0xfd, 0x46, 0xa8, 0x94, 0xf9, 0xe4, 0xff, 0x25, 0xbe, 0xa1, - 0xec, 0x3e, 0xee, 0x2d, 0x0b, 0xe9, 0x0b, 0x34, 0x3d, 0x65, 0x38, - 0x40, 0x74, 0xdd, 0x2a, 0x13, 0x27, 0x71, 0xe2, 0xba, 0xcb}, - {0x2c, 0xdf, 0xc4, 0x9c, 0x68, 0xc0, 0xed, 0x31, 0x88, 0x7a, 0xc1, - 0x33, 0x71, 0xbd, 0x02, 0x5a, 0x82, 0x7f, 0x5c, 0x8a, 0xe5, 0x8a, - 0xdd, 0x18, 0xd9, 0xf6, 0x9a, 0xbf, 0xfd, 0x19, 0xfb, 0xb7}, - {0x61, 0xb2, 0x52, 0x0e, 0x47, 0xd1, 0x32, 0x67, 0xad, 0x2e, 0x75, - 0xa6, 0xd3, 0x7c, 0x0f, 0x2c, 0xef, 0x8b, 0x9a, 0xa0, 0x91, 0xe4, - 0xe4, 0x94, 0xf3, 0xb5, 0x96, 0x7e, 0x0e, 0x0e, 0xb6, 0xd9}, - {0x47, 0x11, 0xd5, 0x38, 0xfa, 0x3f, 0x46, 0x12, 0x35, 0xb8, 0x80, - 0x37, 0x13, 0x74, 0xee, 0x80, 0xd8, 0xba, 0xa9, 0xa7, 0x96, 0xe8, - 0xb0, 0x7c, 0x7b, 0xf3, 0xdb, 0xb9, 0x73, 0x75, 0xf2, 0x6b}, - {0xc7, 0x3d, 0x4c, 0x17, 0x9e, 0x7f, 0x76, 0xa7, 0x7d, 0xc3, 0x51, - 0x98, 0xd3, 0x3b, 0x2f, 0x3b, 0x16, 0xa8, 0x02, 0x92, 0x2f, 0xad, - 0x01, 0x94, 0xce, 0x06, 0xdc, 0x72, 0x1a, 0x29, 0xdf, 0xd2}, - {0x1c, 0x8b, 0x17, 0x2e, 0x85, 0xc0, 0x05, 0x50, 0x86, 0xae, 0x64, - 0x95, 0xf0, 0x9b, 0xef, 0x22, 0x8c, 0x8f, 0x41, 0x9e, 0xe7, 0x3d, - 0x6e, 0xc1, 0x61, 0x2f, 0xe4, 0xc9, 0x64, 0xce, 0x43, 0xb6}, - {0xeb, 0x8f, 0x59, 0xef, 0x8a, 0xf1, 0x54, 0xa9, 0xff, 0x5b, 0xc9, 0x86, 0x3e, 0xa3, 0x6c, 0xea, - 0xb4, 0xb9, 0x70, 0x60, 0xab, 0x86, 0xdb, 0xc1, 0xb1, 0x3d, 0xbd, 0x84, 0xb0, 0x4d, 0x50, 0xf}, - {0xdd, 0x12, 0x60, 0x42, 0xa6, 0x07, 0x7f, 0xcb, 0x0c, 0x64, 0xb6, - 0x0d, 0x6d, 0x69, 0x2f, 0x61, 0x52, 0x40, 0x21, 0x73, 0xb2, 0x6c, - 0x77, 0xc2, 0xb4, 0xdf, 0x5f, 0x26, 0x72, 0xcf, 0x84, 0x5a}, - {0xc4, 0x4a, 0xd7, 0x2d, 0xd7, 0xdd, 0x4e, 0x3f, 0xa8, 0xb4, 0x18, - 0xd9, 0x22, 0x67, 0x21, 0x28, 0x25, 0x4c, 0xfc, 0xeb, 0xf4, 0x5f, - 0x56, 0xd8, 0xc5, 0xdc, 0x46, 0x5c, 0x28, 0xeb, 0x6a, 0x43}, - {0x68, 0xd7, 0x51, 0xa6, 0x3e, 0x25, 0xa2, 0xee, 0xde, 0xce, 0x08, - 0x81, 0xaf, 0x56, 0x59, 0x19, 0x09, 0x57, 0xff, 0xbb, 0x7e, 0x5e, - 0xf2, 0xef, 0x0f, 0x83, 0x81, 0xc4, 0xbc, 0x4c, 0x90, 0x28}, - {0x29, 0x19, 0x30, 0x31, 0xa4, 0xbf, 0xe6, 0xf4, 0x21, 0x40, 0x15, - 0x9f, 0x09, 0x38, 0xca, 0x1e, 0x35, 0x78, 0x60, 0x3f, 0xf2, 0x63, - 0xe2, 0x97, 0x7d, 0x6c, 0x05, 0xc8, 0x5e, 0x5b, 0x6a, 0xa6}, - {0x5d, 0x44, 0x03, 0x77, 0x9c, 0x8f, 0xa8, 0x5e, 0xfa, 0xd5, 0xbb, - 0xc8, 0x3f, 0xec, 0x9a, 0x8f, 0x89, 0x6c, 0x42, 0x71, 0x6f, 0x97, - 0xe7, 0x49, 0x29, 0xbd, 0xcd, 0x96, 0x32, 0x87, 0x62, 0xad}, - {0xdb, 0xf4, 0x39, 0x2a, 0x30, 0x20, 0x31, 0x7b, 0x50, 0x8d, 0x3e, 0xb3, 0xe6, 0xef, 0x66, 0xf0, - 0x83, 0x49, 0x21, 0xd5, 0xa9, 0x6d, 0x4a, 0x22, 0x03, 0xec, 0x80, 0x80, 0xe4, 0xe9, 0x67, 0x9}, - {0x3c, 0x54, 0x8d, 0x69, 0xf7, 0x15, 0x39, 0xb8, 0xb4, 0x13, 0x60, 0xf2, 0x67, 0x35, 0x5e, 0x4c, - 0xe6, 0x36, 0x6c, 0x66, 0x83, 0x40, 0x6a, 0x2c, 0xb3, 0xa7, 0x0b, 0x63, 0x1f, 0xaa, 0xda, 0x3}, - {0xd5, 0x29, 0x22, 0xf4, 0x67, 0xa4, 0x19, 0xf6, 0xa5, 0x6b, 0x34, - 0x02, 0xcb, 0x5f, 0x07, 0x61, 0xc2, 0x01, 0xb4, 0xf2, 0xd5, 0x7e, - 0x6d, 0xf6, 0x1e, 0x94, 0x83, 0xa6, 0x00, 0x36, 0x6b, 0x43}, - {0x0a, 0xa0, 0x3c, 0x21, 0x98, 0xf7, 0x09, 0xd1, 0xae, 0xf7, 0x04, - 0x60, 0x4e, 0x13, 0xf7, 0x22, 0x25, 0x69, 0xb9, 0x88, 0x5c, 0x82, - 0x83, 0xc2, 0x06, 0xa3, 0xfc, 0x9e, 0x0a, 0x79, 0x91, 0xe8}, - {0x64, 0x30, 0x1f, 0xd9, 0x07, 0x6b, 0x1f, 0x4c, 0xb6, 0xa7, 0x37, - 0x09, 0x95, 0xaf, 0xec, 0xee, 0x6d, 0x5f, 0x17, 0x4b, 0xf4, 0x02, - 0x2f, 0x7b, 0xb3, 0x9c, 0x1a, 0x46, 0x31, 0xf4, 0xf9, 0xfc}, - {0x1c, 0xe4, 0xc4, 0x79, 0x55, 0x89, 0x4f, 0xcd, 0x1a, 0x12, 0x8d, - 0xb2, 0x30, 0x59, 0x95, 0x5a, 0x65, 0x5b, 0x80, 0x92, 0xc4, 0xea, - 0x3f, 0x3d, 0x97, 0x6c, 0x43, 0x47, 0xa7, 0x94, 0x66, 0x94}, - {0x16, 0x55, 0x88, 0x61, 0x72, 0x11, 0x41, 0xc3, 0x66, 0xe8, 0x9d, - 0x6d, 0x17, 0xd7, 0xa5, 0x76, 0x19, 0xcf, 0x36, 0xb5, 0x30, 0xca, - 0xe8, 0xac, 0xed, 0xe8, 0xd6, 0xbe, 0xd6, 0x8b, 0xe6, 0x5d}, - {0x9b, 0xd8, 0x30, 0x73, 0xe5, 0xdb, 0xb5, 0x1a, 0xd1, 0x30, 0x37, - 0xd9, 0xc7, 0x30, 0x53, 0xf7, 0x1c, 0x5d, 0x77, 0xf7, 0x28, 0xd7, - 0x6a, 0xf9, 0x16, 0x04, 0xd8, 0x5c, 0x37, 0x6d, 0x69, 0xd4}, - {0xfd, 0x82, 0xbb, 0x14, 0xd4, 0x6e, 0xbb, 0x8f, 0x9c, 0x52, 0x43, 0x77, 0x38, 0xaa, 0x24, 0x77, - 0x51, 0x8a, 0xb9, 0x3e, 0x54, 0x5f, 0x19, 0x27, 0xd3, 0x37, 0x69, 0x00, 0xad, 0xe1, 0x87, 0x1}, - {0x72, 0x8e, 0xfb, 0x79, 0xb2, 0x23, 0xef, 0x30, 0x87, 0x2c, 0x52, - 0xa3, 0x89, 0x7f, 0x31, 0x45, 0x19, 0x63, 0x39, 0x7b, 0x79, 0x66, - 0x41, 0xad, 0xff, 0x47, 0x34, 0xb0, 0x3b, 0x58, 0x89, 0xf1}, - {0x0d, 0xfd, 0x6f, 0xac, 0x3f, 0x0b, 0x9a, 0x09, 0xac, 0x43, 0x90, - 0xd0, 0x6e, 0x52, 0x98, 0x00, 0x98, 0xdf, 0x05, 0x4a, 0x1b, 0x7c, - 0xca, 0x2e, 0x88, 0x69, 0xf7, 0x2a, 0x5e, 0x19, 0x80, 0x86}, - {0x44, 0xdf, 0x93, 0x84, 0x9b, 0xae, 0x10, 0xa7, 0xe0, 0xdc, 0xf8, - 0x40, 0x43, 0x93, 0xa5, 0xb9, 0x98, 0xbc, 0x63, 0x20, 0xa0, 0x8f, - 0x6b, 0x9e, 0x4c, 0xa2, 0x33, 0xb8, 0x39, 0xc2, 0x24, 0x88}, - {0xd4, 0xf1, 0xf7, 0x84, 0x80, 0xfb, 0x41, 0x84, 0x4a, 0x29, 0xfe, - 0xe0, 0xab, 0x15, 0xcc, 0x57, 0x32, 0x89, 0x91, 0xed, 0x77, 0x01, - 0xc6, 0xcb, 0x76, 0x9e, 0x24, 0x38, 0xea, 0x8c, 0x39, 0x34}, - {0xf9, 0x81, 0xd3, 0x36, 0xba, 0x09, 0x91, 0x65, 0xbb, 0x18, 0x99, - 0xef, 0x85, 0xe8, 0x64, 0xa1, 0x71, 0x2a, 0x98, 0x61, 0xf8, 0x11, - 0x59, 0x87, 0x26, 0xb6, 0x15, 0x75, 0xbb, 0x3b, 0xcb, 0xad}, - {0xec, 0x69, 0xaf, 0x1b, 0x7b, 0x9a, 0x89, 0x97, 0x7c, 0x6a, 0x5e, - 0xbb, 0x4c, 0xe2, 0xfd, 0xf7, 0xf7, 0x10, 0x52, 0xad, 0xe8, 0x99, - 0xa9, 0xa7, 0xc7, 0x80, 0x8e, 0x38, 0x95, 0xcf, 0x13, 0x4c}, - {0x9b, 0xff, 0xc5, 0x10, 0xbc, 0xe7, 0xdc, 0xbe, 0xfb, 0x6d, 0xd2, - 0xbc, 0x1a, 0x47, 0xfb, 0xbe, 0x86, 0x46, 0x7c, 0x75, 0x15, 0x71, - 0xbc, 0xe8, 0xe0, 0x5a, 0xcd, 0xcd, 0x7b, 0x3a, 0x8c, 0x60}, - {0x30, 0x77, 0x85, 0x37, 0xdb, 0xba, 0xa9, 0x7c, 0xe5, 0x22, 0xbf, - 0x3a, 0x46, 0x53, 0x9f, 0x98, 0x02, 0x00, 0x96, 0x1d, 0x5a, 0x29, - 0x3f, 0x75, 0xfd, 0x3c, 0x80, 0x23, 0xbf, 0x52, 0x9e, 0xeb}, - {0x56, 0xc7, 0x2c, 0x93, 0x98, 0x9e, 0x43, 0x66, 0xae, 0xfb, 0x0c, - 0xfc, 0x79, 0x2b, 0x56, 0xd2, 0x70, 0xff, 0x4a, 0x49, 0xa7, 0x04, - 0x4b, 0x4b, 0xa0, 0x78, 0x1a, 0x83, 0x49, 0xab, 0x0b, 0x35}, - {0x9e, 0x01, 0x7f, 0x88, 0x2c, 0xd5, 0x46, 0x57, 0x97, 0xcd, 0x10, - 0x11, 0x9c, 0x67, 0x0f, 0x93, 0x8a, 0x55, 0xea, 0xb1, 0xe6, 0xdd, - 0x50, 0x6c, 0x6b, 0xfb, 0x8c, 0x0c, 0x2d, 0x8f, 0x72, 0xe9}, - {0xd9, 0x3c, 0x1b, 0x17, 0xc7, 0x8a, 0x88, 0x95, 0xa7, 0xf5, 0xa1, - 0xe6, 0x7b, 0x0d, 0xe4, 0x12, 0x19, 0xaf, 0x53, 0x8e, 0x1b, 0xad, - 0x21, 0xeb, 0xa6, 0x19, 0xea, 0xa3, 0xe0, 0x7a, 0x03, 0xa5}, - {0x22, 0xc9, 0xce, 0x7e, 0xe2, 0xb8, 0x89, 0x3e, 0xc2, 0x0f, 0x7c, - 0x89, 0xd4, 0xc1, 0x03, 0xb8, 0xe0, 0x3f, 0x78, 0x6f, 0xa9, 0xd9, - 0x6a, 0x10, 0xe2, 0xd1, 0x21, 0x97, 0xa0, 0x52, 0xeb, 0xd7}, - {0x1a, 0x2e, 0x43, 0xab, 0xca, 0x84, 0x69, 0x3c, 0x32, 0x36, 0x00, - 0x3a, 0xd1, 0x97, 0x5b, 0xad, 0x42, 0x74, 0x00, 0x66, 0x17, 0xe3, - 0x69, 0xdd, 0xf9, 0x50, 0xdc, 0xe4, 0xd6, 0xcd, 0x51, 0xd8}, - {0x21, 0x77, 0xa8, 0x5a, 0xb9, 0x7a, 0xdd, 0x1e, 0x94, 0x88, 0x25, - 0x6c, 0x5f, 0x10, 0x96, 0xa9, 0x8d, 0x03, 0x4d, 0x9d, 0x4d, 0xff, - 0x2a, 0x31, 0x43, 0xd7, 0xb1, 0x63, 0xb8, 0x17, 0x9c, 0x73}, - {0xa0, 0x54, 0x6a, 0xe2, 0x6b, 0x6c, 0x06, 0x17, 0xe9, 0xf4, 0x5f, - 0x13, 0x7c, 0x10, 0x46, 0xc4, 0xe8, 0x06, 0x71, 0x25, 0x1a, 0x77, - 0x35, 0x5c, 0xd1, 0x03, 0xb9, 0xa9, 0xb5, 0xb7, 0x2d, 0x10}, - {0x17, 0x2f, 0x95, 0x9a, 0x77, 0x94, 0x12, 0x05, 0x6d, 0xea, 0xe1, - 0x10, 0x44, 0x54, 0x33, 0x5b, 0xc5, 0xad, 0x9d, 0x6f, 0xf0, 0x79, - 0x80, 0x62, 0x3d, 0xa5, 0x32, 0xa1, 0x76, 0xa8, 0x65, 0x51}, - {0x4c, 0xbe, 0x84, 0xf2, 0xde, 0x0d, 0xd9, 0x96, 0xb3, 0xae, 0x85, - 0x42, 0xe4, 0x16, 0x4f, 0xe3, 0x9b, 0x7d, 0x20, 0xec, 0x2c, 0x90, - 0xba, 0x5f, 0x1d, 0xe9, 0x35, 0xb7, 0xa1, 0x36, 0x9b, 0x6b}, - {0xbf, 0x2d, 0xd8, 0x6a, 0xae, 0x29, 0x10, 0x9a, 0xf6, 0x5d, 0xe5, - 0xfd, 0x1d, 0x25, 0x26, 0x15, 0x07, 0xf7, 0xa1, 0x86, 0xc7, 0x0a, - 0x56, 0x45, 0x16, 0xa0, 0xeb, 0x52, 0x82, 0x43, 0xdf, 0x1c}, - {0x3b, 0x4d, 0x04, 0xf6, 0x95, 0xe4, 0xaa, 0xe9, 0x56, 0xe0, 0x55, - 0xe5, 0x94, 0x8a, 0x5a, 0xbf, 0x29, 0x01, 0x25, 0x25, 0x04, 0xeb, - 0x4b, 0xae, 0x0e, 0xcd, 0x24, 0x00, 0x2a, 0x7e, 0x91, 0x4c}, - {0xe8, 0xf3, 0xae, 0x5b, 0x81, 0x78, 0x6e, 0x44, 0x69, 0x86, 0x8f, - 0x15, 0xc2, 0x4f, 0xed, 0xf7, 0x92, 0x4f, 0x7b, 0xde, 0x9d, 0x88, - 0x2c, 0x7d, 0xa5, 0xc6, 0xa5, 0xed, 0x1e, 0xec, 0x1d, 0xb7}, - {0xa3, 0x17, 0x31, 0xf9, 0x22, 0x04, 0xa1, 0x4b, 0xca, 0xed, 0x66, - 0x25, 0x92, 0xdf, 0x83, 0x06, 0xc8, 0xc7, 0x4a, 0x5b, 0x83, 0x19, - 0x71, 0xf1, 0x4f, 0x70, 0x75, 0x04, 0x67, 0xeb, 0x61, 0xb9}, - {0x83, 0x3d, 0x23, 0x7f, 0xd6, 0xb6, 0xe7, 0xa9, 0x13, 0x80, 0xc5, - 0x76, 0xe7, 0x3a, 0x0e, 0x53, 0xdf, 0xec, 0xe7, 0x85, 0xcb, 0xc6, - 0x50, 0xb6, 0xfd, 0x30, 0xa4, 0x77, 0x02, 0xc5, 0x68, 0x25}, - {0x96, 0x05, 0x58, 0x98, 0xd0, 0x92, 0x95, 0xd9, 0x35, 0x5c, 0x3f, - 0xc3, 0xf5, 0xd7, 0x37, 0xb1, 0x94, 0xf2, 0xa0, 0x48, 0x2c, 0x26, - 0xd3, 0xc0, 0x66, 0x68, 0x32, 0x41, 0x3d, 0x86, 0xb2, 0x4e}, - {0xc9, 0x30, 0x53, 0xc9, 0x69, 0xf4, 0x70, 0xd6, 0xdf, 0xa7, 0x23, 0xa8, 0x0b, 0xd7, 0xc5, 0x3c, - 0x4f, 0x6d, 0xf9, 0x6d, 0xb6, 0xc4, 0xb1, 0x52, 0x77, 0xc3, 0x29, 0x75, 0xfd, 0x93, 0x9a, 0xa}, - {0xbf, 0xe6, 0x40, 0xcb, 0x9f, 0x22, 0xda, 0x13, 0x56, 0xc8, 0x0b, - 0x46, 0xc1, 0xcc, 0x86, 0xdd, 0xe7, 0xc9, 0x30, 0x8a, 0x3d, 0x69, - 0xf5, 0x08, 0x21, 0xf9, 0x48, 0xac, 0x57, 0x8a, 0xb9, 0x84}, - {0xf8, 0x38, 0xf3, 0xbb, 0xa1, 0x39, 0xa5, 0xf7, 0xad, 0x23, 0x75, - 0x54, 0x3b, 0xb4, 0xbc, 0x6e, 0x1b, 0xa2, 0x53, 0xfc, 0x64, 0x26, - 0xf4, 0x3c, 0x5b, 0x91, 0x97, 0x72, 0x97, 0x31, 0x5b, 0x29}, - {0x6f, 0x08, 0xa1, 0x78, 0x86, 0x69, 0xa2, 0x87, 0xee, 0x0f, 0xc4, - 0x0f, 0xae, 0x6d, 0xa9, 0x91, 0x7e, 0x21, 0xea, 0xe6, 0x28, 0xf8, - 0x98, 0x36, 0x51, 0x1f, 0x08, 0xcf, 0x0a, 0xbb, 0xc7, 0x1d}, - {0x80, 0xc9, 0xa0, 0x96, 0x65, 0x8b, 0x2f, 0xce, 0x71, 0x40, 0xaa, - 0x66, 0x30, 0x57, 0x30, 0xb7, 0xb5, 0x60, 0x4d, 0xf6, 0x1f, 0xac, - 0xe6, 0xfb, 0x1d, 0x1f, 0x34, 0xd4, 0x82, 0x53, 0x63, 0xb1}, - {0x4e, 0x23, 0x62, 0x7b, 0x5a, 0x7f, 0x7c, 0x0e, 0x41, 0x6f, 0x23, - 0x0d, 0xba, 0x74, 0xe8, 0xb9, 0xe8, 0x32, 0x9d, 0x47, 0xae, 0x4c, - 0x8e, 0xd4, 0x53, 0x6c, 0x4a, 0xf7, 0x4d, 0x7e, 0x8a, 0xab}, - {0xe3, 0xfb, 0xc0, 0x07, 0xbd, 0x7f, 0x27, 0x2e, 0xff, 0x0c, 0xd6, - 0x74, 0xb8, 0xf2, 0x1c, 0x27, 0xf2, 0x9e, 0x67, 0x6c, 0x2f, 0x2b, - 0x23, 0x64, 0x7e, 0xa9, 0x0f, 0x9c, 0x85, 0x82, 0xea, 0x3c}, - {0x3e, 0x39, 0xe5, 0xae, 0x26, 0x28, 0x07, 0x0f, 0x5a, 0x28, 0x77, - 0x5a, 0x64, 0xdd, 0x15, 0xba, 0x52, 0x11, 0x7f, 0xfc, 0xfb, 0x3b, - 0xf7, 0x9d, 0xf6, 0x7f, 0x79, 0x9a, 0xb1, 0xb3, 0xe7, 0x44}, - {0xd3, 0xce, 0x25, 0x9e, 0x0b, 0x23, 0x30, 0xc2, 0xce, 0x41, 0xd1, - 0xa5, 0x49, 0xfa, 0xc2, 0xb7, 0x10, 0xa5, 0xa5, 0xa8, 0xbd, 0xb3, - 0x98, 0x19, 0x5d, 0x44, 0x65, 0x71, 0x8f, 0x50, 0xb4, 0xd3}, +{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, +{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, +{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, +{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, +{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, +{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, +{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, +{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, +{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, +{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, +{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, +{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, +{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, +{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, +{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, +{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, +{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, +{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, +{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, +{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, +{0xab, 0x0f, 0x5c, 0xce, 0x2f, 0xaf, 0x6b, 0x90, 0x93, 0xf3, 0xb5, 0xbe, 0xa9, 0x6a, 0x74, 0xa7, 0x70, 0xd2, 0x91, 0x68, 0xf7, 0x1f, 0xe5, 0x3d, 0x19, 0x74, 0xf7, 0xa5, 0x10, 0x39, 0x63, 0xc1}, +{0x30, 0x73, 0x00, 0xed, 0x8d, 0x10, 0x65, 0x24, 0x7f, 0xa3, 0xdd, 0x2a, 0x1b, 0x7c, 0x90, 0xa8, 0xb2, 0x6f, 0xaf, 0xad, 0xb6, 0xf7, 0xa7, 0x5f, 0x91, 0x92, 0x97, 0xe5, 0xf1, 0xb1, 0x21, 0x96}, +{0x13, 0x02, 0x4a, 0xa0, 0xa0, 0xea, 0x70, 0xc8, 0x11, 0x52, 0x2d, 0x67, 0x17, 0x41, 0xcd, 0x8c, 0x4e, 0xf6, 0x80, 0x31, 0x7c, 0x4d, 0x5c, 0xa0, 0xf2, 0xfa, 0x3c, 0x4b, 0xb1, 0x85, 0xc5, 0xcd}, +{0x8e, 0x26, 0x84, 0x94, 0x40, 0xd8, 0xcd, 0xf9, 0xd0, 0x1a, 0x08, 0x17, 0xaa, 0x0b, 0x57, 0x33, 0xf6, 0x48, 0xf0, 0x1f, 0xea, 0xfd, 0x51, 0xb4, 0xac, 0x3d, 0x18, 0xad, 0x87, 0x3f, 0xb9, 0xa4}, +{0xf6, 0x9c, 0xe5, 0x0f, 0x3c, 0xdf, 0xa4, 0x1e, 0x00, 0x7e, 0xf3, 0xb0, 0x29, 0xc4, 0x3b, 0xc7, 0x92, 0x3e, 0xb3, 0x78, 0x71, 0x7d, 0xed, 0x96, 0x1c, 0x41, 0x5a, 0x4c, 0x82, 0x50, 0xc9, 0xa1}, +{0xe7, 0xa8, 0xd4, 0xed, 0x82, 0xd2, 0x60, 0x32, 0x54, 0x5a, 0xc2, 0xc6, 0x73, 0x73, 0xfb, 0xf5, 0xfa, 0xa6, 0x8f, 0x2f, 0xb4, 0xb8, 0x91, 0xe3, 0xe8, 0x11, 0x6a, 0xca, 0x08, 0xbf, 0x59, 0xe1}, +{0x26, 0xe5, 0x21, 0x0f, 0x8f, 0xc8, 0x77, 0x8e, 0xb7, 0x24, 0x97, 0x32, 0x20, 0xa2, 0xbc, 0x85, 0xbe, 0x11, 0x10, 0xb8, 0x39, 0x8d, 0xd2, 0x7e, 0x9d, 0x3a, 0xbc, 0xaf, 0x58, 0x1a, 0x48, 0x79}, +{0xe0, 0xa6, 0x06, 0xd1, 0x34, 0xb3, 0xbf, 0xfd, 0x72, 0x6f, 0x69, 0xf7, 0xd1, 0xa5, 0x68, 0x78, 0xd8, 0xad, 0x15, 0x66, 0xd4, 0x1e, 0xdc, 0x30, 0x1d, 0xbe, 0xea, 0x09, 0x82, 0xf1, 0x3d, 0xb}, +{0xd6, 0xcc, 0x05, 0x60, 0xfd, 0xa9, 0x7d, 0x55, 0xb2, 0x49, 0x4e, 0x2a, 0x59, 0x13, 0xe3, 0xe4, 0x3c, 0xf7, 0x3e, 0x5e, 0x28, 0x3d, 0x15, 0xe4, 0x68, 0x2d, 0x23, 0x3e, 0x7c, 0x9b, 0x0b, 0x63}, +{0xb5, 0xf3, 0xed, 0x5f, 0x34, 0x48, 0x5d, 0xa3, 0xa4, 0x93, 0x10, 0xf0, 0x09, 0x8d, 0xfb, 0x71, 0x34, 0x5e, 0x0f, 0x6a, 0xc8, 0x42, 0x16, 0xc0, 0xe1, 0xb9, 0xed, 0x11, 0x09, 0x7c, 0x22, 0x30}, +{0x2b, 0xf5, 0xc0, 0xd8, 0x8b, 0x3a, 0xab, 0x2c, 0x57, 0x14, 0xb3, 0x3a, 0x40, 0x74, 0x44, 0x80, 0xcc, 0xc8, 0x1c, 0x14, 0xfb, 0xee, 0xe4, 0xca, 0xa2, 0x51, 0x08, 0xe7, 0x48, 0xbb, 0x2e, 0xab}, +{0x47, 0xa9, 0x2f, 0x39, 0xb0, 0x66, 0x18, 0xfe, 0x2c, 0xe2, 0xba, 0x83, 0xa0, 0x41, 0x96, 0x85, 0x50, 0xe6, 0x38, 0xd7, 0x31, 0x90, 0x68, 0xe6, 0x23, 0xbd, 0x21, 0x09, 0x5b, 0xa7, 0x75, 0x89}, +{0x41, 0xe4, 0x03, 0x29, 0x48, 0x33, 0xe0, 0x11, 0x71, 0x8a, 0x51, 0xa9, 0xf1, 0x31, 0x69, 0x2c, 0x28, 0xeb, 0xd2, 0x10, 0xc2, 0x1a, 0xfc, 0x81, 0x28, 0x39, 0x75, 0xf4, 0x97, 0x90, 0xc7, 0xaf}, +{0x7f, 0xae, 0x99, 0x35, 0x0c, 0x5a, 0x76, 0xd2, 0xb4, 0x9d, 0xf4, 0x29, 0xfe, 0x39, 0xd0, 0xda, 0x1f, 0xac, 0x24, 0x99, 0xd5, 0xf5, 0x8c, 0x6c, 0x0f, 0xb6, 0x93, 0xff, 0x66, 0xa5, 0xf6, 0x65}, +{0xc1, 0x1e, 0x31, 0x06, 0x0b, 0x9d, 0x57, 0xec, 0x36, 0x10, 0x80, 0x6d, 0x36, 0x89, 0x84, 0x45, 0xd5, 0x38, 0xc0, 0x4d, 0x7b, 0x98, 0xf6, 0x63, 0xce, 0x5a, 0xfd, 0xba, 0xab, 0x94, 0xb7, 0xfb}, +{0x7f, 0xf3, 0x7e, 0xc1, 0xef, 0x86, 0x1f, 0xf7, 0x05, 0x61, 0x95, 0x87, 0x34, 0xdf, 0xde, 0x31, 0x53, 0x0d, 0x80, 0x8c, 0x63, 0x2e, 0xe6, 0x2f, 0xdf, 0xee, 0x54, 0xa7, 0xb5, 0xb5, 0x45, 0x86}, +{0xf7, 0xf1, 0xe3, 0xcc, 0xda, 0xbc, 0x21, 0x9c, 0xb7, 0xef, 0xbe, 0x45, 0x6c, 0x87, 0xf3, 0x59, 0x76, 0xc9, 0x9c, 0x0d, 0xe9, 0xac, 0x10, 0x93, 0x46, 0xda, 0x1f, 0x91, 0xd3, 0x78, 0x1b, 0x53}, +{0x04, 0x7d, 0x85, 0x04, 0xb6, 0xb9, 0x21, 0x51, 0x19, 0x7d, 0x20, 0xc9, 0xe7, 0x9f, 0xc1, 0x81, 0x3e, 0xe4, 0xa0, 0xd5, 0xa2, 0x1d, 0x3c, 0x36, 0x66, 0x89, 0x01, 0x1a, 0x71, 0xe9, 0x2a, 0x8a}, +{0x47, 0x75, 0xd1, 0x26, 0xa4, 0x4b, 0x48, 0x95, 0x2d, 0x84, 0x5e, 0x43, 0x06, 0x7e, 0x6b, 0x13, 0x42, 0x6f, 0xdd, 0x77, 0x55, 0x25, 0x9d, 0x6a, 0xfc, 0x7f, 0x83, 0xc0, 0x82, 0xc2, 0xeb, 0x4c}, +{0x52, 0x44, 0x21, 0x4f, 0x79, 0xf9, 0xba, 0x27, 0x9e, 0x34, 0xd4, 0xfb, 0x35, 0x13, 0x7f, 0xc4, 0x06, 0xe6, 0xc7, 0x7d, 0x99, 0x51, 0x7e, 0xd4, 0xd2, 0x7d, 0x8e, 0x97, 0xf8, 0x1c, 0x34, 0x54}, +{0xf8, 0x73, 0x29, 0xbd, 0xc7, 0x2d, 0xaf, 0x8d, 0xdb, 0xac, 0xac, 0x28, 0xea, 0x24, 0x7a, 0xe1, 0x1a, 0x82, 0x97, 0x47, 0x4f, 0x9b, 0x59, 0x86, 0xcb, 0x27, 0xe5, 0xf9, 0x99, 0x1d, 0xf1, 0x43}, +{0x2d, 0x26, 0x7c, 0x41, 0xf6, 0x32, 0x27, 0x91, 0x10, 0x76, 0x96, 0x39, 0x57, 0x0f, 0xe3, 0xf5, 0x56, 0x9b, 0x81, 0xa3, 0x02, 0xc9, 0x1d, 0x46, 0x95, 0x19, 0x0b, 0x26, 0x3b, 0x60, 0xf0, 0xe4}, +{0x2f, 0x1e, 0x4e, 0xa2, 0x81, 0x48, 0x5e, 0x01, 0x55, 0x1b, 0x4f, 0x20, 0x56, 0x7b, 0x97, 0x27, 0xba, 0xae, 0xad, 0x60, 0x5f, 0xb6, 0x83, 0xd7, 0x37, 0x4a, 0x0d, 0x06, 0xeb, 0xa0, 0xf8, 0xbb}, +{0xe4, 0x85, 0x22, 0x61, 0x22, 0x3b, 0xa3, 0x05, 0x42, 0xa0, 0xb6, 0x0d, 0x73, 0xbf, 0xf9, 0xcd, 0x82, 0x6a, 0x9c, 0x9b, 0x74, 0x70, 0x47, 0x5c, 0x61, 0x80, 0x31, 0x25, 0x46, 0xa9, 0x4f, 0x21}, +{0xf2, 0xef, 0xc6, 0x69, 0x8f, 0x05, 0x36, 0x14, 0x8b, 0x56, 0x1d, 0x43, 0xb2, 0x22, 0xfb, 0x42, 0xb9, 0x1f, 0x8d, 0xd8, 0x83, 0x07, 0xb7, 0xff, 0x87, 0x09, 0x47, 0xf1, 0xb8, 0x61, 0x52, 0xbb}, +{0x21, 0xfb, 0x21, 0x50, 0xd1, 0x7b, 0xa2, 0x06, 0x4b, 0xe7, 0x52, 0xa8, 0x1f, 0xca, 0x68, 0xdf, 0x60, 0x62, 0x43, 0xeb, 0x75, 0x3c, 0x56, 0x9d, 0x97, 0x10, 0xc4, 0x24, 0x20, 0xba, 0xf4, 0x4d}, +{0x10, 0x21, 0x24, 0x06, 0xf8, 0xec, 0xc1, 0x2b, 0x09, 0x46, 0x00, 0x4c, 0x6c, 0x81, 0x01, 0x82, 0x67, 0xc8, 0x81, 0x68, 0x5a, 0x8a, 0x57, 0x6a, 0x7e, 0xb1, 0xb1, 0xf7, 0x6a, 0x7b, 0x4b, 0xae}, +{0xb8, 0x19, 0x6b, 0x10, 0x79, 0x4b, 0x3f, 0xe1, 0x50, 0xb3, 0xa1, 0xdb, 0x0f, 0x74, 0xd3, 0x82, 0xa1, 0x6c, 0xad, 0xdb, 0xb1, 0x0d, 0xd0, 0x20, 0xc2, 0xad, 0x8e, 0x74, 0xbe, 0xb1, 0x9f, 0xb4}, +{0xa8, 0x1e, 0x4e, 0xc5, 0xa9, 0x1e, 0x6b, 0x4d, 0xe2, 0x33, 0x46, 0x1f, 0xfd, 0xbf, 0x3c, 0x84, 0x77, 0x55, 0xcb, 0x1f, 0x64, 0xdd, 0x17, 0xdc, 0xe6, 0x35, 0xb4, 0xb9, 0xe7, 0x7d, 0x27, 0xdc}, +{0x84, 0x95, 0x42, 0x84, 0x3c, 0x8b, 0x00, 0xd8, 0x9c, 0x2c, 0x17, 0xa0, 0x72, 0x66, 0xf9, 0x15, 0x08, 0x0b, 0xc9, 0xf0, 0x48, 0x7c, 0x01, 0x09, 0x15, 0x2e, 0x42, 0x7b, 0x70, 0x82, 0x0d, 0x7a}, +{0x72, 0x12, 0x3c, 0xb5, 0x28, 0xc5, 0x67, 0xc4, 0xe3, 0x45, 0x56, 0x1f, 0xa9, 0x74, 0xe3, 0xcc, 0x87, 0x33, 0xbf, 0x9e, 0xe4, 0xc6, 0x37, 0x0b, 0x8f, 0x77, 0x7c, 0xe3, 0xa3, 0xa1, 0x02, 0xa3}, +{0xbd, 0x92, 0x94, 0x84, 0x09, 0xaa, 0x7b, 0x8e, 0xc0, 0xed, 0x3a, 0x07, 0x81, 0xa3, 0x71, 0x32, 0xec, 0x5d, 0xda, 0x02, 0x54, 0x3f, 0xe7, 0x2c, 0xed, 0xb5, 0xe8, 0xc0, 0xb9, 0x5a, 0xdd, 0x38}, +{0xfd, 0x00, 0x10, 0x47, 0x1a, 0x47, 0xad, 0xd1, 0x5b, 0x01, 0x5d, 0xcf, 0x12, 0xd4, 0xba, 0x20, 0x12, 0x7d, 0xd6, 0x6a, 0x99, 0x37, 0xde, 0x57, 0x79, 0x6a, 0x30, 0x3f, 0xc3, 0x92, 0x45, 0x86}, +{0x4c, 0x3b, 0x0f, 0xe9, 0x89, 0x90, 0xd3, 0x01, 0xac, 0x21, 0x87, 0x6f, 0x36, 0xf1, 0x3c, 0x74, 0xe0, 0xad, 0x9d, 0x6e, 0x2b, 0xb6, 0x5a, 0x22, 0x64, 0x78, 0x04, 0xca, 0x15, 0xa1, 0x8c, 0xfc}, +{0xbf, 0xb9, 0x78, 0x51, 0x6e, 0x2d, 0x39, 0x0e, 0x60, 0x99, 0x18, 0x16, 0x7b, 0x35, 0xe3, 0xea, 0xa5, 0x6c, 0x85, 0x10, 0x7a, 0x79, 0x31, 0xe3, 0xc3, 0x72, 0x3d, 0x46, 0x4a, 0xb1, 0x40, 0x6a}, +{0x41, 0x5f, 0x45, 0x83, 0x7a, 0xb3, 0xbf, 0x54, 0x4c, 0x6a, 0xa0, 0x99, 0x48, 0xfb, 0x93, 0x9a, 0xa9, 0x9f, 0x4e, 0x60, 0x61, 0x25, 0xea, 0xa3, 0xe3, 0x3e, 0xca, 0x60, 0xde, 0xa9, 0xce, 0x8e}, +{0xfd, 0xa3, 0xe5, 0x8e, 0x32, 0x92, 0xb9, 0xa4, 0x6c, 0x17, 0x80, 0x34, 0x87, 0xf8, 0xaf, 0xcd, 0xa8, 0xe5, 0x1e, 0x91, 0xbd, 0x2f, 0x89, 0x8e, 0x1e, 0xe8, 0x30, 0x48, 0xa8, 0x8d, 0xd7, 0xbc}, +{0x9c, 0x08, 0x4d, 0x07, 0x8a, 0x16, 0x6f, 0x65, 0xca, 0xd8, 0x80, 0x5a, 0x82, 0x6f, 0xe3, 0x28, 0x18, 0x13, 0x88, 0xee, 0xc4, 0xd7, 0xaf, 0x2f, 0xda, 0x1b, 0xe9, 0xa0, 0xf3, 0x74, 0x01, 0x60}, +{0x22, 0x77, 0x67, 0x74, 0x9f, 0x04, 0xfd, 0xb0, 0x1b, 0x4a, 0x9e, 0x87, 0xaa, 0x3c, 0x35, 0xa6, 0xc3, 0xf1, 0xb8, 0x62, 0xb1, 0xd9, 0x12, 0x33, 0x43, 0x55, 0x2d, 0xe8, 0x25, 0x7d, 0x7c, 0xaa}, +{0x53, 0x8f, 0xc3, 0xe7, 0xcc, 0x10, 0x26, 0x04, 0x1c, 0xe7, 0x08, 0xfd, 0x9a, 0xf0, 0xf8, 0x8a, 0x06, 0xc4, 0x62, 0x04, 0xa5, 0xd0, 0x7c, 0xfd, 0xd4, 0x99, 0x30, 0xbd, 0x29, 0x98, 0x59, 0x8e}, +{0x23, 0xc9, 0xce, 0x25, 0xf6, 0x0a, 0xd3, 0x61, 0x65, 0x42, 0xcd, 0x86, 0xb6, 0x76, 0x73, 0x47, 0x7f, 0xf2, 0x14, 0x45, 0x2b, 0x01, 0x66, 0x96, 0x35, 0xed, 0x82, 0xf7, 0x1a, 0xf1, 0x5d, 0x30}, +{0xac, 0x34, 0x97, 0xb2, 0xd8, 0xeb, 0x94, 0xd3, 0x22, 0x46, 0x08, 0x2e, 0x3f, 0x28, 0x09, 0xb3, 0x40, 0x1a, 0xf0, 0x8f, 0x7d, 0x30, 0x1a, 0x83, 0xd7, 0x7b, 0xbc, 0x13, 0x7c, 0xa2, 0xde, 0x5c}, +{0x92, 0x80, 0x45, 0xf0, 0x68, 0xab, 0x62, 0x83, 0xfd, 0x9b, 0x55, 0xaf, 0x83, 0xaf, 0x5f, 0x9f, 0x8b, 0x92, 0x4c, 0xb1, 0xb6, 0x2d, 0x12, 0x1a, 0xe9, 0x46, 0xa0, 0x0f, 0x0f, 0xd5, 0x4c, 0x82}, +{0x54, 0xa0, 0xde, 0x88, 0x10, 0xbd, 0x6f, 0x67, 0x14, 0xfc, 0xd1, 0x0d, 0x93, 0xb9, 0xe7, 0x07, 0x28, 0x14, 0x2d, 0xab, 0x50, 0x5c, 0x12, 0x83, 0xdc, 0x87, 0xb5, 0x52, 0x6a, 0x02, 0xf9, 0x61}, +{0xf5, 0xd6, 0xf2, 0x37, 0xb4, 0x66, 0x56, 0xe3, 0xca, 0xba, 0xac, 0x01, 0x50, 0x4c, 0x97, 0xa6, 0x2b, 0xb7, 0x14, 0x45, 0xb6, 0x54, 0x7c, 0x18, 0x29, 0xb7, 0xde, 0x4f, 0xf3, 0xae, 0xfd, 0x2}, +{0x81, 0x6f, 0x57, 0xd9, 0x7d, 0x97, 0x3f, 0xc6, 0x30, 0x61, 0x79, 0x5b, 0x26, 0x2d, 0x57, 0x22, 0xe8, 0xe7, 0xdc, 0x8d, 0xbf, 0xb2, 0xab, 0x51, 0x15, 0x4b, 0x7b, 0x57, 0x52, 0x70, 0xdc, 0x2d}, +{0xa9, 0xae, 0x65, 0x7f, 0x2c, 0x82, 0x95, 0x2b, 0xab, 0x45, 0x31, 0x85, 0x43, 0xe4, 0x12, 0x59, 0x45, 0x4e, 0x2c, 0x10, 0x9c, 0x13, 0xe6, 0xbe, 0x2a, 0x1e, 0x97, 0x0a, 0xce, 0xfa, 0xc6, 0x13}, +{0x0f, 0x32, 0x00, 0x3e, 0xa4, 0x48, 0xc1, 0xdf, 0x21, 0xe8, 0xf4, 0xec, 0x4e, 0xae, 0x7a, 0x68, 0x36, 0x68, 0x0a, 0x20, 0xb5, 0xa0, 0xd5, 0x2c, 0xec, 0x26, 0x2c, 0x95, 0x04, 0x50, 0xf9, 0x7}, +{0x5a, 0x28, 0xc1, 0x55, 0xfe, 0x77, 0x53, 0x06, 0xe7, 0x97, 0xcd, 0x1f, 0x65, 0xe5, 0xbe, 0xbe, 0x6a, 0x49, 0xdd, 0x0d, 0xce, 0x10, 0x04, 0x10, 0xf2, 0xcb, 0xe0, 0xad, 0xa4, 0xd7, 0x0d, 0x66}, +{0x89, 0x16, 0x45, 0xa3, 0xad, 0x26, 0xe6, 0xdc, 0xc6, 0xb9, 0x44, 0xb3, 0x74, 0x7c, 0x76, 0xe7, 0x0e, 0x56, 0xb8, 0x39, 0xe5, 0x75, 0xe5, 0x48, 0x23, 0x32, 0x93, 0xb2, 0x7c, 0xbf, 0x44, 0xad}, +{0x0c, 0xf2, 0x4f, 0x0e, 0x34, 0xeb, 0x55, 0xae, 0xa2, 0x60, 0x55, 0x46, 0xa3, 0x4e, 0x48, 0x0d, 0xb8, 0x34, 0x58, 0x2a, 0x80, 0x62, 0xc3, 0x07, 0x65, 0x76, 0x65, 0x34, 0xe6, 0xe9, 0x45, 0x69}, +{0x80, 0x4e, 0x3b, 0x2d, 0xea, 0x0b, 0x2c, 0x7b, 0x06, 0xfb, 0x0c, 0xb5, 0x63, 0xfc, 0x66, 0xf1, 0x0c, 0x95, 0xd0, 0x0e, 0x67, 0x65, 0xa8, 0x98, 0xa3, 0xa8, 0xe0, 0x1e, 0xeb, 0x5e, 0x65, 0x3c}, +{0xa2, 0x12, 0x84, 0xf7, 0xd7, 0x4e, 0x24, 0x3b, 0xbd, 0x7c, 0x61, 0x03, 0xbe, 0x8b, 0xeb, 0xeb, 0xde, 0x44, 0x09, 0xf2, 0x5c, 0xd2, 0x08, 0x90, 0x1d, 0x03, 0xf2, 0xaf, 0xa3, 0x22, 0xbc, 0xb1}, +{0x85, 0xd6, 0x13, 0x4e, 0x7e, 0x0c, 0x78, 0x9c, 0x59, 0x8b, 0x42, 0x3d, 0xa8, 0x57, 0x3e, 0x53, 0xb0, 0x82, 0xcb, 0xc9, 0x03, 0x01, 0xe9, 0x62, 0xbd, 0x01, 0x55, 0x73, 0x40, 0xa0, 0xc6, 0xd9}, +{0xaf, 0xca, 0xde, 0x50, 0xca, 0xf1, 0x6f, 0x6c, 0x6e, 0x0e, 0xca, 0x9b, 0xda, 0x54, 0x7d, 0x22, 0xa4, 0x04, 0x32, 0x17, 0x98, 0x63, 0x24, 0x62, 0x37, 0xe4, 0x09, 0x7d, 0x02, 0x15, 0x48, 0xed}, +{0x7c, 0x77, 0x9d, 0x79, 0xd4, 0x5e, 0x49, 0x5a, 0xd4, 0xb9, 0x8d, 0xf6, 0xb9, 0xb3, 0x4b, 0x44, 0x5e, 0xd3, 0x6a, 0x4a, 0x36, 0x9f, 0x1f, 0xd7, 0x1a, 0x5b, 0xec, 0x19, 0x45, 0xd9, 0x6c, 0x39}, +{0x2e, 0x75, 0xa8, 0x74, 0x8b, 0xcf, 0xdd, 0x43, 0x2d, 0xb2, 0x58, 0x1a, 0x20, 0xc1, 0x06, 0xcd, 0x76, 0x6a, 0x55, 0x6d, 0xac, 0x29, 0x33, 0x62, 0x3e, 0x3f, 0x72, 0xf4, 0xaf, 0xf2, 0x1c, 0x20}, +{0x3a, 0xb8, 0xac, 0xce, 0x82, 0x3b, 0x31, 0xff, 0xf5, 0x4f, 0x18, 0x95, 0x19, 0x82, 0xed, 0xec, 0x82, 0x76, 0xde, 0x4a, 0x91, 0x4c, 0x97, 0xc8, 0x18, 0xc4, 0xaa, 0x90, 0x65, 0xae, 0x99, 0xc1}, +{0x2c, 0x03, 0x66, 0x3b, 0xa4, 0xa8, 0x16, 0xe1, 0xd5, 0x33, 0xed, 0xc9, 0x53, 0xe4, 0xe0, 0xb2, 0xb5, 0xf1, 0x9f, 0xfa, 0x48, 0x61, 0x62, 0xdc, 0xd2, 0x20, 0x6e, 0xc9, 0x46, 0x8c, 0xe2, 0xcb}, +{0x4a, 0xde, 0x67, 0x61, 0x5f, 0xa6, 0x74, 0x60, 0xa0, 0x70, 0x9b, 0x9e, 0x81, 0x0f, 0x54, 0x76, 0xe8, 0x6a, 0xed, 0x5b, 0xaa, 0xbc, 0x04, 0x96, 0xc1, 0x5d, 0xeb, 0x28, 0xf5, 0x7c, 0xa5, 0x25}, +{0xf8, 0x4d, 0xac, 0xa3, 0xb0, 0x93, 0xa7, 0x32, 0x47, 0x21, 0x4c, 0x7e, 0xf1, 0xfb, 0x99, 0x0a, 0xb5, 0x4f, 0xf0, 0x6b, 0x9d, 0x3b, 0x69, 0xac, 0x73, 0xd9, 0x91, 0xf9, 0xdf, 0x79, 0x54, 0x4c}, }; enum { diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index feae9423..5cecb5a1 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -150,7 +150,7 @@ const txHash = { permission: "active", }], data: { - fio_request_id: "Fio request ID", + fio_request_id: "", payer_fio_address: "My payer address", payee_fio_address: "My payee address", max_fee: 0x11223344, diff --git a/test-integration/signTransactionTrnsfiopubky.js b/test-integration/signTransactionTrnsfiopubky.js index f26301ad..fa6396c5 100644 --- a/test-integration/signTransactionTrnsfiopubky.js +++ b/test-integration/signTransactionTrnsfiopubky.js @@ -270,6 +270,47 @@ testStep(" - - -", "Sign transaction reject"); await assert.rejects(ledgerPromise, DeviceStatusError, "Action rejected by user"); } +testStep(" - - -", "Sign mainnet transaction - large values"); +{ + const network = "MAINNET" + const tx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + actions: [{ + account: "fio.token", + name: "trnsfiopubky", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + payee_public_key: "FIO8PRe4WRZJj5mkem6qVGKyvNFgPsNnjNN6kPhh6EaCpzCVin5Jj", + amount: BigInt("0x7F223344556677"), + max_fee: "27340676326057591", + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + transaction_extensions: [], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, publicKey) + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + await transport.close() testEnd(scriptName); process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.04.png b/test-integration/snapshots/signTransactionAddaddress/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.12.png b/test-integration/snapshots/signTransactionAddaddress/nanos.12.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.21.png b/test-integration/snapshots/signTransactionAddaddress/nanos.21.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.31.png b/test-integration/snapshots/signTransactionAddaddress/nanos.31.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.42.png b/test-integration/snapshots/signTransactionAddaddress/nanos.42.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.04.png b/test-integration/snapshots/signTransactionAddaddress/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.05.png b/test-integration/snapshots/signTransactionAddaddress/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.14.png b/test-integration/snapshots/signTransactionAddaddress/nanox.14.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.15.png b/test-integration/snapshots/signTransactionAddaddress/nanox.15.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.25.png b/test-integration/snapshots/signTransactionAddaddress/nanox.25.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.26.png b/test-integration/snapshots/signTransactionAddaddress/nanox.26.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.37.png b/test-integration/snapshots/signTransactionAddaddress/nanox.37.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.38.png b/test-integration/snapshots/signTransactionAddaddress/nanox.38.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.50.png b/test-integration/snapshots/signTransactionAddaddress/nanox.50.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.51.png b/test-integration/snapshots/signTransactionAddaddress/nanox.51.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.04.png b/test-integration/snapshots/signTransactionAddnft/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.12.png b/test-integration/snapshots/signTransactionAddnft/nanos.12.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.21.png b/test-integration/snapshots/signTransactionAddnft/nanos.21.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.04.png b/test-integration/snapshots/signTransactionAddnft/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.05.png b/test-integration/snapshots/signTransactionAddnft/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.14.png b/test-integration/snapshots/signTransactionAddnft/nanox.14.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.15.png b/test-integration/snapshots/signTransactionAddnft/nanox.15.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.25.png b/test-integration/snapshots/signTransactionAddnft/nanox.25.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.26.png b/test-integration/snapshots/signTransactionAddnft/nanox.26.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.04.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.04.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.05.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.20.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.04.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.42.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.42.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.05.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.05.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.105.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.105.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.122.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.122.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.14.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.14.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.140.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.140.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.159.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.159.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.179.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.179.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.200.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.200.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.222.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.222.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.24.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.24.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.245.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.245.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.269.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.269.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.294.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.294.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.320.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.320.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.347.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.347.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.35.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.35.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.375.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.375.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.404.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.404.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.434.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.434.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.465.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.465.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.47.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.47.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.497.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.497.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.530.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.530.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.564.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.564.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.599.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.599.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.60.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.60.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.635.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.635.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.672.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.672.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.680.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.680.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.74.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.74.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanos.89.png b/test-integration/snapshots/signTransactionOtherEosio/nanos.89.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.05.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.05.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.06.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.06.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.104.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.104.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.121.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.121.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.122.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.122.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.140.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.140.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.141.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.141.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.16.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.16.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.160.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.160.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.161.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.161.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.17.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.17.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.181.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.181.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.182.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.182.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.203.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.203.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.204.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.204.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.226.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.226.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.227.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.227.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.250.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.250.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.251.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.251.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.275.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.275.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.276.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.276.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.28.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.28.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.29.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.29.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.302.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.302.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.328.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.328.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.329.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.329.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.356.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.356.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.357.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.357.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.385.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.385.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.386.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.386.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.41.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.41.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.415.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.415.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.416.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.416.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.42.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.42.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.446.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.446.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.447.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.447.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.478.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.478.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.479.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.479.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.511.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.511.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.512.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.512.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.545.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.545.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.546.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.546.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.55.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.55.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.56.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.56.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.581.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.581.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.616.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.616.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.617.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.617.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.653.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.653.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.654.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.654.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.691.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.691.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.692.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.692.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.70.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.70.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.71.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.71.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.731.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.731.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.740.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.740.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.741.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.741.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.86.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.86.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.87.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.87.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.04.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.11.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.11.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.19.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.19.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.27.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.27.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanos.74.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanos.74.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.04.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.05.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.13.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.13.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.14.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.14.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.23.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.23.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.24.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.24.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.33.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.33.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.34.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.34.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.87.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.87.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.88.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.88.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.04.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanos.12.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanos.12.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.04.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.05.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.14.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.14.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.15.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.15.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.05.png b/test-integration/snapshots/signTransactionRecordobt/nanos.05.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.06.png b/test-integration/snapshots/signTransactionRecordobt/nanos.06.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.25.png b/test-integration/snapshots/signTransactionRecordobt/nanos.25.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.26.png b/test-integration/snapshots/signTransactionRecordobt/nanos.26.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.44.png b/test-integration/snapshots/signTransactionRecordobt/nanos.44.png index f7df1097c3796613f32224cd0d0c406596909b83..ecf73f6f770103072a4629b1d5abe1ef7d437995 100644 GIT binary patch delta 252 zcmVLo<$VptXQeOO zcs+crzirp;RdRJ}OhDWa-u8FrSaZE@b0FFJreXr(Vz=*}{dG82yXjuV1e|{Q4P)be zCG1)jxo^;m{{Bfc&H&%6wrpqZi#Oxg*?B&DAVmHdzmQrxQpsdcD_AX`13oB0uv)>C z4%k)2ZTu<}fku9_8nrQr@G{mXQamp;$mdEa zTYgNCN|vuz zz&zbFmj(K!zds3#J%9!)m#q{&ev`{e`?)kBK>iv30989s##n&nFq%CB{NVziw}2)M z(B;J%uEG*I@F#NMNh`2IH}w1|hM%);aWcBDOKR;t{xq`elFH(S2Qj68Sv^LF*65Nt zO#Nnqj1MV~HBv?NQC*~`sLkIKTsZ@#9PwB0l3tmBDXy;GCH3oudI8oYb$TD5Y{L4J ryLU;UKq};6_FIC$hy(;d5bVnVthw1aTqRzL00000NkvXXu0mjf+PtGP diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.45.png b/test-integration/snapshots/signTransactionRecordobt/nanos.45.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.46.png b/test-integration/snapshots/signTransactionRecordobt/nanos.46.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.64.png b/test-integration/snapshots/signTransactionRecordobt/nanos.64.png index f7df1097c3796613f32224cd0d0c406596909b83..ecf73f6f770103072a4629b1d5abe1ef7d437995 100644 GIT binary patch delta 252 zcmVLo<$VptXQeOO zcs+crzirp;RdRJ}OhDWa-u8FrSaZE@b0FFJreXr(Vz=*}{dG82yXjuV1e|{Q4P)be zCG1)jxo^;m{{Bfc&H&%6wrpqZi#Oxg*?B&DAVmHdzmQrxQpsdcD_AX`13oB0uv)>C z4%k)2ZTu<}fku9_8nrQr@G{mXQamp;$mdEa zTYgNCN|vuz zz&zbFmj(K!zds3#J%9!)m#q{&ev`{e`?)kBK>iv30989s##n&nFq%CB{NVziw}2)M z(B;J%uEG*I@F#NMNh`2IH}w1|hM%);aWcBDOKR;t{xq`elFH(S2Qj68Sv^LF*65Nt zO#Nnqj1MV~HBv?NQC*~`sLkIKTsZ@#9PwB0l3tmBDXy;GCH3oudI8oYb$TD5Y{L4J ryLU;UKq};6_FIC$hy(;d5bVnVthw1aTqRzL00000NkvXXu0mjf+PtGP diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png index ca0f072d21f268ed096cea953a3896f48c09fa6c..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?771JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf3ry5k delta 422 zcmV;X0a^aj1Hc22B!7oVL_t(|ob8!G5`!QNMQx|O|AAe!3uY*j1dQ-Qu;#54F#!@m zKHC-qK@i-P2h!MQFATqtmbv}p;ts?ae zI`x8Eq>!YmY3wX#B@q%K- QCIA2c07*qoM6N<$f)kj|{Qv*} diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.66.png b/test-integration/snapshots/signTransactionRecordobt/nanos.66.png index bf4d938233729ccd208ad8f3f70d3a4d7a2cd635..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7C1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfhrid6 delta 427 zcmV;c0aX6e1H}W7B!7%aL_t(|ob8#*5`!QNMQx}3{||Oy7tBzamq8N1lCx4o0!ak9 zY+DcnL9i+hvzCs%X!UK@tY9S>I`*$Q{8Vm1)6cSfd^-{4zcI`KV9M zg0I#T(*Tg}(Bv|HQSj`fYv4tmy$z;WXyCs@w`om>^BS-z2Ao2YugMY(8Ta6CfR1yEs0A)C&NIF$LhQ+v}yGHstc~4oZSnB zrY8jcQiKw7-PCYGCyg2%lQjn*D=_U}nUikX9tmIq9AkjnO5D`YcGYvZZYl$`KP(06 z7&HZu3zxZWip5cE;?!~2#Dzt84DGY?U3L`>bU%;@ek5_*2W)Mhq}9S61VIq+d;ky= VBI`onn9u+K002ovPDHLkV1o1H%a#BD diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.05.png b/test-integration/snapshots/signTransactionRecordobt/nanox.05.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.28.png b/test-integration/snapshots/signTransactionRecordobt/nanox.28.png index 9ebb3ca9aaa6c733312c80462ec4c3be4c524256..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;Do1e*kqB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.50.png b/test-integration/snapshots/signTransactionRecordobt/nanox.50.png index c1a66c3d2ded9643857fbf02844d87151322b5e1..044ebbbb73bc0df5c0686a5c84b7d11f7f5ac059 100644 GIT binary patch delta 309 zcmZ3(e1U0#O1-$Ji(^Q|oVPa<`I;4Y+7h?DQM>owWAEv@2@}|k=w#&Bf48$2QwjFu z<_h9s0E2%=wRbVTKC@=(_FV3qlaiA-KP>z%a(Th@2C-WCcXz!w-@jnfdBvnFULKnE zY`*>RcA*e=hC^p|?M(Wvze{;R_tvBr+Iu4d5~XGxF&0az2O8El&u-ruQ(ye;od~CdJjd>je?Q)N zloVS$!T3w415@93k@GPZuBY(r5}(j;`hMN++mp2{Id1c3@Mm0n9j|)S`T+atvfGhA zj-C2==jQJkGlfZKdOqt-dU4`($aWR^W)_I=pyYw0`<^8(*W<7~{um_U>FVdQ&MBb@ E0MECLyZ`_I delta 402 zcmV;D0d4-!0;~g&B!6>BL_t(|obB6Nj>8}fKv7zCC)xj!*h@c<5W;|>Jg^P-e2mgO znv4xeFlq<@000000NBMx`vR_uG3MptI25ns4wnfiLtpZk27d|2(J#Z@Tya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDO zJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx0v><*HK!-N8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.73.png b/test-integration/snapshots/signTransactionRecordobt/nanox.73.png index c1a66c3d2ded9643857fbf02844d87151322b5e1..044ebbbb73bc0df5c0686a5c84b7d11f7f5ac059 100644 GIT binary patch delta 309 zcmZ3(e1U0#O1-$Ji(^Q|oVPa<`I;4Y+7h?DQM>owWAEv@2@}|k=w#&Bf48$2QwjFu z<_h9s0E2%=wRbVTKC@=(_FV3qlaiA-KP>z%a(Th@2C-WCcXz!w-@jnfdBvnFULKnE zY`*>RcA*e=hC^p|?M(Wvze{;R_tvBr+Iu4d5~XGxF&0az2O8El&u-ruQ(ye;od~CdJjd>je?Q)N zloVS$!T3w415@93k@GPZuBY(r5}(j;`hMN++mp2{Id1c3@Mm0n9j|)S`T+atvfGhA zj-C2==jQJkGlfZKdOqt-dU4`($aWR^W)_I=pyYw0`<^8(*W<7~{um_U>FVdQ&MBb@ E0MECLyZ`_I delta 402 zcmV;D0d4-!0;~g&B!6>BL_t(|obB6Nj>8}fKv7zCC)xj!*h@c<5W;|>Jg^P-e2mgO znv4xeFlq<@000000NBMx`vR_uG3MptI25ns4wnfiLtpZk27d|2(J#Z@Tya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDO zJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx0v><*HK!-N8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZgw6XW)ruY@E( zY=_77Ob7q~00000008h`__FT6JTb;}d|j7ePgZd0fZX&s9^K&20m=HgxvPaP__prA zB*M_{?CzBqV?O@$PhH^k3ji}(VeT>fgWoSe*xIA%Z~U!-0)NZUL--pTF#rGn0009t z_W`>X=3@VKT~~}THB??*?_pkld3qc|nA}>wDCu0vOFr$@3xdawdW`}Rbgh^Y8I?^5 zma;bUOwM)(h#?~PLG_?~@UIUynX=U?f`MH6;m?I8B`c z0Dz<%&|M7it>1OM-;=;9$edjpvA&XCm2?z!)5rR&cZ!mc=8VPEyLlnXml}OvtRGSN zM-DnYY_&L1sGcEsLy8zgQ8!f_(5vyGm?l$jK+<8>KW9UA-E`d()qjE{ql?oCHcrCp zs;8lD+DB-Ar4%@h*%0(Nc~%+MO{*FFPHltDoizzR(t5q|csYMpu?YJBV>a#s!rF(a kHL(K#000000Kh@~0y;gEDBQu-bN~PV07*qoM6N<$f>#*i8vpF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeU2omwrS-$QVMx(=+FM5t0D4 z9Uj+H=Kufz000000N`8r**$>wgb-rcd%tlcJ(zSrYWft5Zm{QoX#LdOYNZK&cMsqt z!qDdIZj}&1I{(x!ORsGN^72uZMNp|H?}!}2)9x+<>{1p z36{LUy~&)p4iE-SeV`WN!=h$3b<5dt{uuAHC(Y7~G51 zlq9^tXx$o}=a(u4N z*M+tgeg9FRG|p1LFDl1o2&PLBjSSaK2Ttf}r=!wjy=xAL3QYe8I7v6{_k{Y-AkpaJ z@+q?x;eOR~yKY)XXn(mB*vOtKNL{#w>!!Ilns;$)xV(!~7U5g^XJ;#?iXJ!zY-ZLu o!1aBSqZW1m000000020Pf8XAyztiWdl>h($07*qoM6N<$f{EJnCjbBd diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.04.png b/test-integration/snapshots/signTransactionRemaddress/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.12.png b/test-integration/snapshots/signTransactionRemaddress/nanos.12.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.21.png b/test-integration/snapshots/signTransactionRemaddress/nanos.21.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.31.png b/test-integration/snapshots/signTransactionRemaddress/nanos.31.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.42.png b/test-integration/snapshots/signTransactionRemaddress/nanos.42.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.04.png b/test-integration/snapshots/signTransactionRemaddress/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.05.png b/test-integration/snapshots/signTransactionRemaddress/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.14.png b/test-integration/snapshots/signTransactionRemaddress/nanox.14.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.15.png b/test-integration/snapshots/signTransactionRemaddress/nanox.15.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.25.png b/test-integration/snapshots/signTransactionRemaddress/nanox.25.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.26.png b/test-integration/snapshots/signTransactionRemaddress/nanox.26.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.37.png b/test-integration/snapshots/signTransactionRemaddress/nanox.37.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.38.png b/test-integration/snapshots/signTransactionRemaddress/nanox.38.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.50.png b/test-integration/snapshots/signTransactionRemaddress/nanox.50.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.51.png b/test-integration/snapshots/signTransactionRemaddress/nanox.51.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.04.png b/test-integration/snapshots/signTransactionRemnft/nanos.04.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.12.png b/test-integration/snapshots/signTransactionRemnft/nanos.12.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.21.png b/test-integration/snapshots/signTransactionRemnft/nanos.21.png index b7603bed7ac95708ee726cd70738b32079a186f4..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX6k1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1hiW*wz35 delta 447 zcmV;w0YLu61K9(RB!8euL_t(|ob8&yvcfP3MX96z|G_SF;Y=rn3nc~GXgTvXFHH%7 zgv6^vMNt&RRasK3zMkKMJm~eLt5T)s|~l)c7KZ|EdirN+z(vNQ6WnR z{fEQPfa3{SylK<9CE4|ow&G^v@H60ZCGA>ZALZN|x*%F|$-R=E&a<=vw`y+`5oxorpu`{JhMw^c9?jXJ#N(uSor91}lWT_Hz=j`nO}#!6IM@S@`!S zJbZekA{Kpv3}r|_Y^5eawzNz0c9fm8iK0#`!@+NsR167-T2{~wTqAHAZE-icG_;fa zbTDWtbW;mk|LD6Qv=ip@w-}FQd@RQqpy-;OGdLhydNdmM`%oIHmC@U9C{tcT p4`YI#U*!BQ=ohJSQ541XcmoJh3)M4bFEs!F002ovPDHLkV1lwC*H8ce diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.04.png b/test-integration/snapshots/signTransactionRemnft/nanox.04.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.05.png b/test-integration/snapshots/signTransactionRemnft/nanox.05.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.14.png b/test-integration/snapshots/signTransactionRemnft/nanox.14.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.15.png b/test-integration/snapshots/signTransactionRemnft/nanox.15.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.25.png b/test-integration/snapshots/signTransactionRemnft/nanox.25.png index 0fc6236cce6af5ba05a2c7e78e43431c2c6cb389..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 928 zcmV;R17G~b2et>0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000O7EMM)|*@%@kFyJX=CMWg9U$U~>~RtXW3 z5QEKkS}Tg8D2k#eip%*jE%tpMf8Dn2XxX++GSHo{22z*9c#7yH>}ucl(USJ1p4)3> z%s@Zj7$iq@GHBGr^4-O>u%=%-)4Wa8nGRtiOQP(?A-8_j(B3*zKQ(uI&T=+EBV5aBa|{=#ei zi8a<6^<*SJU_`dX6xtBNFFa3_BB-d@xOKhaUs2a};k_ruCfUe-Vr@oFnShwie83(8 zNXgO<0a`x&q-v!4IcjL`N!_?dh19r+vXjid_!kAmGk?<8o`9@nrASxG!@U1>Jlw&Q zTsvu<=?$e}rF(=Lsvqv#Kzlt9#sSmuBhGUP#EL%yXt1dkEwp=-=UWP(^Yt90PoyP| z&UoL36T^KvR4%@zIyDCj>}Q!%!(9`oV5sWfNmc(&PN}|mdg`*>2(@=*EIm=#DAFkK zfta~nv47aX7;H_ITDY8#9bJLU3_<@ZxV0eUh7ypESSQl`h2HYIfpi~MGE|bJgJu0o z<3%!oZo<04H)XkV0-P5rs_aDIqd&L+`?_?eKr#thP*-VmoBdByV~wZXy&~YSeZeFC zK$m87#igfwkYSaj*wU8#Pc8HuV}-nSvVilH34dT2=YR@)isXkZQoN?D&YZOgRwqEI z3v1~eMtC2X&RuU4_p01+a#PIm=6#*d3dHh=4>F(3qn`mC>8y`2ogSxt_9=>@cw-cO zQ8Jq@oZzLDJv4PuYz$%Ea&a@WBRe7`+a;tjDeY`>Qj5|NZ$w5OsJqh9Tsk<=KW4F4 zA%E``$uwqfJ;-%Qan)XLh^85pL-5c$r&Q*sp)RC4B7z+?W*cdUsRfr~C;wUhz=Qii z!REp3gws7|=0TWR6>lrw9 z05S)PM4Sa1LU}5Tz08Nl^g?+&71)lspC~Inl-oCDD>d|XY66O)D2n1HegWm=am9iz RL0

002ovPDHLkV1g)7(9Zw> diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.26.png b/test-integration/snapshots/signTransactionRemnft/nanox.26.png index c4fe1ea38a651533535ff508a0eed5e46d5651df..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd 100644 GIT binary patch delta 382 zcmV-^0fGLk1DOMmB!6H@L_t(|obB0Bl7k=&fML3`H{t$A%3b!s8HOcLW58 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g148lRR910 delta 402 zcmV;D0d4-71FQp(B!6>BL_t(|obB0Bl7k=&fMIrLZ^HeL#9j8mDZ>)LfN^Q;|2?%8 z0}_K)LjV8(0RG+Acymgr{2F6Ceu**m8jOQ98}xQL8dp8eS`L*`l80ICD}#r>lXKeF zw`M5uMGmprTIHkJ#)a}gnzNkA)XIGaer(1&={PkOPVHtfm4DGfzdDuCq~4~5%9d0W zkWxB5m|2>Dvfo~{$zngvZdsZ#+IU~3UeT0P6>!tiaT<1^qLs~Z1O18By!g##UD~q* ztr@SyYo=}ruD6j?OVHiSmpEl@T@2d{G8_3)0`ke2XHa%8+n98xZ>)*dyqT8ERBqY3 z*{g2L8**pRzqczPCe=)D_p z%2@*R&-%T1+7jdr3D~S&f;8`uH+t9wpyqU8eaQa+k3*Nwdp#aS2!6+1FnQ;*ljEU3 w207S|8~^|S0000000000000000PyJ-pnW)$in+Sb01E&B07*qoM6N<$f;RrY`~Uy| diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.26.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.26.png new file mode 100644 index 0000000000000000000000000000000000000000..06140342c291c111e9c068e5607f9a041bc53592 GIT binary patch literal 314 zcmV-A0mc4_P)u?dPuR>IbWVK1!q}c)N6)f59IXb8?ge<K;1|1`+y^6Re!(aIzE{L7j$o8J0Q zbFf>C80me$E7X7MApLiMCS3U_o7XsL*4Tc^A*>t`;wu0E006)!KS1-z9?s-0&;S4c M07*qoM6N<$f+n`3SO5S3 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.28.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.28.png new file mode 100644 index 0000000000000000000000000000000000000000..8471f1af609767e69a87cf7c33327179f377b07f GIT binary patch literal 498 zcmV2mf1I96!apL0*BweOlx-aTJ=Xb1q40JaR!pqws67pL<(9|L oVNCxm$nbwbkHf=-<2dW_2bry2qdIfGI{*Lx07*qoM6N<$g00Wr^Z)<= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.29.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..1185fd8b6730640e5fc578791b157b31710f73ab GIT binary patch literal 390 zcmV;10eSw3P)M!)Sk|<#q@dY8#379X<~?>l8fr*I_+QLWUcrJO*}x^@v6Fbqx@sD8n~+#RCSQz ze*hmZrolU$c0+Js>ov koceHd90b}20001NK8g(n#|P5LuK)l507*qoM6N<$g67z;)&Kwi literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.30.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6c67793439e10376dd0dc3248e9bea52eb3f5b GIT binary patch literal 411 zcmV;M0c8G(P)c*ODTs)6X!d`HWwnS3N)=NA0000Yxz2Q*jgk><3-gZdz-+EF z9iQk(?(@)T8W*7yPqgrH`)EH4gq zNrGPqkP^!!j8fgQ>EzW#g~qYOGbKvm=;#F22LJ#7biOfP^+Lvv?fw7&002ovPDHLk FV1nmExTOF9 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.31.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.34.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.34.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3de69c7c33c4c27501a71d3319db2743fce8fd GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jmba4!+nDh2#U{Q+#PebCZ zm%e-cPu$@xKf@^VP@7JY@7({@QIahj+8H{mAibJPuSI3={WV3!?j4`Qv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.37.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8c676529425490e3241aca9c4efc3212d14c84e7 GIT binary patch literal 502 zcmVK2>L`mHar1rm~f?ay4^M zJ(S+08^hGD8%pAa-f0FeVk0j~-(loqc5*>-2Fa;c)X!gQtIeyQ@bwYwUVw|)6olS z(e~coW!I6l0T}!iuoXx39?&{b>)B2gDlxR~I`WwM#~ifWaHlQlTynyT=zRbH)@j+$ z0~L4d_}tn0ImJsdPPdxMl0M@3>WH7Eycq*v?3AA-j?=#pdz|MDz!!9SjwQ(0^JYLx s{+}1A#3~p70000000000003a_4~m@*WE5SSR8-1FrUOt5&wQC#N$004m7eQkX25JEig-nUAY zG<&k2-5ppgM*k6^kB(RY&N=UW@n>DZ{h!^+0#eHL!ux&idSeU!$F-++UXqT}S^0^1 zJ7VD$M{hx5T;kj}ZZ)ZeyeYA8m;D1!Y$io?R?X0SsE+!SK4lBChj?gU#1Nkl_vDlT zsHG5#yN6Puv{TIeq7VQ80JqU{L3*;KxSQ6$-GmV8uR^Vwc{_RPuaT!!(7KFth4u|GCH?a$6OZechEBKKbk?Vf4R)`^ zc+2~8OLDm+geMVw008Fgd@^oA@rfPpAiGb-VVSu!=gH1}EagKm0GsW9G;x&jtK1Vk zZvfsP=sC8a&7QXcT8e-1aBsI(00000000000002MkYALpqC0W5>gfOg002ovPDHLk FV1h}p^uhoD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.39.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.39.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.40.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.40.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Mon, 3 Oct 2022 21:06:57 +0200 Subject: [PATCH 50/83] Add unit tests to CI --- .github/workflows/ci-workflow.yml | 41 +++- src/signTransactionIntegrity.c | 321 ++++++++++++++++++++++-------- 2 files changed, 273 insertions(+), 89 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 6b81651e..73d3c0db 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -16,7 +16,7 @@ jobs: - name: Build run: | - make DEBUG=1 + make DEVEL=1 - name: Upload app binary NanoS uses: actions/upload-artifact@v2 @@ -37,7 +37,7 @@ jobs: - name: Build run: | - make DEBUG=1 BOLOS_SDK=$NANOX_SDK + make DEVEL=1 BOLOS_SDK=$NANOX_SDK - name: Upload app binary NanoX uses: actions/upload-artifact@v2 @@ -58,7 +58,7 @@ jobs: - name: Build run: | - make DEBUG=1 BOLOS_SDK=$NANOSP_SDK + make DEVEL=1 BOLOS_SDK=$NANOSP_SDK - name: Upload app binary NanoSP uses: actions/upload-artifact@v2 @@ -87,6 +87,36 @@ jobs: name: scan-build path: scan-build + job_speculos_nanos_unit_tests_5001: + name: NanoS Speculos 5001 unit tests + needs: job_nanoS_build_debug + runs-on: ubuntu-latest + steps: + - name: Clone + uses: actions/checkout@v2 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16.10.0 + - name: Download app binary + uses: actions/download-artifact@v2 + with: + name: fio-app-nanoS-debug + path: bin + + - name: install speculos + run: | + export BOLOS_SDK= + make js-yarn + make test-yarn + - name: Run tests + run: | + make speculos_port_5001_unit_test + - name: Upload Speculos 5001s log + uses: actions/upload-artifact@v2 + with: + name: speculos-ut-5001s-log + path: tests_speculos/speculos-port-5001.log job_speculos_nanos_tests_5001: name: NanoS Speculos 5001 tests needs: job_nanoS_build_debug @@ -117,11 +147,6 @@ jobs: with: name: speculos-5001s-log path: tests_speculos/speculos-port-5001.log - - name: Upload Speculos 5003s log - uses: actions/upload-artifact@v2 - with: - name: speculos-5001s-log - path: tests_speculos/speculos-port-5003.log job_speculos_nanox_tests_5001: name: NanoX Speculos 5001 tests needs: job_nanoX_build_debug diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 0b9174c9..6a3ee96e 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -45,87 +45,246 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { 0xbb, 0x66, 0xea, 0x0e, 0xff, 0xde, 0x09, 0x43, 0x50, 0xca, 0xba, 0xd4, 0x6f, 0xbf, 0x94, 0xc5, 0x4d, 0x7c, 0x5c, 0xb3, 0x41}, #endif -{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, -{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, -{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, -{0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, -{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, -{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, -{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, -{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, -{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, -{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, -{0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, -{0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, -{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, -{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, -{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, -{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, -{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, -{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, -{0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, -{0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, -{0xab, 0x0f, 0x5c, 0xce, 0x2f, 0xaf, 0x6b, 0x90, 0x93, 0xf3, 0xb5, 0xbe, 0xa9, 0x6a, 0x74, 0xa7, 0x70, 0xd2, 0x91, 0x68, 0xf7, 0x1f, 0xe5, 0x3d, 0x19, 0x74, 0xf7, 0xa5, 0x10, 0x39, 0x63, 0xc1}, -{0x30, 0x73, 0x00, 0xed, 0x8d, 0x10, 0x65, 0x24, 0x7f, 0xa3, 0xdd, 0x2a, 0x1b, 0x7c, 0x90, 0xa8, 0xb2, 0x6f, 0xaf, 0xad, 0xb6, 0xf7, 0xa7, 0x5f, 0x91, 0x92, 0x97, 0xe5, 0xf1, 0xb1, 0x21, 0x96}, -{0x13, 0x02, 0x4a, 0xa0, 0xa0, 0xea, 0x70, 0xc8, 0x11, 0x52, 0x2d, 0x67, 0x17, 0x41, 0xcd, 0x8c, 0x4e, 0xf6, 0x80, 0x31, 0x7c, 0x4d, 0x5c, 0xa0, 0xf2, 0xfa, 0x3c, 0x4b, 0xb1, 0x85, 0xc5, 0xcd}, -{0x8e, 0x26, 0x84, 0x94, 0x40, 0xd8, 0xcd, 0xf9, 0xd0, 0x1a, 0x08, 0x17, 0xaa, 0x0b, 0x57, 0x33, 0xf6, 0x48, 0xf0, 0x1f, 0xea, 0xfd, 0x51, 0xb4, 0xac, 0x3d, 0x18, 0xad, 0x87, 0x3f, 0xb9, 0xa4}, -{0xf6, 0x9c, 0xe5, 0x0f, 0x3c, 0xdf, 0xa4, 0x1e, 0x00, 0x7e, 0xf3, 0xb0, 0x29, 0xc4, 0x3b, 0xc7, 0x92, 0x3e, 0xb3, 0x78, 0x71, 0x7d, 0xed, 0x96, 0x1c, 0x41, 0x5a, 0x4c, 0x82, 0x50, 0xc9, 0xa1}, -{0xe7, 0xa8, 0xd4, 0xed, 0x82, 0xd2, 0x60, 0x32, 0x54, 0x5a, 0xc2, 0xc6, 0x73, 0x73, 0xfb, 0xf5, 0xfa, 0xa6, 0x8f, 0x2f, 0xb4, 0xb8, 0x91, 0xe3, 0xe8, 0x11, 0x6a, 0xca, 0x08, 0xbf, 0x59, 0xe1}, -{0x26, 0xe5, 0x21, 0x0f, 0x8f, 0xc8, 0x77, 0x8e, 0xb7, 0x24, 0x97, 0x32, 0x20, 0xa2, 0xbc, 0x85, 0xbe, 0x11, 0x10, 0xb8, 0x39, 0x8d, 0xd2, 0x7e, 0x9d, 0x3a, 0xbc, 0xaf, 0x58, 0x1a, 0x48, 0x79}, -{0xe0, 0xa6, 0x06, 0xd1, 0x34, 0xb3, 0xbf, 0xfd, 0x72, 0x6f, 0x69, 0xf7, 0xd1, 0xa5, 0x68, 0x78, 0xd8, 0xad, 0x15, 0x66, 0xd4, 0x1e, 0xdc, 0x30, 0x1d, 0xbe, 0xea, 0x09, 0x82, 0xf1, 0x3d, 0xb}, -{0xd6, 0xcc, 0x05, 0x60, 0xfd, 0xa9, 0x7d, 0x55, 0xb2, 0x49, 0x4e, 0x2a, 0x59, 0x13, 0xe3, 0xe4, 0x3c, 0xf7, 0x3e, 0x5e, 0x28, 0x3d, 0x15, 0xe4, 0x68, 0x2d, 0x23, 0x3e, 0x7c, 0x9b, 0x0b, 0x63}, -{0xb5, 0xf3, 0xed, 0x5f, 0x34, 0x48, 0x5d, 0xa3, 0xa4, 0x93, 0x10, 0xf0, 0x09, 0x8d, 0xfb, 0x71, 0x34, 0x5e, 0x0f, 0x6a, 0xc8, 0x42, 0x16, 0xc0, 0xe1, 0xb9, 0xed, 0x11, 0x09, 0x7c, 0x22, 0x30}, -{0x2b, 0xf5, 0xc0, 0xd8, 0x8b, 0x3a, 0xab, 0x2c, 0x57, 0x14, 0xb3, 0x3a, 0x40, 0x74, 0x44, 0x80, 0xcc, 0xc8, 0x1c, 0x14, 0xfb, 0xee, 0xe4, 0xca, 0xa2, 0x51, 0x08, 0xe7, 0x48, 0xbb, 0x2e, 0xab}, -{0x47, 0xa9, 0x2f, 0x39, 0xb0, 0x66, 0x18, 0xfe, 0x2c, 0xe2, 0xba, 0x83, 0xa0, 0x41, 0x96, 0x85, 0x50, 0xe6, 0x38, 0xd7, 0x31, 0x90, 0x68, 0xe6, 0x23, 0xbd, 0x21, 0x09, 0x5b, 0xa7, 0x75, 0x89}, -{0x41, 0xe4, 0x03, 0x29, 0x48, 0x33, 0xe0, 0x11, 0x71, 0x8a, 0x51, 0xa9, 0xf1, 0x31, 0x69, 0x2c, 0x28, 0xeb, 0xd2, 0x10, 0xc2, 0x1a, 0xfc, 0x81, 0x28, 0x39, 0x75, 0xf4, 0x97, 0x90, 0xc7, 0xaf}, -{0x7f, 0xae, 0x99, 0x35, 0x0c, 0x5a, 0x76, 0xd2, 0xb4, 0x9d, 0xf4, 0x29, 0xfe, 0x39, 0xd0, 0xda, 0x1f, 0xac, 0x24, 0x99, 0xd5, 0xf5, 0x8c, 0x6c, 0x0f, 0xb6, 0x93, 0xff, 0x66, 0xa5, 0xf6, 0x65}, -{0xc1, 0x1e, 0x31, 0x06, 0x0b, 0x9d, 0x57, 0xec, 0x36, 0x10, 0x80, 0x6d, 0x36, 0x89, 0x84, 0x45, 0xd5, 0x38, 0xc0, 0x4d, 0x7b, 0x98, 0xf6, 0x63, 0xce, 0x5a, 0xfd, 0xba, 0xab, 0x94, 0xb7, 0xfb}, -{0x7f, 0xf3, 0x7e, 0xc1, 0xef, 0x86, 0x1f, 0xf7, 0x05, 0x61, 0x95, 0x87, 0x34, 0xdf, 0xde, 0x31, 0x53, 0x0d, 0x80, 0x8c, 0x63, 0x2e, 0xe6, 0x2f, 0xdf, 0xee, 0x54, 0xa7, 0xb5, 0xb5, 0x45, 0x86}, -{0xf7, 0xf1, 0xe3, 0xcc, 0xda, 0xbc, 0x21, 0x9c, 0xb7, 0xef, 0xbe, 0x45, 0x6c, 0x87, 0xf3, 0x59, 0x76, 0xc9, 0x9c, 0x0d, 0xe9, 0xac, 0x10, 0x93, 0x46, 0xda, 0x1f, 0x91, 0xd3, 0x78, 0x1b, 0x53}, -{0x04, 0x7d, 0x85, 0x04, 0xb6, 0xb9, 0x21, 0x51, 0x19, 0x7d, 0x20, 0xc9, 0xe7, 0x9f, 0xc1, 0x81, 0x3e, 0xe4, 0xa0, 0xd5, 0xa2, 0x1d, 0x3c, 0x36, 0x66, 0x89, 0x01, 0x1a, 0x71, 0xe9, 0x2a, 0x8a}, -{0x47, 0x75, 0xd1, 0x26, 0xa4, 0x4b, 0x48, 0x95, 0x2d, 0x84, 0x5e, 0x43, 0x06, 0x7e, 0x6b, 0x13, 0x42, 0x6f, 0xdd, 0x77, 0x55, 0x25, 0x9d, 0x6a, 0xfc, 0x7f, 0x83, 0xc0, 0x82, 0xc2, 0xeb, 0x4c}, -{0x52, 0x44, 0x21, 0x4f, 0x79, 0xf9, 0xba, 0x27, 0x9e, 0x34, 0xd4, 0xfb, 0x35, 0x13, 0x7f, 0xc4, 0x06, 0xe6, 0xc7, 0x7d, 0x99, 0x51, 0x7e, 0xd4, 0xd2, 0x7d, 0x8e, 0x97, 0xf8, 0x1c, 0x34, 0x54}, -{0xf8, 0x73, 0x29, 0xbd, 0xc7, 0x2d, 0xaf, 0x8d, 0xdb, 0xac, 0xac, 0x28, 0xea, 0x24, 0x7a, 0xe1, 0x1a, 0x82, 0x97, 0x47, 0x4f, 0x9b, 0x59, 0x86, 0xcb, 0x27, 0xe5, 0xf9, 0x99, 0x1d, 0xf1, 0x43}, -{0x2d, 0x26, 0x7c, 0x41, 0xf6, 0x32, 0x27, 0x91, 0x10, 0x76, 0x96, 0x39, 0x57, 0x0f, 0xe3, 0xf5, 0x56, 0x9b, 0x81, 0xa3, 0x02, 0xc9, 0x1d, 0x46, 0x95, 0x19, 0x0b, 0x26, 0x3b, 0x60, 0xf0, 0xe4}, -{0x2f, 0x1e, 0x4e, 0xa2, 0x81, 0x48, 0x5e, 0x01, 0x55, 0x1b, 0x4f, 0x20, 0x56, 0x7b, 0x97, 0x27, 0xba, 0xae, 0xad, 0x60, 0x5f, 0xb6, 0x83, 0xd7, 0x37, 0x4a, 0x0d, 0x06, 0xeb, 0xa0, 0xf8, 0xbb}, -{0xe4, 0x85, 0x22, 0x61, 0x22, 0x3b, 0xa3, 0x05, 0x42, 0xa0, 0xb6, 0x0d, 0x73, 0xbf, 0xf9, 0xcd, 0x82, 0x6a, 0x9c, 0x9b, 0x74, 0x70, 0x47, 0x5c, 0x61, 0x80, 0x31, 0x25, 0x46, 0xa9, 0x4f, 0x21}, -{0xf2, 0xef, 0xc6, 0x69, 0x8f, 0x05, 0x36, 0x14, 0x8b, 0x56, 0x1d, 0x43, 0xb2, 0x22, 0xfb, 0x42, 0xb9, 0x1f, 0x8d, 0xd8, 0x83, 0x07, 0xb7, 0xff, 0x87, 0x09, 0x47, 0xf1, 0xb8, 0x61, 0x52, 0xbb}, -{0x21, 0xfb, 0x21, 0x50, 0xd1, 0x7b, 0xa2, 0x06, 0x4b, 0xe7, 0x52, 0xa8, 0x1f, 0xca, 0x68, 0xdf, 0x60, 0x62, 0x43, 0xeb, 0x75, 0x3c, 0x56, 0x9d, 0x97, 0x10, 0xc4, 0x24, 0x20, 0xba, 0xf4, 0x4d}, -{0x10, 0x21, 0x24, 0x06, 0xf8, 0xec, 0xc1, 0x2b, 0x09, 0x46, 0x00, 0x4c, 0x6c, 0x81, 0x01, 0x82, 0x67, 0xc8, 0x81, 0x68, 0x5a, 0x8a, 0x57, 0x6a, 0x7e, 0xb1, 0xb1, 0xf7, 0x6a, 0x7b, 0x4b, 0xae}, -{0xb8, 0x19, 0x6b, 0x10, 0x79, 0x4b, 0x3f, 0xe1, 0x50, 0xb3, 0xa1, 0xdb, 0x0f, 0x74, 0xd3, 0x82, 0xa1, 0x6c, 0xad, 0xdb, 0xb1, 0x0d, 0xd0, 0x20, 0xc2, 0xad, 0x8e, 0x74, 0xbe, 0xb1, 0x9f, 0xb4}, -{0xa8, 0x1e, 0x4e, 0xc5, 0xa9, 0x1e, 0x6b, 0x4d, 0xe2, 0x33, 0x46, 0x1f, 0xfd, 0xbf, 0x3c, 0x84, 0x77, 0x55, 0xcb, 0x1f, 0x64, 0xdd, 0x17, 0xdc, 0xe6, 0x35, 0xb4, 0xb9, 0xe7, 0x7d, 0x27, 0xdc}, -{0x84, 0x95, 0x42, 0x84, 0x3c, 0x8b, 0x00, 0xd8, 0x9c, 0x2c, 0x17, 0xa0, 0x72, 0x66, 0xf9, 0x15, 0x08, 0x0b, 0xc9, 0xf0, 0x48, 0x7c, 0x01, 0x09, 0x15, 0x2e, 0x42, 0x7b, 0x70, 0x82, 0x0d, 0x7a}, -{0x72, 0x12, 0x3c, 0xb5, 0x28, 0xc5, 0x67, 0xc4, 0xe3, 0x45, 0x56, 0x1f, 0xa9, 0x74, 0xe3, 0xcc, 0x87, 0x33, 0xbf, 0x9e, 0xe4, 0xc6, 0x37, 0x0b, 0x8f, 0x77, 0x7c, 0xe3, 0xa3, 0xa1, 0x02, 0xa3}, -{0xbd, 0x92, 0x94, 0x84, 0x09, 0xaa, 0x7b, 0x8e, 0xc0, 0xed, 0x3a, 0x07, 0x81, 0xa3, 0x71, 0x32, 0xec, 0x5d, 0xda, 0x02, 0x54, 0x3f, 0xe7, 0x2c, 0xed, 0xb5, 0xe8, 0xc0, 0xb9, 0x5a, 0xdd, 0x38}, -{0xfd, 0x00, 0x10, 0x47, 0x1a, 0x47, 0xad, 0xd1, 0x5b, 0x01, 0x5d, 0xcf, 0x12, 0xd4, 0xba, 0x20, 0x12, 0x7d, 0xd6, 0x6a, 0x99, 0x37, 0xde, 0x57, 0x79, 0x6a, 0x30, 0x3f, 0xc3, 0x92, 0x45, 0x86}, -{0x4c, 0x3b, 0x0f, 0xe9, 0x89, 0x90, 0xd3, 0x01, 0xac, 0x21, 0x87, 0x6f, 0x36, 0xf1, 0x3c, 0x74, 0xe0, 0xad, 0x9d, 0x6e, 0x2b, 0xb6, 0x5a, 0x22, 0x64, 0x78, 0x04, 0xca, 0x15, 0xa1, 0x8c, 0xfc}, -{0xbf, 0xb9, 0x78, 0x51, 0x6e, 0x2d, 0x39, 0x0e, 0x60, 0x99, 0x18, 0x16, 0x7b, 0x35, 0xe3, 0xea, 0xa5, 0x6c, 0x85, 0x10, 0x7a, 0x79, 0x31, 0xe3, 0xc3, 0x72, 0x3d, 0x46, 0x4a, 0xb1, 0x40, 0x6a}, -{0x41, 0x5f, 0x45, 0x83, 0x7a, 0xb3, 0xbf, 0x54, 0x4c, 0x6a, 0xa0, 0x99, 0x48, 0xfb, 0x93, 0x9a, 0xa9, 0x9f, 0x4e, 0x60, 0x61, 0x25, 0xea, 0xa3, 0xe3, 0x3e, 0xca, 0x60, 0xde, 0xa9, 0xce, 0x8e}, -{0xfd, 0xa3, 0xe5, 0x8e, 0x32, 0x92, 0xb9, 0xa4, 0x6c, 0x17, 0x80, 0x34, 0x87, 0xf8, 0xaf, 0xcd, 0xa8, 0xe5, 0x1e, 0x91, 0xbd, 0x2f, 0x89, 0x8e, 0x1e, 0xe8, 0x30, 0x48, 0xa8, 0x8d, 0xd7, 0xbc}, -{0x9c, 0x08, 0x4d, 0x07, 0x8a, 0x16, 0x6f, 0x65, 0xca, 0xd8, 0x80, 0x5a, 0x82, 0x6f, 0xe3, 0x28, 0x18, 0x13, 0x88, 0xee, 0xc4, 0xd7, 0xaf, 0x2f, 0xda, 0x1b, 0xe9, 0xa0, 0xf3, 0x74, 0x01, 0x60}, -{0x22, 0x77, 0x67, 0x74, 0x9f, 0x04, 0xfd, 0xb0, 0x1b, 0x4a, 0x9e, 0x87, 0xaa, 0x3c, 0x35, 0xa6, 0xc3, 0xf1, 0xb8, 0x62, 0xb1, 0xd9, 0x12, 0x33, 0x43, 0x55, 0x2d, 0xe8, 0x25, 0x7d, 0x7c, 0xaa}, -{0x53, 0x8f, 0xc3, 0xe7, 0xcc, 0x10, 0x26, 0x04, 0x1c, 0xe7, 0x08, 0xfd, 0x9a, 0xf0, 0xf8, 0x8a, 0x06, 0xc4, 0x62, 0x04, 0xa5, 0xd0, 0x7c, 0xfd, 0xd4, 0x99, 0x30, 0xbd, 0x29, 0x98, 0x59, 0x8e}, -{0x23, 0xc9, 0xce, 0x25, 0xf6, 0x0a, 0xd3, 0x61, 0x65, 0x42, 0xcd, 0x86, 0xb6, 0x76, 0x73, 0x47, 0x7f, 0xf2, 0x14, 0x45, 0x2b, 0x01, 0x66, 0x96, 0x35, 0xed, 0x82, 0xf7, 0x1a, 0xf1, 0x5d, 0x30}, -{0xac, 0x34, 0x97, 0xb2, 0xd8, 0xeb, 0x94, 0xd3, 0x22, 0x46, 0x08, 0x2e, 0x3f, 0x28, 0x09, 0xb3, 0x40, 0x1a, 0xf0, 0x8f, 0x7d, 0x30, 0x1a, 0x83, 0xd7, 0x7b, 0xbc, 0x13, 0x7c, 0xa2, 0xde, 0x5c}, -{0x92, 0x80, 0x45, 0xf0, 0x68, 0xab, 0x62, 0x83, 0xfd, 0x9b, 0x55, 0xaf, 0x83, 0xaf, 0x5f, 0x9f, 0x8b, 0x92, 0x4c, 0xb1, 0xb6, 0x2d, 0x12, 0x1a, 0xe9, 0x46, 0xa0, 0x0f, 0x0f, 0xd5, 0x4c, 0x82}, -{0x54, 0xa0, 0xde, 0x88, 0x10, 0xbd, 0x6f, 0x67, 0x14, 0xfc, 0xd1, 0x0d, 0x93, 0xb9, 0xe7, 0x07, 0x28, 0x14, 0x2d, 0xab, 0x50, 0x5c, 0x12, 0x83, 0xdc, 0x87, 0xb5, 0x52, 0x6a, 0x02, 0xf9, 0x61}, -{0xf5, 0xd6, 0xf2, 0x37, 0xb4, 0x66, 0x56, 0xe3, 0xca, 0xba, 0xac, 0x01, 0x50, 0x4c, 0x97, 0xa6, 0x2b, 0xb7, 0x14, 0x45, 0xb6, 0x54, 0x7c, 0x18, 0x29, 0xb7, 0xde, 0x4f, 0xf3, 0xae, 0xfd, 0x2}, -{0x81, 0x6f, 0x57, 0xd9, 0x7d, 0x97, 0x3f, 0xc6, 0x30, 0x61, 0x79, 0x5b, 0x26, 0x2d, 0x57, 0x22, 0xe8, 0xe7, 0xdc, 0x8d, 0xbf, 0xb2, 0xab, 0x51, 0x15, 0x4b, 0x7b, 0x57, 0x52, 0x70, 0xdc, 0x2d}, -{0xa9, 0xae, 0x65, 0x7f, 0x2c, 0x82, 0x95, 0x2b, 0xab, 0x45, 0x31, 0x85, 0x43, 0xe4, 0x12, 0x59, 0x45, 0x4e, 0x2c, 0x10, 0x9c, 0x13, 0xe6, 0xbe, 0x2a, 0x1e, 0x97, 0x0a, 0xce, 0xfa, 0xc6, 0x13}, -{0x0f, 0x32, 0x00, 0x3e, 0xa4, 0x48, 0xc1, 0xdf, 0x21, 0xe8, 0xf4, 0xec, 0x4e, 0xae, 0x7a, 0x68, 0x36, 0x68, 0x0a, 0x20, 0xb5, 0xa0, 0xd5, 0x2c, 0xec, 0x26, 0x2c, 0x95, 0x04, 0x50, 0xf9, 0x7}, -{0x5a, 0x28, 0xc1, 0x55, 0xfe, 0x77, 0x53, 0x06, 0xe7, 0x97, 0xcd, 0x1f, 0x65, 0xe5, 0xbe, 0xbe, 0x6a, 0x49, 0xdd, 0x0d, 0xce, 0x10, 0x04, 0x10, 0xf2, 0xcb, 0xe0, 0xad, 0xa4, 0xd7, 0x0d, 0x66}, -{0x89, 0x16, 0x45, 0xa3, 0xad, 0x26, 0xe6, 0xdc, 0xc6, 0xb9, 0x44, 0xb3, 0x74, 0x7c, 0x76, 0xe7, 0x0e, 0x56, 0xb8, 0x39, 0xe5, 0x75, 0xe5, 0x48, 0x23, 0x32, 0x93, 0xb2, 0x7c, 0xbf, 0x44, 0xad}, -{0x0c, 0xf2, 0x4f, 0x0e, 0x34, 0xeb, 0x55, 0xae, 0xa2, 0x60, 0x55, 0x46, 0xa3, 0x4e, 0x48, 0x0d, 0xb8, 0x34, 0x58, 0x2a, 0x80, 0x62, 0xc3, 0x07, 0x65, 0x76, 0x65, 0x34, 0xe6, 0xe9, 0x45, 0x69}, -{0x80, 0x4e, 0x3b, 0x2d, 0xea, 0x0b, 0x2c, 0x7b, 0x06, 0xfb, 0x0c, 0xb5, 0x63, 0xfc, 0x66, 0xf1, 0x0c, 0x95, 0xd0, 0x0e, 0x67, 0x65, 0xa8, 0x98, 0xa3, 0xa8, 0xe0, 0x1e, 0xeb, 0x5e, 0x65, 0x3c}, -{0xa2, 0x12, 0x84, 0xf7, 0xd7, 0x4e, 0x24, 0x3b, 0xbd, 0x7c, 0x61, 0x03, 0xbe, 0x8b, 0xeb, 0xeb, 0xde, 0x44, 0x09, 0xf2, 0x5c, 0xd2, 0x08, 0x90, 0x1d, 0x03, 0xf2, 0xaf, 0xa3, 0x22, 0xbc, 0xb1}, -{0x85, 0xd6, 0x13, 0x4e, 0x7e, 0x0c, 0x78, 0x9c, 0x59, 0x8b, 0x42, 0x3d, 0xa8, 0x57, 0x3e, 0x53, 0xb0, 0x82, 0xcb, 0xc9, 0x03, 0x01, 0xe9, 0x62, 0xbd, 0x01, 0x55, 0x73, 0x40, 0xa0, 0xc6, 0xd9}, -{0xaf, 0xca, 0xde, 0x50, 0xca, 0xf1, 0x6f, 0x6c, 0x6e, 0x0e, 0xca, 0x9b, 0xda, 0x54, 0x7d, 0x22, 0xa4, 0x04, 0x32, 0x17, 0x98, 0x63, 0x24, 0x62, 0x37, 0xe4, 0x09, 0x7d, 0x02, 0x15, 0x48, 0xed}, -{0x7c, 0x77, 0x9d, 0x79, 0xd4, 0x5e, 0x49, 0x5a, 0xd4, 0xb9, 0x8d, 0xf6, 0xb9, 0xb3, 0x4b, 0x44, 0x5e, 0xd3, 0x6a, 0x4a, 0x36, 0x9f, 0x1f, 0xd7, 0x1a, 0x5b, 0xec, 0x19, 0x45, 0xd9, 0x6c, 0x39}, -{0x2e, 0x75, 0xa8, 0x74, 0x8b, 0xcf, 0xdd, 0x43, 0x2d, 0xb2, 0x58, 0x1a, 0x20, 0xc1, 0x06, 0xcd, 0x76, 0x6a, 0x55, 0x6d, 0xac, 0x29, 0x33, 0x62, 0x3e, 0x3f, 0x72, 0xf4, 0xaf, 0xf2, 0x1c, 0x20}, -{0x3a, 0xb8, 0xac, 0xce, 0x82, 0x3b, 0x31, 0xff, 0xf5, 0x4f, 0x18, 0x95, 0x19, 0x82, 0xed, 0xec, 0x82, 0x76, 0xde, 0x4a, 0x91, 0x4c, 0x97, 0xc8, 0x18, 0xc4, 0xaa, 0x90, 0x65, 0xae, 0x99, 0xc1}, -{0x2c, 0x03, 0x66, 0x3b, 0xa4, 0xa8, 0x16, 0xe1, 0xd5, 0x33, 0xed, 0xc9, 0x53, 0xe4, 0xe0, 0xb2, 0xb5, 0xf1, 0x9f, 0xfa, 0x48, 0x61, 0x62, 0xdc, 0xd2, 0x20, 0x6e, 0xc9, 0x46, 0x8c, 0xe2, 0xcb}, -{0x4a, 0xde, 0x67, 0x61, 0x5f, 0xa6, 0x74, 0x60, 0xa0, 0x70, 0x9b, 0x9e, 0x81, 0x0f, 0x54, 0x76, 0xe8, 0x6a, 0xed, 0x5b, 0xaa, 0xbc, 0x04, 0x96, 0xc1, 0x5d, 0xeb, 0x28, 0xf5, 0x7c, 0xa5, 0x25}, -{0xf8, 0x4d, 0xac, 0xa3, 0xb0, 0x93, 0xa7, 0x32, 0x47, 0x21, 0x4c, 0x7e, 0xf1, 0xfb, 0x99, 0x0a, 0xb5, 0x4f, 0xf0, 0x6b, 0x9d, 0x3b, 0x69, 0xac, 0x73, 0xd9, 0x91, 0xf9, 0xdf, 0x79, 0x54, 0x4c}, + {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, + 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, + 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, + {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, + 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, + 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, + {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, + 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, + 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, + {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, + 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, + 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73}, + {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, + 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, + 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, + {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, + 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, + 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, + {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, + 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, + 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, + {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, + 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, + 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, + {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, + 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, + 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, + {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, + 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, + 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, + {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, + 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, + 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52}, + {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, + 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, + 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, + {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, + 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, + 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, + {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, + 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, + 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, + {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, + 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, + 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, + {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, + 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, + 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, + {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, + 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, + 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, + {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, + 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, + 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, + {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, + 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, + 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, + {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, + 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, + 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, + {0xab, 0x0f, 0x5c, 0xce, 0x2f, 0xaf, 0x6b, 0x90, 0x93, 0xf3, 0xb5, + 0xbe, 0xa9, 0x6a, 0x74, 0xa7, 0x70, 0xd2, 0x91, 0x68, 0xf7, 0x1f, + 0xe5, 0x3d, 0x19, 0x74, 0xf7, 0xa5, 0x10, 0x39, 0x63, 0xc1}, + {0x30, 0x73, 0x00, 0xed, 0x8d, 0x10, 0x65, 0x24, 0x7f, 0xa3, 0xdd, + 0x2a, 0x1b, 0x7c, 0x90, 0xa8, 0xb2, 0x6f, 0xaf, 0xad, 0xb6, 0xf7, + 0xa7, 0x5f, 0x91, 0x92, 0x97, 0xe5, 0xf1, 0xb1, 0x21, 0x96}, + {0x13, 0x02, 0x4a, 0xa0, 0xa0, 0xea, 0x70, 0xc8, 0x11, 0x52, 0x2d, + 0x67, 0x17, 0x41, 0xcd, 0x8c, 0x4e, 0xf6, 0x80, 0x31, 0x7c, 0x4d, + 0x5c, 0xa0, 0xf2, 0xfa, 0x3c, 0x4b, 0xb1, 0x85, 0xc5, 0xcd}, + {0x8e, 0x26, 0x84, 0x94, 0x40, 0xd8, 0xcd, 0xf9, 0xd0, 0x1a, 0x08, + 0x17, 0xaa, 0x0b, 0x57, 0x33, 0xf6, 0x48, 0xf0, 0x1f, 0xea, 0xfd, + 0x51, 0xb4, 0xac, 0x3d, 0x18, 0xad, 0x87, 0x3f, 0xb9, 0xa4}, + {0xf6, 0x9c, 0xe5, 0x0f, 0x3c, 0xdf, 0xa4, 0x1e, 0x00, 0x7e, 0xf3, + 0xb0, 0x29, 0xc4, 0x3b, 0xc7, 0x92, 0x3e, 0xb3, 0x78, 0x71, 0x7d, + 0xed, 0x96, 0x1c, 0x41, 0x5a, 0x4c, 0x82, 0x50, 0xc9, 0xa1}, + {0xe7, 0xa8, 0xd4, 0xed, 0x82, 0xd2, 0x60, 0x32, 0x54, 0x5a, 0xc2, + 0xc6, 0x73, 0x73, 0xfb, 0xf5, 0xfa, 0xa6, 0x8f, 0x2f, 0xb4, 0xb8, + 0x91, 0xe3, 0xe8, 0x11, 0x6a, 0xca, 0x08, 0xbf, 0x59, 0xe1}, + {0x26, 0xe5, 0x21, 0x0f, 0x8f, 0xc8, 0x77, 0x8e, 0xb7, 0x24, 0x97, + 0x32, 0x20, 0xa2, 0xbc, 0x85, 0xbe, 0x11, 0x10, 0xb8, 0x39, 0x8d, + 0xd2, 0x7e, 0x9d, 0x3a, 0xbc, 0xaf, 0x58, 0x1a, 0x48, 0x79}, + {0xe0, 0xa6, 0x06, 0xd1, 0x34, 0xb3, 0xbf, 0xfd, 0x72, 0x6f, 0x69, 0xf7, 0xd1, 0xa5, 0x68, 0x78, + 0xd8, 0xad, 0x15, 0x66, 0xd4, 0x1e, 0xdc, 0x30, 0x1d, 0xbe, 0xea, 0x09, 0x82, 0xf1, 0x3d, 0xb}, + {0xd6, 0xcc, 0x05, 0x60, 0xfd, 0xa9, 0x7d, 0x55, 0xb2, 0x49, 0x4e, + 0x2a, 0x59, 0x13, 0xe3, 0xe4, 0x3c, 0xf7, 0x3e, 0x5e, 0x28, 0x3d, + 0x15, 0xe4, 0x68, 0x2d, 0x23, 0x3e, 0x7c, 0x9b, 0x0b, 0x63}, + {0xb5, 0xf3, 0xed, 0x5f, 0x34, 0x48, 0x5d, 0xa3, 0xa4, 0x93, 0x10, + 0xf0, 0x09, 0x8d, 0xfb, 0x71, 0x34, 0x5e, 0x0f, 0x6a, 0xc8, 0x42, + 0x16, 0xc0, 0xe1, 0xb9, 0xed, 0x11, 0x09, 0x7c, 0x22, 0x30}, + {0x2b, 0xf5, 0xc0, 0xd8, 0x8b, 0x3a, 0xab, 0x2c, 0x57, 0x14, 0xb3, + 0x3a, 0x40, 0x74, 0x44, 0x80, 0xcc, 0xc8, 0x1c, 0x14, 0xfb, 0xee, + 0xe4, 0xca, 0xa2, 0x51, 0x08, 0xe7, 0x48, 0xbb, 0x2e, 0xab}, + {0x47, 0xa9, 0x2f, 0x39, 0xb0, 0x66, 0x18, 0xfe, 0x2c, 0xe2, 0xba, + 0x83, 0xa0, 0x41, 0x96, 0x85, 0x50, 0xe6, 0x38, 0xd7, 0x31, 0x90, + 0x68, 0xe6, 0x23, 0xbd, 0x21, 0x09, 0x5b, 0xa7, 0x75, 0x89}, + {0x41, 0xe4, 0x03, 0x29, 0x48, 0x33, 0xe0, 0x11, 0x71, 0x8a, 0x51, + 0xa9, 0xf1, 0x31, 0x69, 0x2c, 0x28, 0xeb, 0xd2, 0x10, 0xc2, 0x1a, + 0xfc, 0x81, 0x28, 0x39, 0x75, 0xf4, 0x97, 0x90, 0xc7, 0xaf}, + {0x7f, 0xae, 0x99, 0x35, 0x0c, 0x5a, 0x76, 0xd2, 0xb4, 0x9d, 0xf4, + 0x29, 0xfe, 0x39, 0xd0, 0xda, 0x1f, 0xac, 0x24, 0x99, 0xd5, 0xf5, + 0x8c, 0x6c, 0x0f, 0xb6, 0x93, 0xff, 0x66, 0xa5, 0xf6, 0x65}, + {0xc1, 0x1e, 0x31, 0x06, 0x0b, 0x9d, 0x57, 0xec, 0x36, 0x10, 0x80, + 0x6d, 0x36, 0x89, 0x84, 0x45, 0xd5, 0x38, 0xc0, 0x4d, 0x7b, 0x98, + 0xf6, 0x63, 0xce, 0x5a, 0xfd, 0xba, 0xab, 0x94, 0xb7, 0xfb}, + {0x7f, 0xf3, 0x7e, 0xc1, 0xef, 0x86, 0x1f, 0xf7, 0x05, 0x61, 0x95, + 0x87, 0x34, 0xdf, 0xde, 0x31, 0x53, 0x0d, 0x80, 0x8c, 0x63, 0x2e, + 0xe6, 0x2f, 0xdf, 0xee, 0x54, 0xa7, 0xb5, 0xb5, 0x45, 0x86}, + {0xf7, 0xf1, 0xe3, 0xcc, 0xda, 0xbc, 0x21, 0x9c, 0xb7, 0xef, 0xbe, + 0x45, 0x6c, 0x87, 0xf3, 0x59, 0x76, 0xc9, 0x9c, 0x0d, 0xe9, 0xac, + 0x10, 0x93, 0x46, 0xda, 0x1f, 0x91, 0xd3, 0x78, 0x1b, 0x53}, + {0x04, 0x7d, 0x85, 0x04, 0xb6, 0xb9, 0x21, 0x51, 0x19, 0x7d, 0x20, + 0xc9, 0xe7, 0x9f, 0xc1, 0x81, 0x3e, 0xe4, 0xa0, 0xd5, 0xa2, 0x1d, + 0x3c, 0x36, 0x66, 0x89, 0x01, 0x1a, 0x71, 0xe9, 0x2a, 0x8a}, + {0x47, 0x75, 0xd1, 0x26, 0xa4, 0x4b, 0x48, 0x95, 0x2d, 0x84, 0x5e, + 0x43, 0x06, 0x7e, 0x6b, 0x13, 0x42, 0x6f, 0xdd, 0x77, 0x55, 0x25, + 0x9d, 0x6a, 0xfc, 0x7f, 0x83, 0xc0, 0x82, 0xc2, 0xeb, 0x4c}, + {0x52, 0x44, 0x21, 0x4f, 0x79, 0xf9, 0xba, 0x27, 0x9e, 0x34, 0xd4, + 0xfb, 0x35, 0x13, 0x7f, 0xc4, 0x06, 0xe6, 0xc7, 0x7d, 0x99, 0x51, + 0x7e, 0xd4, 0xd2, 0x7d, 0x8e, 0x97, 0xf8, 0x1c, 0x34, 0x54}, + {0xf8, 0x73, 0x29, 0xbd, 0xc7, 0x2d, 0xaf, 0x8d, 0xdb, 0xac, 0xac, + 0x28, 0xea, 0x24, 0x7a, 0xe1, 0x1a, 0x82, 0x97, 0x47, 0x4f, 0x9b, + 0x59, 0x86, 0xcb, 0x27, 0xe5, 0xf9, 0x99, 0x1d, 0xf1, 0x43}, + {0x2d, 0x26, 0x7c, 0x41, 0xf6, 0x32, 0x27, 0x91, 0x10, 0x76, 0x96, + 0x39, 0x57, 0x0f, 0xe3, 0xf5, 0x56, 0x9b, 0x81, 0xa3, 0x02, 0xc9, + 0x1d, 0x46, 0x95, 0x19, 0x0b, 0x26, 0x3b, 0x60, 0xf0, 0xe4}, + {0x2f, 0x1e, 0x4e, 0xa2, 0x81, 0x48, 0x5e, 0x01, 0x55, 0x1b, 0x4f, + 0x20, 0x56, 0x7b, 0x97, 0x27, 0xba, 0xae, 0xad, 0x60, 0x5f, 0xb6, + 0x83, 0xd7, 0x37, 0x4a, 0x0d, 0x06, 0xeb, 0xa0, 0xf8, 0xbb}, + {0xe4, 0x85, 0x22, 0x61, 0x22, 0x3b, 0xa3, 0x05, 0x42, 0xa0, 0xb6, + 0x0d, 0x73, 0xbf, 0xf9, 0xcd, 0x82, 0x6a, 0x9c, 0x9b, 0x74, 0x70, + 0x47, 0x5c, 0x61, 0x80, 0x31, 0x25, 0x46, 0xa9, 0x4f, 0x21}, + {0xf2, 0xef, 0xc6, 0x69, 0x8f, 0x05, 0x36, 0x14, 0x8b, 0x56, 0x1d, + 0x43, 0xb2, 0x22, 0xfb, 0x42, 0xb9, 0x1f, 0x8d, 0xd8, 0x83, 0x07, + 0xb7, 0xff, 0x87, 0x09, 0x47, 0xf1, 0xb8, 0x61, 0x52, 0xbb}, + {0x21, 0xfb, 0x21, 0x50, 0xd1, 0x7b, 0xa2, 0x06, 0x4b, 0xe7, 0x52, + 0xa8, 0x1f, 0xca, 0x68, 0xdf, 0x60, 0x62, 0x43, 0xeb, 0x75, 0x3c, + 0x56, 0x9d, 0x97, 0x10, 0xc4, 0x24, 0x20, 0xba, 0xf4, 0x4d}, + {0x10, 0x21, 0x24, 0x06, 0xf8, 0xec, 0xc1, 0x2b, 0x09, 0x46, 0x00, + 0x4c, 0x6c, 0x81, 0x01, 0x82, 0x67, 0xc8, 0x81, 0x68, 0x5a, 0x8a, + 0x57, 0x6a, 0x7e, 0xb1, 0xb1, 0xf7, 0x6a, 0x7b, 0x4b, 0xae}, + {0xb8, 0x19, 0x6b, 0x10, 0x79, 0x4b, 0x3f, 0xe1, 0x50, 0xb3, 0xa1, + 0xdb, 0x0f, 0x74, 0xd3, 0x82, 0xa1, 0x6c, 0xad, 0xdb, 0xb1, 0x0d, + 0xd0, 0x20, 0xc2, 0xad, 0x8e, 0x74, 0xbe, 0xb1, 0x9f, 0xb4}, + {0xa8, 0x1e, 0x4e, 0xc5, 0xa9, 0x1e, 0x6b, 0x4d, 0xe2, 0x33, 0x46, + 0x1f, 0xfd, 0xbf, 0x3c, 0x84, 0x77, 0x55, 0xcb, 0x1f, 0x64, 0xdd, + 0x17, 0xdc, 0xe6, 0x35, 0xb4, 0xb9, 0xe7, 0x7d, 0x27, 0xdc}, + {0x84, 0x95, 0x42, 0x84, 0x3c, 0x8b, 0x00, 0xd8, 0x9c, 0x2c, 0x17, + 0xa0, 0x72, 0x66, 0xf9, 0x15, 0x08, 0x0b, 0xc9, 0xf0, 0x48, 0x7c, + 0x01, 0x09, 0x15, 0x2e, 0x42, 0x7b, 0x70, 0x82, 0x0d, 0x7a}, + {0x72, 0x12, 0x3c, 0xb5, 0x28, 0xc5, 0x67, 0xc4, 0xe3, 0x45, 0x56, + 0x1f, 0xa9, 0x74, 0xe3, 0xcc, 0x87, 0x33, 0xbf, 0x9e, 0xe4, 0xc6, + 0x37, 0x0b, 0x8f, 0x77, 0x7c, 0xe3, 0xa3, 0xa1, 0x02, 0xa3}, + {0xbd, 0x92, 0x94, 0x84, 0x09, 0xaa, 0x7b, 0x8e, 0xc0, 0xed, 0x3a, + 0x07, 0x81, 0xa3, 0x71, 0x32, 0xec, 0x5d, 0xda, 0x02, 0x54, 0x3f, + 0xe7, 0x2c, 0xed, 0xb5, 0xe8, 0xc0, 0xb9, 0x5a, 0xdd, 0x38}, + {0xfd, 0x00, 0x10, 0x47, 0x1a, 0x47, 0xad, 0xd1, 0x5b, 0x01, 0x5d, + 0xcf, 0x12, 0xd4, 0xba, 0x20, 0x12, 0x7d, 0xd6, 0x6a, 0x99, 0x37, + 0xde, 0x57, 0x79, 0x6a, 0x30, 0x3f, 0xc3, 0x92, 0x45, 0x86}, + {0x4c, 0x3b, 0x0f, 0xe9, 0x89, 0x90, 0xd3, 0x01, 0xac, 0x21, 0x87, + 0x6f, 0x36, 0xf1, 0x3c, 0x74, 0xe0, 0xad, 0x9d, 0x6e, 0x2b, 0xb6, + 0x5a, 0x22, 0x64, 0x78, 0x04, 0xca, 0x15, 0xa1, 0x8c, 0xfc}, + {0xbf, 0xb9, 0x78, 0x51, 0x6e, 0x2d, 0x39, 0x0e, 0x60, 0x99, 0x18, + 0x16, 0x7b, 0x35, 0xe3, 0xea, 0xa5, 0x6c, 0x85, 0x10, 0x7a, 0x79, + 0x31, 0xe3, 0xc3, 0x72, 0x3d, 0x46, 0x4a, 0xb1, 0x40, 0x6a}, + {0x41, 0x5f, 0x45, 0x83, 0x7a, 0xb3, 0xbf, 0x54, 0x4c, 0x6a, 0xa0, + 0x99, 0x48, 0xfb, 0x93, 0x9a, 0xa9, 0x9f, 0x4e, 0x60, 0x61, 0x25, + 0xea, 0xa3, 0xe3, 0x3e, 0xca, 0x60, 0xde, 0xa9, 0xce, 0x8e}, + {0xfd, 0xa3, 0xe5, 0x8e, 0x32, 0x92, 0xb9, 0xa4, 0x6c, 0x17, 0x80, + 0x34, 0x87, 0xf8, 0xaf, 0xcd, 0xa8, 0xe5, 0x1e, 0x91, 0xbd, 0x2f, + 0x89, 0x8e, 0x1e, 0xe8, 0x30, 0x48, 0xa8, 0x8d, 0xd7, 0xbc}, + {0x9c, 0x08, 0x4d, 0x07, 0x8a, 0x16, 0x6f, 0x65, 0xca, 0xd8, 0x80, + 0x5a, 0x82, 0x6f, 0xe3, 0x28, 0x18, 0x13, 0x88, 0xee, 0xc4, 0xd7, + 0xaf, 0x2f, 0xda, 0x1b, 0xe9, 0xa0, 0xf3, 0x74, 0x01, 0x60}, + {0x22, 0x77, 0x67, 0x74, 0x9f, 0x04, 0xfd, 0xb0, 0x1b, 0x4a, 0x9e, + 0x87, 0xaa, 0x3c, 0x35, 0xa6, 0xc3, 0xf1, 0xb8, 0x62, 0xb1, 0xd9, + 0x12, 0x33, 0x43, 0x55, 0x2d, 0xe8, 0x25, 0x7d, 0x7c, 0xaa}, + {0x53, 0x8f, 0xc3, 0xe7, 0xcc, 0x10, 0x26, 0x04, 0x1c, 0xe7, 0x08, + 0xfd, 0x9a, 0xf0, 0xf8, 0x8a, 0x06, 0xc4, 0x62, 0x04, 0xa5, 0xd0, + 0x7c, 0xfd, 0xd4, 0x99, 0x30, 0xbd, 0x29, 0x98, 0x59, 0x8e}, + {0x23, 0xc9, 0xce, 0x25, 0xf6, 0x0a, 0xd3, 0x61, 0x65, 0x42, 0xcd, + 0x86, 0xb6, 0x76, 0x73, 0x47, 0x7f, 0xf2, 0x14, 0x45, 0x2b, 0x01, + 0x66, 0x96, 0x35, 0xed, 0x82, 0xf7, 0x1a, 0xf1, 0x5d, 0x30}, + {0xac, 0x34, 0x97, 0xb2, 0xd8, 0xeb, 0x94, 0xd3, 0x22, 0x46, 0x08, + 0x2e, 0x3f, 0x28, 0x09, 0xb3, 0x40, 0x1a, 0xf0, 0x8f, 0x7d, 0x30, + 0x1a, 0x83, 0xd7, 0x7b, 0xbc, 0x13, 0x7c, 0xa2, 0xde, 0x5c}, + {0x92, 0x80, 0x45, 0xf0, 0x68, 0xab, 0x62, 0x83, 0xfd, 0x9b, 0x55, + 0xaf, 0x83, 0xaf, 0x5f, 0x9f, 0x8b, 0x92, 0x4c, 0xb1, 0xb6, 0x2d, + 0x12, 0x1a, 0xe9, 0x46, 0xa0, 0x0f, 0x0f, 0xd5, 0x4c, 0x82}, + {0x54, 0xa0, 0xde, 0x88, 0x10, 0xbd, 0x6f, 0x67, 0x14, 0xfc, 0xd1, + 0x0d, 0x93, 0xb9, 0xe7, 0x07, 0x28, 0x14, 0x2d, 0xab, 0x50, 0x5c, + 0x12, 0x83, 0xdc, 0x87, 0xb5, 0x52, 0x6a, 0x02, 0xf9, 0x61}, + {0xf5, 0xd6, 0xf2, 0x37, 0xb4, 0x66, 0x56, 0xe3, 0xca, 0xba, 0xac, 0x01, 0x50, 0x4c, 0x97, 0xa6, + 0x2b, 0xb7, 0x14, 0x45, 0xb6, 0x54, 0x7c, 0x18, 0x29, 0xb7, 0xde, 0x4f, 0xf3, 0xae, 0xfd, 0x2}, + {0x81, 0x6f, 0x57, 0xd9, 0x7d, 0x97, 0x3f, 0xc6, 0x30, 0x61, 0x79, + 0x5b, 0x26, 0x2d, 0x57, 0x22, 0xe8, 0xe7, 0xdc, 0x8d, 0xbf, 0xb2, + 0xab, 0x51, 0x15, 0x4b, 0x7b, 0x57, 0x52, 0x70, 0xdc, 0x2d}, + {0xa9, 0xae, 0x65, 0x7f, 0x2c, 0x82, 0x95, 0x2b, 0xab, 0x45, 0x31, + 0x85, 0x43, 0xe4, 0x12, 0x59, 0x45, 0x4e, 0x2c, 0x10, 0x9c, 0x13, + 0xe6, 0xbe, 0x2a, 0x1e, 0x97, 0x0a, 0xce, 0xfa, 0xc6, 0x13}, + {0x0f, 0x32, 0x00, 0x3e, 0xa4, 0x48, 0xc1, 0xdf, 0x21, 0xe8, 0xf4, 0xec, 0x4e, 0xae, 0x7a, 0x68, + 0x36, 0x68, 0x0a, 0x20, 0xb5, 0xa0, 0xd5, 0x2c, 0xec, 0x26, 0x2c, 0x95, 0x04, 0x50, 0xf9, 0x7}, + {0x5a, 0x28, 0xc1, 0x55, 0xfe, 0x77, 0x53, 0x06, 0xe7, 0x97, 0xcd, + 0x1f, 0x65, 0xe5, 0xbe, 0xbe, 0x6a, 0x49, 0xdd, 0x0d, 0xce, 0x10, + 0x04, 0x10, 0xf2, 0xcb, 0xe0, 0xad, 0xa4, 0xd7, 0x0d, 0x66}, + {0x89, 0x16, 0x45, 0xa3, 0xad, 0x26, 0xe6, 0xdc, 0xc6, 0xb9, 0x44, + 0xb3, 0x74, 0x7c, 0x76, 0xe7, 0x0e, 0x56, 0xb8, 0x39, 0xe5, 0x75, + 0xe5, 0x48, 0x23, 0x32, 0x93, 0xb2, 0x7c, 0xbf, 0x44, 0xad}, + {0x0c, 0xf2, 0x4f, 0x0e, 0x34, 0xeb, 0x55, 0xae, 0xa2, 0x60, 0x55, + 0x46, 0xa3, 0x4e, 0x48, 0x0d, 0xb8, 0x34, 0x58, 0x2a, 0x80, 0x62, + 0xc3, 0x07, 0x65, 0x76, 0x65, 0x34, 0xe6, 0xe9, 0x45, 0x69}, + {0x80, 0x4e, 0x3b, 0x2d, 0xea, 0x0b, 0x2c, 0x7b, 0x06, 0xfb, 0x0c, + 0xb5, 0x63, 0xfc, 0x66, 0xf1, 0x0c, 0x95, 0xd0, 0x0e, 0x67, 0x65, + 0xa8, 0x98, 0xa3, 0xa8, 0xe0, 0x1e, 0xeb, 0x5e, 0x65, 0x3c}, + {0xa2, 0x12, 0x84, 0xf7, 0xd7, 0x4e, 0x24, 0x3b, 0xbd, 0x7c, 0x61, + 0x03, 0xbe, 0x8b, 0xeb, 0xeb, 0xde, 0x44, 0x09, 0xf2, 0x5c, 0xd2, + 0x08, 0x90, 0x1d, 0x03, 0xf2, 0xaf, 0xa3, 0x22, 0xbc, 0xb1}, + {0x85, 0xd6, 0x13, 0x4e, 0x7e, 0x0c, 0x78, 0x9c, 0x59, 0x8b, 0x42, + 0x3d, 0xa8, 0x57, 0x3e, 0x53, 0xb0, 0x82, 0xcb, 0xc9, 0x03, 0x01, + 0xe9, 0x62, 0xbd, 0x01, 0x55, 0x73, 0x40, 0xa0, 0xc6, 0xd9}, + {0xaf, 0xca, 0xde, 0x50, 0xca, 0xf1, 0x6f, 0x6c, 0x6e, 0x0e, 0xca, + 0x9b, 0xda, 0x54, 0x7d, 0x22, 0xa4, 0x04, 0x32, 0x17, 0x98, 0x63, + 0x24, 0x62, 0x37, 0xe4, 0x09, 0x7d, 0x02, 0x15, 0x48, 0xed}, + {0x7c, 0x77, 0x9d, 0x79, 0xd4, 0x5e, 0x49, 0x5a, 0xd4, 0xb9, 0x8d, + 0xf6, 0xb9, 0xb3, 0x4b, 0x44, 0x5e, 0xd3, 0x6a, 0x4a, 0x36, 0x9f, + 0x1f, 0xd7, 0x1a, 0x5b, 0xec, 0x19, 0x45, 0xd9, 0x6c, 0x39}, + {0x2e, 0x75, 0xa8, 0x74, 0x8b, 0xcf, 0xdd, 0x43, 0x2d, 0xb2, 0x58, + 0x1a, 0x20, 0xc1, 0x06, 0xcd, 0x76, 0x6a, 0x55, 0x6d, 0xac, 0x29, + 0x33, 0x62, 0x3e, 0x3f, 0x72, 0xf4, 0xaf, 0xf2, 0x1c, 0x20}, + {0x3a, 0xb8, 0xac, 0xce, 0x82, 0x3b, 0x31, 0xff, 0xf5, 0x4f, 0x18, + 0x95, 0x19, 0x82, 0xed, 0xec, 0x82, 0x76, 0xde, 0x4a, 0x91, 0x4c, + 0x97, 0xc8, 0x18, 0xc4, 0xaa, 0x90, 0x65, 0xae, 0x99, 0xc1}, + {0x2c, 0x03, 0x66, 0x3b, 0xa4, 0xa8, 0x16, 0xe1, 0xd5, 0x33, 0xed, + 0xc9, 0x53, 0xe4, 0xe0, 0xb2, 0xb5, 0xf1, 0x9f, 0xfa, 0x48, 0x61, + 0x62, 0xdc, 0xd2, 0x20, 0x6e, 0xc9, 0x46, 0x8c, 0xe2, 0xcb}, + {0x4a, 0xde, 0x67, 0x61, 0x5f, 0xa6, 0x74, 0x60, 0xa0, 0x70, 0x9b, + 0x9e, 0x81, 0x0f, 0x54, 0x76, 0xe8, 0x6a, 0xed, 0x5b, 0xaa, 0xbc, + 0x04, 0x96, 0xc1, 0x5d, 0xeb, 0x28, 0xf5, 0x7c, 0xa5, 0x25}, + {0xf8, 0x4d, 0xac, 0xa3, 0xb0, 0x93, 0xa7, 0x32, 0x47, 0x21, 0x4c, + 0x7e, 0xf1, 0xfb, 0x99, 0x0a, 0xb5, 0x4f, 0xf0, 0x6b, 0x9d, 0x3b, + 0x69, 0xac, 0x73, 0xd9, 0x91, 0xf9, 0xdf, 0x79, 0x54, 0x4c}, }; enum { From 562e5257746b030b55d8dd2a1f0f0333bd9b8fa8 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 3 Oct 2022 21:44:17 +0200 Subject: [PATCH 51/83] Bump version --- MakefileLocal.mk | 4 ++-- ledgerjs-fio/src/interactions/getVersion.ts | 8 ++++---- test-integration/getVersion.js | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/MakefileLocal.mk b/MakefileLocal.mk index 079fcd25..dd654ee8 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -20,9 +20,9 @@ $(error Environment variable BOLOS_SDK is not set) endif APPNAME = "FIO" -APPVERSION_M = 0 +APPVERSION_M = 1 APPVERSION_N = 0 -APPVERSION_P = 2 +APPVERSION_P = 0 APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" APPPATH = "44'/235'" diff --git a/ledgerjs-fio/src/interactions/getVersion.ts b/ledgerjs-fio/src/interactions/getVersion.ts index 3e5aaad6..211f0f99 100644 --- a/ledgerjs-fio/src/interactions/getVersion.ts +++ b/ledgerjs-fio/src/interactions/getVersion.ts @@ -36,12 +36,12 @@ export function* getVersion(): Interaction { export function getCompatibility(version: Version): DeviceCompatibility { // We restrict forward compatibility only to backward-compatible semver changes - const v0_0 = isLedgerAppVersionAtLeast(version, 0, 0) && - isLedgerAppVersionAtMost(version, 0, Infinity) + const v1_0 = isLedgerAppVersionAtLeast(version, 1, 0) && + isLedgerAppVersionAtMost(version, 1, 0) return { - isCompatible: v0_0, - recommendedVersion: v0_0 ? null : '0.0', + isCompatible: v1_0, + recommendedVersion: v1_0 ? null : '1.0', } } diff --git a/test-integration/getVersion.js b/test-integration/getVersion.js index 7413f03b..107eaacf 100644 --- a/test-integration/getVersion.js +++ b/test-integration/getVersion.js @@ -17,8 +17,9 @@ await device.makeStartingScreenshot(); testStep(" - - -", "await app.runTests()"); const {version, compatibility} = await app.getVersion(); -assert.equal(version.major, 0) +assert.equal(version.major, 1) assert.equal(version.minor, 0) +assert.equal(version.patch, 0) assert.equal(compatibility.isCompatible, true) assert.equal(compatibility.recommendedVersion, null) From 320cf6d1ff3c4fb4ceace77c29913967dc58cceb Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 7 Oct 2022 10:21:02 +0200 Subject: [PATCH 52/83] Show data POLICY_SHOW_BEFORE_RESPONSE_IF_NONEMPTY --- src/securityPolicy.h | 1 + src/signTransaction.c | 2 ++ .../signTransactionCommandsShowData.js | 32 ++++++++++++++++++ .../nanos.29.png | Bin 0 -> 322 bytes .../nanos.30.png | Bin 0 -> 278 bytes .../nanos.31.png | Bin 0 -> 426 bytes 6 files changed, 35 insertions(+) create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionCommandsShowData/nanos.31.png diff --git a/src/securityPolicy.h b/src/securityPolicy.h index c0d1108d..d360a9c9 100644 --- a/src/securityPolicy.h +++ b/src/securityPolicy.h @@ -11,6 +11,7 @@ typedef enum { POLICY_PROMPT_BEFORE_RESPONSE = 3, POLICY_PROMPT_WARN_UNUSUAL = 4, POLICY_SHOW_BEFORE_RESPONSE = 5, // Show on display but do not ask for explicit confirmation + POLICY_SHOW_BEFORE_RESPONSE_IF_NONEMPTY = 6, } security_policy_t; security_policy_t policyForGetPublicKey(const bip44_path_t* pathSpec, get_key_p1_t show_or_not); diff --git a/src/signTransaction.c b/src/signTransaction.c index 3cdcbb0e..2f1e9a8e 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -440,6 +440,8 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, } CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_SIMPLE_STEP_RESPOND); CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_SIMPLE_STEP_DISPLAY_DETAILS); + CASE(POLICY_SHOW_BEFORE_RESPONSE_IF_NONEMPTY, + strnlen(ctx->value, SIZEOF(ctx->value)) == 0 ? HANDLE_SIMPLE_STEP_RESPOND : HANDLE_SIMPLE_STEP_DISPLAY_DETAILS) default: THROW(ERR_NOT_IMPLEMENTED); #undef CASE diff --git a/test-integration/signTransactionCommandsShowData.js b/test-integration/signTransactionCommandsShowData.js index 1b8c1937..e5d982a8 100644 --- a/test-integration/signTransactionCommandsShowData.js +++ b/test-integration/signTransactionCommandsShowData.js @@ -278,6 +278,38 @@ testStep(" - - -", "UInt64 incorrect length"); await device.makeStartingScreenshot(); } //------------------------------------------------------------------------------------- +testStep(" - - -", "Policy show if not empty empty check"); +{ + //INIT chainId=b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + const buffer11 = getAPDUDataBuffer("", "b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e052c000080eb000080000000800000000000000000"); + const promise11 = transport.send(215, 0x20, 0x01, 0, buffer11); + await device.curlScreenShot(); + device.curlButton("both", "Confirm chain"); //!!!!!! + const response11 = await promise11; + assert.equal(response11.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 06-policy, Key = "String" (06537472696e67) + const buffer16 = getAPDUDataBuffer("0201000000000000000000000000000000000606537472696e67", ""); + const promise16 = transport.send(215, 0x20, 0x04, 0, buffer16); + const response16 = await promise16; + assert.equal(response16.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 06-policy, Key = "String" (06537472696e67) + const buffer17 = getAPDUDataBuffer("0201000000000000000000000000000000000606537472696e67", "53"); + const promise17 = transport.send(215, 0x20, 0x04, 0, buffer17); + await device.curlScreenShot(); + device.curlButton("both", "Comfirm String"); + const response17 = await promise17; + assert.equal(response17.toString("hex"), "9000"); + + //SHOW DATA 02-string, 01-no validation, 0000000000000000-min, 0000000000000000-max, 06-policy, Key = "String" (06537472696e67) + const buffer18 = getAPDUDataBuffer("0201000000000000000000000000000000000606537472696e67", "ff"); + const promise18 = transport.send(215, 0x20, 0x04, 0, buffer18); + await assert.rejects(promise18, err(0x6e07)); + + await device.makeStartingScreenshot(); +} +//------------------------------------------------------------------------------------- await transport.close(); diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.29.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..076a821e03587e469d3c6332c0b098513e95630d GIT binary patch literal 322 zcmV-I0lof-P)%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionCommandsShowData/nanos.30.png b/test-integration/snapshots/signTransactionCommandsShowData/nanos.30.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c757e74f4ec8d27fcb038764df172a97052cf4 GIT binary patch literal 278 zcmV+x0qOpUP)ePu3dgx9M>PB77%I$tp$n~bv#eE+C*iDc3w z8KoTfQw}^u>jXIGdkcyn`w+bnQK%h4ycPDppjRPsK#rvcM8=!|@*{{J>fg{7%o|@s cL`3A{{*AnED1|E+rT_o{07*qoM6N<$f_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI Date: Fri, 7 Oct 2022 11:39:00 +0200 Subject: [PATCH 53/83] Fio request id is not displayed if empty in recordobt --- .../transactionTemplates/commands.ts | 18 +++++++ .../template_recordobt.ts | 4 +- src/signTransaction.c | 5 +- src/signTransactionIntegrity.c | 48 +++++++++--------- test-integration/signTransactionRecordobt.js | 5 +- .../signTransactionRecordobt/nanos.44.png | Bin 279 -> 467 bytes .../signTransactionRecordobt/nanos.45.png | Bin 467 -> 467 bytes .../signTransactionRecordobt/nanos.46.png | Bin 467 -> 414 bytes .../signTransactionRecordobt/nanos.47.png | Bin 414 -> 455 bytes .../signTransactionRecordobt/nanos.48.png | Bin 455 -> 432 bytes .../signTransactionRecordobt/nanos.49.png | Bin 432 -> 425 bytes .../signTransactionRecordobt/nanos.50.png | Bin 425 -> 382 bytes .../signTransactionRecordobt/nanos.51.png | Bin 382 -> 317 bytes .../signTransactionRecordobt/nanos.52.png | Bin 317 -> 325 bytes .../signTransactionRecordobt/nanos.53.png | Bin 325 -> 290 bytes .../signTransactionRecordobt/nanos.54.png | Bin 290 -> 278 bytes .../signTransactionRecordobt/nanos.55.png | Bin 278 -> 447 bytes .../signTransactionRecordobt/nanos.56.png | Bin 447 -> 377 bytes .../signTransactionRecordobt/nanos.57.png | Bin 377 -> 393 bytes .../signTransactionRecordobt/nanos.58.png | Bin 393 -> 424 bytes .../signTransactionRecordobt/nanos.59.png | Bin 424 -> 356 bytes .../signTransactionRecordobt/nanos.60.png | Bin 356 -> 426 bytes .../signTransactionRecordobt/nanos.61.png | Bin 426 -> 314 bytes .../signTransactionRecordobt/nanos.62.png | Bin 314 -> 357 bytes .../signTransactionRecordobt/nanos.63.png | Bin 357 -> 467 bytes .../signTransactionRecordobt/nanos.64.png | Bin 279 -> 467 bytes .../signTransactionRecordobt/nanos.65.png | Bin 467 -> 414 bytes .../signTransactionRecordobt/nanos.66.png | Bin 467 -> 455 bytes .../signTransactionRecordobt/nanos.67.png | Bin 414 -> 432 bytes .../signTransactionRecordobt/nanos.68.png | Bin 455 -> 425 bytes .../signTransactionRecordobt/nanos.69.png | Bin 432 -> 382 bytes .../signTransactionRecordobt/nanos.70.png | Bin 425 -> 317 bytes .../signTransactionRecordobt/nanos.71.png | Bin 382 -> 325 bytes .../signTransactionRecordobt/nanos.72.png | Bin 317 -> 290 bytes .../signTransactionRecordobt/nanos.73.png | Bin 325 -> 278 bytes .../signTransactionRecordobt/nanos.74.png | Bin 290 -> 447 bytes .../signTransactionRecordobt/nanos.75.png | Bin 278 -> 377 bytes .../signTransactionRecordobt/nanos.76.png | Bin 447 -> 393 bytes .../signTransactionRecordobt/nanos.77.png | Bin 377 -> 424 bytes .../signTransactionRecordobt/nanos.78.png | Bin 393 -> 356 bytes .../signTransactionRecordobt/nanos.79.png | Bin 424 -> 426 bytes .../signTransactionRecordobt/nanos.80.png | Bin 356 -> 0 bytes .../signTransactionRecordobt/nanos.81.png | Bin 426 -> 0 bytes .../signTransactionRecordobt/nanox.50.png | Bin 336 -> 539 bytes .../signTransactionRecordobt/nanox.51.png | Bin 539 -> 540 bytes .../signTransactionRecordobt/nanox.52.png | Bin 540 -> 488 bytes .../signTransactionRecordobt/nanox.53.png | Bin 488 -> 976 bytes .../signTransactionRecordobt/nanox.54.png | Bin 976 -> 455 bytes .../signTransactionRecordobt/nanox.55.png | Bin 455 -> 564 bytes .../signTransactionRecordobt/nanox.56.png | Bin 564 -> 580 bytes .../signTransactionRecordobt/nanox.57.png | Bin 580 -> 445 bytes .../signTransactionRecordobt/nanox.58.png | Bin 445 -> 376 bytes .../signTransactionRecordobt/nanox.59.png | Bin 376 -> 382 bytes .../signTransactionRecordobt/nanox.60.png | Bin 382 -> 345 bytes .../signTransactionRecordobt/nanox.61.png | Bin 345 -> 333 bytes .../signTransactionRecordobt/nanox.62.png | Bin 333 -> 953 bytes .../signTransactionRecordobt/nanox.63.png | Bin 953 -> 498 bytes .../signTransactionRecordobt/nanox.64.png | Bin 498 -> 526 bytes .../signTransactionRecordobt/nanox.65.png | Bin 526 -> 462 bytes .../signTransactionRecordobt/nanox.66.png | Bin 462 -> 937 bytes .../signTransactionRecordobt/nanox.67.png | Bin 937 -> 472 bytes .../signTransactionRecordobt/nanox.68.png | Bin 472 -> 476 bytes .../signTransactionRecordobt/nanox.69.png | Bin 476 -> 405 bytes .../signTransactionRecordobt/nanox.70.png | Bin 405 -> 379 bytes .../signTransactionRecordobt/nanox.71.png | Bin 379 -> 430 bytes .../signTransactionRecordobt/nanox.72.png | Bin 430 -> 539 bytes .../signTransactionRecordobt/nanox.73.png | Bin 336 -> 540 bytes .../signTransactionRecordobt/nanox.74.png | Bin 539 -> 488 bytes .../signTransactionRecordobt/nanox.75.png | Bin 540 -> 976 bytes .../signTransactionRecordobt/nanox.76.png | Bin 488 -> 455 bytes .../signTransactionRecordobt/nanox.77.png | Bin 976 -> 564 bytes .../signTransactionRecordobt/nanox.78.png | Bin 455 -> 580 bytes .../signTransactionRecordobt/nanox.79.png | Bin 564 -> 445 bytes .../signTransactionRecordobt/nanox.80.png | Bin 580 -> 376 bytes .../signTransactionRecordobt/nanox.81.png | Bin 445 -> 382 bytes .../signTransactionRecordobt/nanox.82.png | Bin 376 -> 345 bytes .../signTransactionRecordobt/nanox.83.png | Bin 382 -> 333 bytes .../signTransactionRecordobt/nanox.84.png | Bin 345 -> 953 bytes .../signTransactionRecordobt/nanox.85.png | Bin 333 -> 498 bytes .../signTransactionRecordobt/nanox.86.png | Bin 953 -> 526 bytes .../signTransactionRecordobt/nanox.87.png | Bin 498 -> 462 bytes .../signTransactionRecordobt/nanox.88.png | Bin 526 -> 937 bytes .../signTransactionRecordobt/nanox.89.png | Bin 462 -> 472 bytes .../signTransactionRecordobt/nanox.90.png | Bin 937 -> 476 bytes .../signTransactionRecordobt/nanox.91.png | Bin 472 -> 405 bytes .../signTransactionRecordobt/nanox.92.png | Bin 476 -> 0 bytes .../signTransactionRecordobt/nanox.93.png | Bin 405 -> 0 bytes 87 files changed, 50 insertions(+), 30 deletions(-) delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.80.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.81.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.92.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.93.png diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index b91ba175..000c1c15 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -43,6 +43,7 @@ export const enum VALUE_VALIDATION { export const enum VALUE_POLICY { VALUE_SHOW_ON_DEVICE = 5, + VALUE_SHOW_ON_DEVICE_IF_NONEMPTY = 6, VALUE_DO_NOT_SHOW_ON_DEVICE = 2, } @@ -267,6 +268,23 @@ export function COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW(key: string, varData } } +export function COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW_IF_NON_EMPTY(key: string, varData: Buffer, bufLenMin: number = 0, bufLenMax: number = 0xFFFFFFFF): Command { + const vD = Buffer.concat([varuint32_to_buf(varData.length), varData]); + return { + ...defaultCommand, + command: COMMAND.APPEND_DATA, + constData: constDataAppendData( + VALUE_FORMAT.VALUE_FORMAT_ASCII_STRING_WITH_LENGTH, + VALUE_VALIDATION.VALUE_VALIDATION_INBUFFER_LENGTH, BigInt(bufLenMin + lenlen(bufLenMin)), BigInt(bufLenMax + lenlen(bufLenMax)), + VALUE_POLICY.VALUE_SHOW_ON_DEVICE_IF_NONEMPTY, + VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, + key + ), + varData: vD, + txLen: vD.length, + } +} + export function COMMAND_APPEND_DATA_NAME_SHOW(key: string, name: HexString): Command { return { ...defaultCommand, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 1c12f015..67dbe5b0 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -1,7 +1,7 @@ import type {HexString, ParsedTransaction, ParsedRequestFundsData, ValidBIP32Path, ParsedActionAuthorisation, ParsedRecordOtherBlockchainTransactionMetadata, Uint8_t} from "../../types/internal" import { Command, templateAlternative, COMMANDS_COUNTED_SECTION, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_NAME_SHOW, COMMANDS_DH_ENCODE, - COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW } from "./commands" + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, COMMAND_STORE_VALUE, ADD_STORAGE_CHECK, VALUE_STORAGE_COMPARE, COMMAND_APPEND_DATA_MEMO_HASH, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW_IF_NON_EMPTY } from "./commands" import { uint64_to_buf } from "../../utils/serialize" import { parseNameString, validate } from "../../utils/parse" import { InvalidDataReason } from "../../errors"; @@ -30,7 +30,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), ...COMMANDS_COUNTED_SECTION([ - COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Request ID", Buffer.from(actionData.fio_request_id)), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW_IF_NON_EMPTY("Request ID", Buffer.from(actionData.fio_request_id)), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Handle", Buffer.from(actionData.payer_fio_address), 3, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Handle", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ diff --git a/src/signTransaction.c b/src/signTransaction.c index 2f1e9a8e..d0feaa5f 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -440,8 +440,9 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, } CASE(POLICY_ALLOW_WITHOUT_PROMPT, HANDLE_SIMPLE_STEP_RESPOND); CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_SIMPLE_STEP_DISPLAY_DETAILS); - CASE(POLICY_SHOW_BEFORE_RESPONSE_IF_NONEMPTY, - strnlen(ctx->value, SIZEOF(ctx->value)) == 0 ? HANDLE_SIMPLE_STEP_RESPOND : HANDLE_SIMPLE_STEP_DISPLAY_DETAILS) + CASE(POLICY_SHOW_BEFORE_RESPONSE_IF_NONEMPTY, + strnlen(ctx->value, SIZEOF(ctx->value)) == 0 ? HANDLE_SIMPLE_STEP_RESPOND + : HANDLE_SIMPLE_STEP_DISPLAY_DETAILS) default: THROW(ERR_NOT_IMPLEMENTED); #undef CASE diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 6a3ee96e..c14e9de3 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -81,30 +81,30 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca}, - {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, - 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, - 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, - {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, - 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, - 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, - {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, - 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, - 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, - {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, - 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, - 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, - {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, - 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, - 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, - {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, - 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, - 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, - {0x6e, 0x74, 0x20, 0x73, 0x1e, 0x56, 0xf0, 0xa8, 0x26, 0x62, 0xa6, - 0x49, 0x64, 0xf9, 0x98, 0x04, 0x84, 0x95, 0x01, 0x05, 0xe2, 0xf6, - 0xc7, 0x61, 0x0b, 0x75, 0x93, 0x7a, 0x89, 0x45, 0x1a, 0x1d}, - {0xd1, 0x75, 0xe2, 0xf6, 0x14, 0x52, 0x80, 0xc1, 0xb2, 0xf2, 0x75, - 0x65, 0x48, 0x07, 0x2c, 0xa1, 0x6b, 0x17, 0xcb, 0x16, 0x46, 0xf8, - 0x83, 0x0b, 0x75, 0x08, 0xb3, 0xd9, 0x3d, 0x43, 0xf2, 0x5c}, + {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, + 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, + 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44}, + {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, + 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, + 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73}, + {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, + 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, + 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44}, + {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, + 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, + 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73}, + {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, + 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, + 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44}, + {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, + 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, + 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73}, + {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, + 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, + 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44}, + {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, + 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, + 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73}, {0xab, 0x0f, 0x5c, 0xce, 0x2f, 0xaf, 0x6b, 0x90, 0x93, 0xf3, 0xb5, 0xbe, 0xa9, 0x6a, 0x74, 0xa7, 0x70, 0xd2, 0x91, 0x68, 0xf7, 0x1f, 0xe5, 0x3d, 0x19, 0x74, 0xf7, 0xa5, 0x10, 0x39, 0x63, 0xc1}, diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 5cecb5a1..6466224b 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -280,6 +280,7 @@ async function runTxTest(network, tx, review1, review2) { } const longSequence = [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2]; +const longSequenceHash = [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2]; //has empty fio_request_id const secondSequence = [1, 2] testStep(" - - -", "Sign testnet transaction - memo"); @@ -294,12 +295,12 @@ testStep(" - - -", "Sign testnet mainnet - memo"); testStep(" - - -", "Sign testnet transaction - hash"); { - await runTxTest("TESTNET", txHash, longSequence, secondSequence) + await runTxTest("TESTNET", txHash, longSequenceHash, secondSequence) } testStep(" - - -", "Sign testnet mainnet - hash"); { - await runTxTest("MAINNET", txHash, longSequence, secondSequence) + await runTxTest("MAINNET", txHash, longSequenceHash, secondSequence) } await transport.close() diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.44.png b/test-integration/snapshots/signTransactionRecordobt/nanos.44.png index ecf73f6f770103072a4629b1d5abe1ef7d437995..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 442 zcmV;r0Y(0o0@DMKBYy#!NklWi=Krut;004Wh;48#lmVt*o{2gM@Bx3W?0nzDp- z!U5n};52As+D3%LbdI@95Evlu8^8x``<&hcRiupMO|cD7f;hbjwYSvwZvzv6X=Xh` z(srXVO4yL&$$hRudzznESyd7z@Rvb2>*N7gSUw{6PwxGW%L(NvC>4X_sTdqd{+EE) z_phkRei`Tkf<6xwXI+ZWZBqJVm&a)UQp}Tt0(C0ExY}^fqcd5=0&ORS^D9seFV} z=z)nONL&I4(xNu|Mz%xIoJ7~-E=ga4xDqLo<$VptXQeOO zcs+crzirp;RdRJ}OhDWa-u8FrSaZE@b0FFJreXr(Vz=*}{dG82yXjuV1e|{Q4P)be zCG1)jxo^;m{{Bfc&H&%6wrpqZi#Oxg*?B&DAVmHdzmQrxQpsdcD_AX`13oB0uv)>C z4%k)2ZnSZE2j zEyG;?jtBAhY6rSIWSX2+v%Le*Ikb&|_^>TTFL)u!6pI)hXn&*J6(6&?02qlpxX~C9 zrxp@TOlPl1({h~d035U}!;OY#gNl;NnWJskd${+aAbsb z*X-Uhmiwqen{`ev-^(!KYW-#0{gnZj@PK>nr}ryEen@A9k})`*jKPsO-vn6SPgLR8Z?Mzr`k104XzURzKbm5)THqWe|A{ijqeVV)Wo<{u$1 zA(XC9XSeNi4k|(7#pT{c#a=0@*mWGLSh$3bfv?VI`6;R(2rEI!7-8Q5g*%e@6D>)S aB%T+5zbPj?Pols80000Vb2FU}+*9(B&M7%HK=deY?LJuhRC_S2;c!$M8t z#vm`bG2YS(a+26aO)Tg}BU-#&BqIQcy|(l=YCIA|9r;xd{!giVgj48&i6lr|0tnKl zv)gti$CaSz$5X`LgXFzZE_~`ZuI|7;sXJ)P^XJRwpD8M0AWKl;0C^5*v5i?j(Tbud a!2AQ7;2SLnVrnq}0000T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nRAvE%>% delta 441 zcmV;q0Y?6w1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfM3C2N diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.47.png b/test-integration/snapshots/signTransactionRecordobt/nanos.47.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE^+1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfiT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mvfvDg3r diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.48.png b/test-integration/snapshots/signTransactionRecordobt/nanos.48.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..fd1722a748129222182e9b6f6681a9d30ad48194 100644 GIT binary patch delta 406 zcmV;H0crln1F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f;xe? A{r~^~ delta 429 zcmV;e0aE_31IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfslU%_ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.49.png b/test-integration/snapshots/signTransactionRecordobt/nanos.49.png index fd1722a748129222182e9b6f6681a9d30ad48194..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4X1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1o0Lyg~o~ delta 406 zcmV;H0crlJ1F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f(q@p A-~a#s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.50.png b/test-integration/snapshots/signTransactionRecordobt/nanos.50.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D+1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f)# BrojLJ delta 399 zcmV;A0dW5Q0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1jF=ypI3? diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.51.png b/test-integration/snapshots/signTransactionRecordobt/nanos.51.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.52.png b/test-integration/snapshots/signTransactionRecordobt/nanos.52.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=~v3jil delta 299 zcmV+`0o4AY0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mFrg8Kjf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.54.png b/test-integration/snapshots/signTransactionRecordobt/nanos.54.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<0N~Gg0owtf_$7FZu>b%7 M07*qoM6N<$f*KEcegFUf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.55.png b/test-integration/snapshots/signTransactionRecordobt/nanos.55.png index c0236f40e1f682660f35f989589a0948eac7ab57..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z*0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$f~FP7q5uE@ delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1nyo BcBudW diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.56.png b/test-integration/snapshots/signTransactionRecordobt/nanos.56.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..f26fb07e66f049995a83eb93b725e472eda6d16c 100644 GIT binary patch delta 350 zcmV-k0ipiC1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeHq)$ delta 421 zcmV;W0b2g~0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfMsvvo diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.57.png b/test-integration/snapshots/signTransactionRecordobt/nanos.57.png index f26fb07e66f049995a83eb93b725e472eda6d16c..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Xs0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ;WtL;wH) delta 350 zcmV-k0iphh1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.60.png b/test-integration/snapshots/signTransactionRecordobt/nanos.60.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.62.png b/test-integration/snapshots/signTransactionRecordobt/nanos.62.png index 06140342c291c111e9c068e5607f9a041bc53592..959a70fad0ab7c7609d498e1816667519a983348 100644 GIT binary patch delta 330 zcmV-Q0k!_R0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f^Q|B_W%F@ delta 287 zcmV+)0pR}S0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1hv5f}{Wd diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.63.png b/test-integration/snapshots/signTransactionRecordobt/nanos.63.png index 959a70fad0ab7c7609d498e1816667519a983348..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?7i0@DMKB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfNm0~$ delta 330 zcmV-Q0k!_q1LXpcB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f{>`65dZ)H diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.64.png b/test-integration/snapshots/signTransactionRecordobt/nanos.64.png index ecf73f6f770103072a4629b1d5abe1ef7d437995..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 442 zcmV;r0Y(0o0@DMKBYy#!Nklg#+@%U;7x;tc=oK>^E1JF6Nje+>EEq_KYcp=IZix?hgqudoA zv$+5mi9EQ`7!juy5=~5JuSnB!obCV|v@OGphG&C{lFON+ZSyWcNUcKUTgCls1O#9= zr?!xkcT{j>gm%~L-ZGZ^s6v}{PA}ifFyd@n@qa}-LycF2U**;L(d3KXrj7X$w!83J|EnG3+o-!*#Fe7VsaKJZgszIa z_7--#?7o{ZyY`^jsp(x9#KKDu-wPVVy^ZQv(2Yj4_&Ng}0LNZiP#cwxM5m(rRlxnH zR4!qj8W`puAul16u1{yT?Q{+*LE^>b-bTeLo<$VptXQeOO zcs+crzirp;RdRJ}OhDWa-u8FrSaZE@b0FFJreXr(Vz=*}{dG82yXjuV1e|{Q4P)be zCG1)jxo^;m{{Bfc&H&%6wrpqZi#Oxg*?B&DAVmHdzmQrxQpsdcD_AX`13oB0uv)>C z4%k)2ZT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1nRAvE%>% delta 441 zcmV;q0Y?6w1JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf(5uun diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.66.png b/test-integration/snapshots/signTransactionRecordobt/nanos.66.png index ecf1f5058ac2679bd73a34a5317002137bcec097..16287b7a0e1f103432c3b8da6542f7ac9601cc11 100644 GIT binary patch delta 429 zcmV;e0aE_c1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfi!s-e diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.67.png b/test-integration/snapshots/signTransactionRecordobt/nanos.67.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..fd1722a748129222182e9b6f6681a9d30ad48194 100644 GIT binary patch delta 406 zcmV;H0crl81F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$g86K? A)c^nh delta 387 zcmV-}0et?j1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lb%vB3ZU diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.68.png b/test-integration/snapshots/signTransactionRecordobt/nanos.68.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4u1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1gHWyjcJM delta 429 zcmV;e0aE^{1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfo&?Wi diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.69.png b/test-integration/snapshots/signTransactionRecordobt/nanos.69.png index fd1722a748129222182e9b6f6681a9d30ad48194..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D@1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1gC} BrpN#Q delta 406 zcmV;H0crmJ0^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f{-S; AGynhq diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.70.png b/test-integration/snapshots/signTransactionRecordobt/nanos.70.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$o1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1fo$yiNcB diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.71.png b/test-integration/snapshots/signTransactionRecordobt/nanos.71.png index 119eb22fc2111523375a127e32bc66252e40bfbb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDHg0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$f+$9VRsaA1 delta 355 zcmV-p0i6ED0{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hBi BrrZDk diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.72.png b/test-integration/snapshots/signTransactionRecordobt/nanos.72.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&pB0-^$tBYyztNklNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=?aeAcy delta 291 zcmV+;0o?wg0=)u|BYyz|Nklo5G z5s6>5+zS4+s|IDIYP4sJ`9|5IBt8QgQ7O$DPOS#O6$M1hqkk-iv_tJxhc#qpfInXg zP(I_vLKR%Z>+H6)p*kvqJklR~!HU0001>#2;?$iBbo!yWRi*002ovPDHLkV1jeFf3^Ss diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.73.png b/test-integration/snapshots/signTransactionRecordobt/nanos.73.png index fadc23a161829705363042782e217be337d6b7af..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1n>V BcCG*b delta 299 zcmV+`0o4AM0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1lwZg6{wT diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.74.png b/test-integration/snapshots/signTransactionRecordobt/nanos.74.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..8b56d1dac90a9e754792a30512db3633f78fdf45 100644 GIT binary patch delta 422 zcmV;X0a^Z{0>1;0BYy#gNklOOB^kgiX(v6I+WJYWc&D9}Bv$jlA`G%wb1Gm9O5vY; z;_bryJx`Q?%^(K*K@3jg>NoRyWP1gEyk&MJPrJ_LN}LC>2dhS4crLjmg=P zsv>Vx)#jEW$bWj#7mFfXgaVwj=(@}B@w2v@7D+kn%YY)>*!U{o|H@chVTT^6@i7A| zdh|zWAT0wNp`NVSMr~8E+ueNqN3Cke0f@@4Ap>}t`-svLf@*$xDWcunyM=h8@Q@xi z7PZR642&PbO0lzcxqY!^7m_R@yE&@~07*qoM6N<$g1Ozut^fc4 delta 264 zcmV+j0r&pD1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=_hfNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1mn#uE78R delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1gr7 BcH#g4 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.76.png b/test-integration/snapshots/signTransactionRecordobt/nanos.76.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfkJ!kS diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.77.png b/test-integration/snapshots/signTransactionRecordobt/nanos.77.png index f26fb07e66f049995a83eb93b725e472eda6d16c..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAWIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZowWAEv@2@}|k=w#&Bf48$2QwjFu z<_h9s0E2%=wRbVTKC@=(_FV3qlaiA-KP>z%a(Th@2C-WCcXz!w-@jnfdBvnFULKnE zY`*>RcA*e=hC^p|?M(Wvze{;R_tvBr+Iu4d5~XGxF&0az2O8El&u-ruQ(ye;od~CdJjd>je?Q)N zloVS$!T3w415@93k@GPZuBY(r5}(j;`hMN++mp2{Id1c3@Mm0n9j|)S`T+atvfGhA zj-C2==jQJkGlfZKdOqt-dU4`($aWR^W)_I=pyYw0`<^8(*W<7~{um_U>FVdQ&MBb@ E0K8_6tN;K2 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.51.png b/test-integration/snapshots/signTransactionRecordobt/nanox.51.png index 865f0bcdabb24dd323cbc9201ff39708dea0134e..c2bb4e70b0121619d4f70d19c75de6027dbd03ec 100644 GIT binary patch delta 514 zcmV+d0{#7)1e^qrB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNe8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZS7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI;M1& delta 514 zcmV+d0{#8y1DphqB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNe diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.53.png b/test-integration/snapshots/signTransactionRecordobt/nanox.53.png index aa4cc2ae93cd274977fc604eea56ff141e05fd2d..997c215666cfd3520e8883ff295febd7b1f18045 100644 GIT binary patch delta 955 zcmV;s14R7j1JDPMBYy*zNklqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1mnS$<6=( delta 463 zcmV;=0Wkj12j~NkBYy#}NklQh zvVk@??pAs4)9)YoqX|}50G4T8<`ysi!|n>m#@gc02lk$V4u2j)H}Q^*7ytkOV4S=i zZN(2x^IzZP-o8)1vBG(wh`3i8-9Wv2ll6U~(&`X<@11kuQ1}}@h77{2qy@7)t@kix zx{%VUO)j#d>X$~DSUuXAzbAuGq_agux78k50ScX`6j#h?sVt|W#W~meE)#GR3%|dJ zP?bCfa*K2BJ%5(o2b>OQro3}(Xw3?UH{mi-E|T6D)A2pM2@7>rm6e;AP5=M^=xy?} zw@Eh^Sa|01o7Vp>Xei=X?rVC&lR|T?%+(glJk_IFO1kkL?d=SsLCWVsq&K#BF;U@C zD55_$SuH!-)=+*c^b=4<97iK%iss(uYBbbJh${4RG)SI0fqn%D!NOKbG#YCZs#0WY zokE(Jri@mLI^h<*kfj$gue8xC$>&tx{{R30004jm{sDAxq67@ry_f(1002ovPDHLk FV1g2|+av%0 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.54.png b/test-integration/snapshots/signTransactionRecordobt/nanox.54.png index 997c215666cfd3520e8883ff295febd7b1f18045..581549e868bdb86416b96fba88d84e02da20f718 100644 GIT binary patch delta 430 zcmV;f0a5&wZRMs5P%UqVEzf}29*1k)jl>EYibO_YLbssS>zB{(bn3|;e^pz1 zp%}LEQ%x5@nt#b$7BXnVn@lkI)Ofm=h2Rvddsl6)ljs=P_bfSrb0Dg=0Z7bs)Joj6W^NAvh#05BD^(Ais&RBiPTY#w#XMb7N0>~*fNL&Cp zq6U2d(#_|98hpz>licG^J^J+D(Q=Re4AkKLsKNVD11A6g0000000000000000023C Y0SIwO0ap^L>;M1&07*qoM6N<$g5UekfB*mh delta 955 zcmV;s14R7C1JDPMBYy*zNklqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1iIm$*lkY diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.55.png b/test-integration/snapshots/signTransactionRecordobt/nanox.55.png index 581549e868bdb86416b96fba88d84e02da20f718..2a064b241615e17cc5298d080fb2ec96970e2d8d 100644 GIT binary patch delta 539 zcmV+$0_6S21GEH?B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&sQ delta 429 zcmV;e0aE_71jhrAB!7-cL_t(|obA|cZo?o9fMKuNO}PJ&dYAo(#1O`gVXU3m`~0d> zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjfsj<&s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.56.png b/test-integration/snapshots/signTransactionRecordobt/nanox.56.png index 2a064b241615e17cc5298d080fb2ec96970e2d8d..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 100644 GIT binary patch delta 556 zcmV+{0@MAp1jGc8BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000x$1y(?3`CQwutZB%0 zK*bHwn*Q2zslg<68|mI>?KMb&oR&0xH9d6oI|?V|q7@O~z`DcwxeRuI^*ExfDh%ED z-IGNTaNRKjUAq-qq@eEPDUu#Jw7sI&uTiM4cQ0xks(;VpzKp;5Ji$8PW)`gj!nJ7q zm)Rcx01P;;=)iAzeEE7K&zgj@E5nT&#LL(&0?I3x;tkI3IRTR}000000000000000 e006+l`4t5Tt>A2GsY9s%0000I1=>01{IRumV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAP ztINAq&bjdZlmDoK))9bhQr%o*_cwY+z%ADrQ-9I-7G!u0J%7YACSm{p0DvlbC!h1I z%gGgKS-icCT^_xmp1-vxl*G2y${mtui9D9`+pw`Sn=qM(;dfHeQZ#`gEdThM_|;GTXE-QY~M!PpMhxF2BO z23F-X;gf8h>VFY%>lcN0q3C1T)W2Y)0?F&A(kBb$xv9tO)#nNW;or##(z+%27&HI? z;L+rNw%SVYLFUE3b`>bU3^mZO)zGNa(xxw2uxNVtbbW3EWLAbvESst2;*S^ibJWAr zEv*{?h?+hTd;FSRCuYK%&AkPg%Dd3)Mbldp|Fx150384T00000y8Quv`+tbxIVs%$ O000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfCM=-4 delta 419 zcmV;U0bKt00=)x}B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1oXO&h7vJ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.59.png b/test-integration/snapshots/signTransactionRecordobt/nanox.59.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..48f9d3149732977f189da4d5d8e028526afed243 100644 GIT binary patch delta 355 zcmV-p0i6E$0{#M!B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfeQluo diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.60.png b/test-integration/snapshots/signTransactionRecordobt/nanox.60.png index 48f9d3149732977f189da4d5d8e028526afed243..bce54a4bf1c69a042390afe1eb4c15a59fc0ddd1 100644 GIT binary patch delta 318 zcmV-E0m1(M0@(tPB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f_Z3=ng9R* delta 355 zcmV-p0i6EX0{#M!B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f;@_lX#fBK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.62.png b/test-integration/snapshots/signTransactionRecordobt/nanox.62.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..3b9365b95359459d5c7c29e0c895ab4dbc4a1404 100644 GIT binary patch delta 932 zcmV;V16%yf0=Wl}BYy*cNkl+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X0000V#Vyq(?0Q9w)4F$S z8A~6Z|2dd*l|RFwGkL{FZ|{F$$EbI$YhnJEG{@G=458|Jog+Xq8yF<7Gv>{``us=Q zHjDf3_s@yt3SPhZ&OIY-#0X{kXSv?)*jN+as9n6oh2Q%1fJ8i9{an^LB{Ts5 DVef=u diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.63.png b/test-integration/snapshots/signTransactionRecordobt/nanox.63.png index 3b9365b95359459d5c7c29e0c895ab4dbc4a1404..ebb6db65a0e940f1abaa2ab2e1b996e9b61eb6a4 100644 GIT binary patch delta 473 zcmV;~0Ve*r2l4}uBYy$8Nkl>004g7hw;Dby4pW;&VdH}K}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnKU*T@$oV)hAlGzAdUw>tgu5x=v;D9# zQ9O%gDsz!7C}7JoV75hdpu3)os;N9RXS2I`1#D#G%$ZLAcc-a2D^nQmVKNd>dtcYA zTxg5)T8-eGL4UG)c0;q5B(ZnPO-u$+H@aQVlE*UgvG~C71UYvLI>D}K%k&@GGRFY` zZ*l$9mDkU0c@kd`+2!NZGsV&PdMcmhmyRNwjHA%5j(T?H`MLWt{{J^avAzf*gk=TamfO`a_uqThnn&p5-{;Tye2 zbO!OfK0MLs{d+b>|4xkl{m8-n$ie-{0RR91000000000000000fWPS*hys&^{aXx9 P00000NkvXXu0mjfGxzIp delta 932 zcmV;V16%y^1Gxu~BYy*cNkl+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X0000F1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000B1o8urB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O0000MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ00000C delta 500 zcmVF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000MTL0002^RlV$$j(_hW9+okF0E-)cYoVRYh|K`<7&VA>>R&3@|JGW*}-RR zx)L7mD$Dhs3$Lz(TiqU8K&mmVHkPHM?_NkiQ9!GG{1L4xJU5fWk@ma~c{Twf|8wW1 zO8*GsBL`=aym?nWn1H$ZFj9-oj@-FYT}^;3>(z(0qAn9T5svW|X7wz$%)~apx6La6 f000000D#gT7i(Y+M7ViI00000NkvXXu0mjf3OvoA diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.67.png b/test-integration/snapshots/signTransactionRecordobt/nanox.67.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 447 zcmV;w0YLt#2iOCUBYy#(Nkl|%Q*hnUzb{nib+{KS?b?v;+ zAJd)7#jq9EmbA|Ft8=TVSf$Ro@&$IS!O_RZCm&p2&cHQ8F|;Zqd49B_iT**N{s$`#9%#QupTi0 p0000000000000000001RPk#&Tc`e{iGe7_U002ovPDHLkV1mAq<0b$A delta 916 zcmV;F18e-)1E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*^U?AOHXW delta 446 zcmV;v0YU!U1K0zQB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f({eoQ~&?~ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.69.png b/test-integration/snapshots/signTransactionRecordobt/nanox.69.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqkD1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f~ut1-2eap diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.70.png b/test-integration/snapshots/signTransactionRecordobt/nanox.70.png index a7a8740548d2608032872a36bbf128b89b69847d..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 352 zcmV-m0iXVr1N#DyB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000gQt=J delta 378 zcmV-=0fqki0+j=hB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000Ic&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn00008}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZ8}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeowWAEv@2@}|k=w#&Bf48$2QwjFu z<_h9s0E2%=wRbVTKC@=(_FV3qlaiA-KP>z%a(Th@2C-WCcXz!w-@jnfdBvnFULKnE zY`*>RcA*e=hC^p|?M(Wvze{;R_tvBr+Iu4d5~XGxF&0az2O8El&u-ruQ(ye;od~CdJjd>je?Q)N zloVS$!T3w415@93k@GPZuBY(r5}(j;`hMN++mp2{Id1c3@Mm0n9j|)S`T+atvfGhA zj-C2==jQJkGlfZKdOqt-dU4`($aWR^W)_I=pyYw0`<^8(*W<7~{um_U>FVdQ&MBb@ E0KJ=ytpET3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.74.png b/test-integration/snapshots/signTransactionRecordobt/nanox.74.png index 865f0bcdabb24dd323cbc9201ff39708dea0134e..aa4cc2ae93cd274977fc604eea56ff141e05fd2d 100644 GIT binary patch delta 462 zcmV;<0WtoY1n2{hB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkIi_@% delta 513 zcmV+c0{;Ez1DgbpB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1l!h$%6m@ delta 515 zcmV+e0{s2Z2b=_uBYy$oNklz&ttUa(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8 zV3Nks;rt$zoO7Lj^xF_bodK|o(J+rV{8QW+(D*u{>rdjn1%D-8L*InY*oXlD0001N zV16I)%xieF=Q@rf=UlpzPi6H+wVpP$)U`As`LR^49kDJ3qn2f-OU+n>DFBjYT8svu zJU@B(L`6>D(S+7jCcD|r0cadr$Dn&rek{GThL~f?1Xg{ex!fZ zg?1VBvX|~JyKTO7`y6M-jl3n*E?sw1p3Ys2>>TwwQGDq8RpfFl=qBzms$)V|gy`<= zOIQQosI@JUQSFiF{u!h=-FQy9Y7ssIV;LIu7M9ZJbh>P(uqOp|7cO@hRcfWOi%ZAJ zF5YDkzQmrLqwFdyun*YGs(nDRO-T;X000000000!lV3xdwRWwS^vnPN002ovPDHLk FV1j8S_Ba3l diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.76.png b/test-integration/snapshots/signTransactionRecordobt/nanox.76.png index aa4cc2ae93cd274977fc604eea56ff141e05fd2d..581549e868bdb86416b96fba88d84e02da20f718 100644 GIT binary patch delta 429 zcmV;e0aE_x1IGi9B!7-cL_t(|obA|cZo?o9fMKuNO}PJ&dYAo(#1O`gVXU3m`~0d> zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjf|0&Ot delta 462 zcmV;<0Wto^1Ly;gB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkIx$1y(?3`CQwutZB%0 zK*bHwn*Q2zslg<68|mI>?KMb&oR&0xH9d6oI|?V|q7@O~z`DcwxeRuI^*ExfDh%ED z-IGNTaNRKjUAq-qq@eEPDUu#Jw7sI&uTiM4cQ0xks(;VpzKp;5Ji$8PW)`gj!nJ7q zm)Rcx01P;;=)iAzeEE7K&zgj@E5nT&#LL(&0?I3x;tkI3IRTR}000000000000000 e006+l`4t5Tt>A2GsY9s%0000qI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1f-R$(sNG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.78.png b/test-integration/snapshots/signTransactionRecordobt/nanox.78.png index 581549e868bdb86416b96fba88d84e02da20f718..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 100644 GIT binary patch delta 556 zcmV+{0@MA+1H=T7BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000&wZRMs5P%UqVEzf}29*1k)jl>EYibO_YLbssS>zB{(bn3|;e^pz1 zp%}LEQ%x5@nt#b$7BXnVn@lkI)Ofm=h2Rvddsl6)ljs=P_bfSrb0Dg=0Z7bs)Joj6W^NAvh#05BD^(Ais&RBiPTY#w#XMb7N0>~*fNL&Cp zq6U2d(#_|98hpz>licG^J^J+D(Q=Re4AkKLsKNVD11A6g0000000000000000023C Y0SIwO0ap^L>;M1&07*qoM6N<$g2v3xaR2}S diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.79.png b/test-integration/snapshots/signTransactionRecordobt/nanox.79.png index 2a064b241615e17cc5298d080fb2ec96970e2d8d..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKsH1ib^0B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1kl^&a40c delta 539 zcmV+$0_6R@1GEH?B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s%f6Omo!C6`Oz1eFBPDD~5ifHwp?2Lmy&|iGLUX008g;mPtn%FTANf zcl>O--^jwYyX~7atvb~jnt*T+$NF_jJYo1c*LlY3H4rEw~gN=S4Fn!eVG((?&7-K#F^;=wDsqxlDS^uebwdQ)NU&cAKTK#j^f(olnQ)Lp6ckwIbV8Jd( w%Yq5e`V*Gvf*QkmYQYr%000000Kkj<0oI$$+84`~{r~^~07*qoM6N<$f;8)(!~g&Q delta 556 zcmV+{0@MBY0>lK6BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a000093Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j delta 419 zcmV;U0bKt60=)x}B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1fv2&h!8P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.82.png b/test-integration/snapshots/signTransactionRecordobt/nanox.82.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..bce54a4bf1c69a042390afe1eb4c15a59fc0ddd1 100644 GIT binary patch delta 318 zcmV-E0m1(G0@(tPB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f^qbalmGw# delta 349 zcmV-j0iyod0{8-uB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfO8lVK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.83.png b/test-integration/snapshots/signTransactionRecordobt/nanox.83.png index 48f9d3149732977f189da4d5d8e028526afed243..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 100644 GIT binary patch delta 306 zcmeyzbe3s?O1+4ui(^Q|oVT|U`3@=Yv?ZF{Yxym|viu`Er(&tk9JROY?>`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X0000m;xxpYfE4{a+|3t5c&;A6q$1Ga z;vSWm<@cX{H-xAefMxcUdBo)}aWkNZb;Qtb;ynckkD*Rn<9{Fq0000i;Pf02x4e7> z^+C5^X^2~g5T6-fX3Za4L_}4;cGG85n|vBm*ERRbpY_#d+jEM%Ru7;dU$*s{or`9X zRety_M|a|-szcG--tRLH{7%5>e9nQ#TTthJ55=ZBbXC}d0RRAiNT`PXTYhw+8oI!J zs-b>sL3>fNk2q7l4L$ue{(A;AyH5Dc06DvUNi}ppy=_tr1poj50001R$QvSR?SQiY RnOXn<002ovPDHLkV1g|ykXrx% diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.85.png b/test-integration/snapshots/signTransactionRecordobt/nanox.85.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..ebb6db65a0e940f1abaa2ab2e1b996e9b61eb6a4 100644 GIT binary patch delta 472 zcmV;}0Vn>=0`dcpB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O0000`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#V*el%xaz0000000000FhR~a=e&9p1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS z6fOVhQTK$yL$LayhV6#wA^;5VNaG>OltABoM!X5bm00000)?m-g zTik@@upWP_$~kZMj_IWLZBVhe3*t*BT%JtMEI)CEDQ>(JwEeM~Zm#l1E8u_fr~tIHKL7wI?y3ddl#bVC z`8%q%kJ^OqK%Qb{8OrNu>r)G=O^sruOf{1g&33aP?>!GMU8^5J-m&sLi*a^*jasp+ zil`!J`h8QC8g-WB+D2rre%GqKS1>#Sa5+sb<+DGzZEp7}dLK2?aNX|Wf=>X{YZu2? zTj@1}s$;+RIU~hhqn}RTwh6m@xly#xV^(^fGtxPD_sWvbG1SgGl@N*(U$tylt34cT rU)*E+UDq}e000000000000_W0{oIFoJ)Tl=00000NkvXXu0mjfGKA{y delta 932 zcmV;V16%x#1i1&0BYy*cNkl+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X0000MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000>1M&lqB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O0000JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000V*el%xaz0000000000FhR~a=e&9p1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS z6fOVhQTK$yL$LayhV6#wA^;5VNaG>OltABoM!X5bm00000)?m-g zTik@@upWP_$~kZMj_IWLZBVhe3*t*BT%JtMEI)CEDQ>(JwEeM~Zm#l1E8u_fr~tIHKL7wI?y3ddl#bVC z`8%q%kJ^OqK%Qb{8OrNu>r)G=O^sruOf{1g&33aP?>!GMU8^5J-m&sLi*a^*jasp+ zil`!J`h8QC8g-WB+D2rre%GqKS1>#Sa5+sb<+DGzZEp7}dLK2?aNX|Wf=>X{YZu2? zTj@1}s$;+RIU~hhqn}RTwh6m@xly#xV^(^fGtxPD_sWvbG1SgGl@N*(U$tylt34cT rU)*E+UDq}e000000000000_W0{oIFoJ)Tl=00000NkvXXu0mjf6Ey1I diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.89.png b/test-integration/snapshots/signTransactionRecordobt/nanox.89.png index 34e5ceab69c61f6e41008ccfe72708b5eb164f9c..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!G1K0zQB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000F_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?VxJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f|63>4FCWD diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.92.png b/test-integration/snapshots/signTransactionRecordobt/nanox.92.png deleted file mode 100644 index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Fri, 7 Oct 2022 19:38:10 +0200 Subject: [PATCH 54/83] Rename payee_public_key to other_public_key Affects DH actions --- .../transactionTemplates/template_newfundsreq.ts | 2 +- .../transactionTemplates/template_recordobt.ts | 2 +- ledgerjs-fio/src/types/internal.ts | 4 ++-- ledgerjs-fio/src/types/public.ts | 8 ++++---- ledgerjs-fio/src/utils/parseTxActions.ts | 4 ++-- test-integration/signTransactionNewfundsreq.js | 8 ++++---- test-integration/signTransactionRecordobt.js | 8 ++++---- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts index 27d0553f..d435f7c7 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_newfundsreq.ts @@ -32,7 +32,7 @@ export function template_newfundsreq(chainId: HexString, tx: ParsedTransaction, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Handle", Buffer.from(actionData.payer_fio_address), 3, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Handle", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ + ...COMMANDS_DH_ENCODE(Buffer.from(actionData.other_public_key, "hex"), [ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Public Addr", Buffer.from(actionData.payee_public_address)), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Amount requested", Buffer.from(actionData.amount)), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts index 67dbe5b0..603f0643 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_recordobt.ts @@ -34,7 +34,7 @@ export function template_recordopt(chainId: HexString, tx: ParsedTransaction, pa COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer FIO Handle", Buffer.from(actionData.payer_fio_address), 3, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee FIO Handle", Buffer.from(actionData.payee_fio_address), 3, 64), ...COMMANDS_COUNTED_SECTION([ - ...COMMANDS_DH_ENCODE(Buffer.from(actionData.payee_public_key, "hex"), [ + ...COMMANDS_DH_ENCODE(Buffer.from(actionData.other_public_key, "hex"), [ COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payer Public Addr", Buffer.from(actionData.payer_public_address)), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Payee Public Addr", Buffer.from(actionData.payee_public_address)), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Amount requested", Buffer.from(actionData.amount)), diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 9c0294f2..6dde4b6e 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -34,7 +34,7 @@ export type ParsedRequestFundsData = { tpid: VarlenAsciiString //we need this to start DH encryption - - payee_public_key: HexString + other_public_key: HexString //content payee_public_address: VarlenAsciiString amount: VarlenAsciiString @@ -54,7 +54,7 @@ export type ParsedRecordOtherBlockchainTransactionMetadata = { tpid: VarlenAsciiString //we need this to start DH encryption - payee_public_key: HexString + other_public_key: HexString //content payee_public_address: VarlenAsciiString payer_public_address: VarlenAsciiString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 059a287d..17550b9b 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -159,9 +159,9 @@ export type TransferFIOTokensData = { tpid: string /** - * Payee public key - needed for DH encryprion. In uncomressed format as hex string. + * Other public key - needed for DH encryprion. In uncomressed format as hex string. */ - payee_public_key: string + other_public_key: string //content payee_public_address: string amount: string @@ -186,9 +186,9 @@ export type TransferFIOTokensData = { tpid: string /** - * Payee public key - needed for DH encryprion. In uncomressed format as hex string. + * Other public key - needed for DH encryprion. In uncomressed format as hex string. */ - payee_public_key: string + other_public_key: string //content payee_public_address: string payer_public_address: string diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index d8c68952..61d39ceb 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -56,7 +56,7 @@ export function parseActionDataRequestFunds(data: RequestFundsData): ParsedReque actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), - payee_public_key: parseHexString(data.payee_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), + other_public_key: parseHexString(data.other_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_FIO_ADDRESS), amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), @@ -76,7 +76,7 @@ export function parseActionDataRecordOtherBlockchainTransactionMetadata(data: Re actor: parseAscii(data.actor, InvalidDataReason.INVALID_ACTOR), tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), - payee_public_key: parseHexString(data.payee_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), + other_public_key: parseHexString(data.other_public_key, InvalidDataReason.INVALID_PUBLIC_KEY, PUBLIC_KEY_LENGTH, PUBLIC_KEY_LENGTH), payer_public_address: parseAscii(data.payer_public_address, InvalidDataReason.INVALID_PAYER_PUBLIC_ADDRESS), payee_public_address: parseAscii(data.payee_public_address, InvalidDataReason.INVALID_PAYEE_PUBLIC_ADDRESS), amount: parseAscii(data.amount, InvalidDataReason.INVALID_AMOUNT), diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index b2e57c67..e4e18787 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -115,7 +115,7 @@ const txMemo = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + other_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payee_public_address: "My payee public address", amount: "amount 1000", chain_code: "BTC", @@ -144,7 +144,7 @@ const txHash = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + other_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payee_public_address: "My payee public address", amount: "amount 1000", chain_code: "BTC", @@ -169,7 +169,7 @@ async function buildTxUsingFioJs(network, tx, iv) { offline_url: tx.actions[0].data.offline_url, } - const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const pk = PublicKey(Buffer.from(tx.actions[0].data.other_public_key, "hex")).toString() const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const encryptedContent = sharedCipher.encrypt('new_funds_content', content, iv) @@ -241,7 +241,7 @@ async function runTxTest(network, tx, review1, review2) { console.log(serTx.toString("hex")) console.log(encContent) - const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const pk = PublicKey(Buffer.from(tx.actions[0].data.other_public_key, "hex")).toString() const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 6466224b..06708a61 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -124,7 +124,7 @@ const txMemo = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + other_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payer_public_address: "My payer public address", payee_public_address: "My payee public address", amount: "amount 1000", @@ -157,7 +157,7 @@ const txHash = { tpid: "rewards@wallet", actor: "aftyershcu22", - payee_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), + other_public_key: otherPublicKey.toUncompressed().toBuffer().toString("hex"), payer_public_address: "My payer public address", payee_public_address: "My payee public address", amount: "amount 1000", @@ -187,7 +187,7 @@ async function buildTxUsingFioJs(network, tx, iv) { offline_url: tx.actions[0].data.offline_url, } - const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const pk = PublicKey(Buffer.from(tx.actions[0].data.other_public_key, "hex")).toString() const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const encryptedContent = sharedCipher.encrypt('record_obt_data_content', content, iv) @@ -261,7 +261,7 @@ async function runTxTest(network, tx, review1, review2) { console.log(serTx.toString("hex")) console.log(encContent) - const pk = PublicKey(Buffer.from(tx.actions[0].data.payee_public_key, "hex")).toString() + const pk = PublicKey(Buffer.from(tx.actions[0].data.other_public_key, "hex")).toString() const sharedCipher = createSharedCipher({privateKey: privateKey.toBuffer(), publicKey: pk}) const plaintextFio = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(encContent, "base64")) const plaintextLedger = checkDecrypt(sharedCipher.sharedSecret, Buffer.from(ledgerResponse.dhEncryptedData, "base64")) From 8c578a2151db6d1e9ac58b97f8edda012ea7b2d2 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 7 Oct 2022 20:45:39 +0200 Subject: [PATCH 55/83] Minor TS fixes --- .../transactionTemplates/commands.ts | 2 +- ledgerjs-fio/tsconfig.json | 2 +- test-integration/decodeMessage.js | 3 +- test-integration/getPublicKey.js | 28 +++++++++---------- test-integration/getSerial.js | 2 +- test-integration/getVersion.js | 2 +- test-integration/runUnitTests.js | 2 +- test-integration/signTransactionAddaddress.js | 2 +- test-integration/signTransactionAddnft.js | 2 +- .../signTransactionNewfundsreq.js | 2 +- test-integration/signTransactionOtherEosio.js | 2 +- .../signTransactionOtherFioAddress.js | 2 +- .../signTransactionOtherFioReqobt.js | 2 +- .../signTransactionOtherFioStaking.js | 2 +- test-integration/signTransactionRecordobt.js | 2 +- test-integration/signTransactionRemaddress.js | 2 +- test-integration/signTransactionRemnft.js | 2 +- .../signTransactionTrnsfiopubky.js | 2 +- 18 files changed, 30 insertions(+), 33 deletions(-) diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 000c1c15..c61fc04a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -1,4 +1,4 @@ -import { assert } from "console"; +import { assert } from "../../utils/assert"; import { InvalidDataReason } from "../../errors" import { HexString, Uint8_t, ParsedTransaction, ValidBIP32Path, VarlenAsciiString, Uint64_str } from "types/internal" import { buf_to_hex, path_to_buf, uint8_to_buf, varuint32_to_buf } from "../../utils/serialize"; diff --git a/ledgerjs-fio/tsconfig.json b/ledgerjs-fio/tsconfig.json index c04bc8ec..3f8dad2b 100644 --- a/ledgerjs-fio/tsconfig.json +++ b/ledgerjs-fio/tsconfig.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.base", - "include": ["./**/*.ts"] + "include": ["src/**/*.ts"] } diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js index c6a3c582..6e7550ce 100644 --- a/test-integration/decodeMessage.js +++ b/test-integration/decodeMessage.js @@ -1,8 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, InvalidData, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" -import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" +import { Fio, DeviceStatusError, InvalidData, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import { Ecc } from '@fioprotocol/fiojs' import assert from 'assert/strict' diff --git a/test-integration/getPublicKey.js b/test-integration/getPublicKey.js index 27abc18c..d2607a7f 100644 --- a/test-integration/getPublicKey.js +++ b/test-integration/getPublicKey.js @@ -1,8 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, InvalidData } from "../ledgerjs-fio/dist/src/fio.js" -import { str_to_path } from "../ledgerjs-fio/dist/src/utils/address.js" +import { Fio, DeviceStatusError, InvalidData, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import { Ecc } from '@fioprotocol/fiojs' import assert from 'assert/strict' @@ -17,18 +16,17 @@ const device = getButtonsAndSnapshots(scriptName, speculosConf); await device.makeStartingScreenshot(); - -const path = "44'/235'/0'/0/0" +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] const pubKey = "04a9a222bc3b1a5a58ada17d10069b3961ebd0f917d4b2106031a061915ca9cc24a06941e0a4c0d5e266850ff980ad349ab8b027c93bf4aead1984168ad43e30ab" testStep(" - - -", "await app.getPublicKey() path:"+path+" do not show"); -const getPubkeyPromise = app.getPublicKey({path: str_to_path(path), show_or_not: false}); +const getPubkeyPromise = app.getPublicKey({path: path, show_or_not: false}); const getPubkeyResponse = await getPubkeyPromise; assert.equal(getPubkeyResponse.publicKeyHex, pubKey) assert.equal(Ecc.PublicKey(getPubkeyResponse.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey) testStep(" - - -", "await app.getPublicKey() path:"+path+" show"); -const getPubkeyPromise2 = app.getPublicKey({path: str_to_path(path), show_or_not: true}); +const getPubkeyPromise2 = app.getPublicKey({path: path, show_or_not: true}); await device.review([2,], "Review pubkey"); const getPubkeyResponse2 = await getPubkeyPromise2; assert.equal(getPubkeyResponse2.publicKeyHex, pubKey) @@ -36,23 +34,23 @@ assert.equal(Ecc.PublicKey(getPubkeyResponse2.publicKeyWIF).toUncompressed().toB { testStep(" - - -", "await app.getPublicKey() show reject"); - const getPubkeyPromise2 = app.getPublicKey({path: str_to_path(path), show_or_not: true}); + const getPubkeyPromise2 = app.getPublicKey({path: path, show_or_not: true}); await device.reviewReject([2,], "Review pubkey"); await assert.rejects(getPubkeyPromise2, DeviceStatusError, "Action rejected by user"); } -const path2 = "44'/235'/0'/0/2000" +const path2 = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 2000] const pubKey2 = "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1bd84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca" testStep(" - - -", "await app.getPublicKey() path:"+path2+" do not show"); -const getPubkeyPromise3 = app.getPublicKey({path: str_to_path(path2), show_or_not: false}); +const getPubkeyPromise3 = app.getPublicKey({path: path2, show_or_not: false}); await device.review([1, 1, 2,], "Review pubkey"); const getPubkeyResponse3 = await getPubkeyPromise3; assert.equal(getPubkeyResponse3.publicKeyHex, pubKey2) assert.equal(Ecc.PublicKey(getPubkeyResponse3.publicKeyWIF).toUncompressed().toBuffer().toString('hex'), pubKey2) testStep(" - - -", "await app.getPublicKey() path:"+path2+" show"); -const getPubkeyPromise4 = app.getPublicKey({path: str_to_path(path2), show_or_not: true}); +const getPubkeyPromise4 = app.getPublicKey({path: path2, show_or_not: true}); await device.review([1, 1, 2,], "Review pubkey"); const getPubkeyResponse4 = await getPubkeyPromise4; assert.equal(getPubkeyResponse4.publicKeyHex, pubKey2) @@ -62,23 +60,23 @@ assert.equal(Ecc.PublicKey(getPubkeyResponse4.publicKeyWIF).toUncompressed().toB testStep(" - - -", "Should reject invalid paths."); testStep(" - - -", "path shorter than 5 indexes"); -const promise1 = app.getPublicKey({path: str_to_path("44'/235'/0'/0"), show_or_not: false}); +const promise1 = app.getPublicKey({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0], show_or_not: false}); await assert.rejects(promise1, DeviceStatusError, "Action rejected by Ledger's security policy"); testStep(" - - -", "path contains non-zero address"); -const promise2 = app.getPublicKey({path: str_to_path("44'/235'/1'/0/0"), show_or_not: false}) +const promise2 = app.getPublicKey({path: [44 + HARDENED, 235 + HARDENED, 1 + HARDENED, 0, 0], show_or_not: false}) await assert.rejects(promise2, DeviceStatusError, "Action rejected by Ledger's security policy"); testStep(" - - -", "path contains non-hardened address"); -const promise3 = app.getPublicKey({path: str_to_path("44'/235'/0/0/0"), show_or_not: false}) +const promise3 = app.getPublicKey({path: [44 + HARDENED, 235 + HARDENED, 0 , 0, 0], show_or_not: false}) await assert.rejects(promise3, DeviceStatusError, "Action rejected by Ledger's security policy"); testStep(" - - -", "path contains non-zero chain"); -const promise4 = app.getPublicKey({path: str_to_path("44'/235'/0'/1/0"), show_or_not: false}) +const promise4 = app.getPublicKey({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 1, 0], show_or_not: false}) await assert.rejects(promise4, DeviceStatusError, "Action rejected by Ledger's security policy"); testStep(" - - -", "path too long"); -const promise5 = app.getPublicKey({path: str_to_path("44'/235'/0'/0/0/0"), show_or_not: false}) +const promise5 = app.getPublicKey({path: [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0, 0], show_or_not: false}) await assert.rejects(promise5, InvalidData, "invalid path"); //js parser does not allow this testStep(" - - -", "path too long via direct APDU send."); diff --git a/test-integration/getSerial.js b/test-integration/getSerial.js index 42f42b1a..8f1efcc9 100644 --- a/test-integration/getSerial.js +++ b/test-integration/getSerial.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; import {getTransport} from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; -import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; diff --git a/test-integration/getVersion.js b/test-integration/getVersion.js index 107eaacf..bf19a05f 100644 --- a/test-integration/getVersion.js +++ b/test-integration/getVersion.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; import {getTransport} from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; -import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; diff --git a/test-integration/runUnitTests.js b/test-integration/runUnitTests.js index cc4fb7f5..7409b9b2 100644 --- a/test-integration/runUnitTests.js +++ b/test-integration/runUnitTests.js @@ -1,6 +1,6 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js"; import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js"; -import { Fio } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import { getTransport } from "./speculos-transport.js"; diff --git a/test-integration/signTransactionAddaddress.js b/test-integration/signTransactionAddaddress.js index 3347596d..2cdb7506 100644 --- a/test-integration/signTransactionAddaddress.js +++ b/test-integration/signTransactionAddaddress.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionAddnft.js b/test-integration/signTransactionAddnft.js index cfe8804d..fcb0df93 100644 --- a/test-integration/signTransactionAddnft.js +++ b/test-integration/signTransactionAddnft.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index e4e18787..e9d0af90 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionOtherEosio.js b/test-integration/signTransactionOtherEosio.js index d3bc151b..318284f5 100644 --- a/test-integration/signTransactionOtherEosio.js +++ b/test-integration/signTransactionOtherEosio.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionOtherFioAddress.js b/test-integration/signTransactionOtherFioAddress.js index e8559139..1f80447a 100644 --- a/test-integration/signTransactionOtherFioAddress.js +++ b/test-integration/signTransactionOtherFioAddress.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionOtherFioReqobt.js b/test-integration/signTransactionOtherFioReqobt.js index 095940ec..f466ebee 100644 --- a/test-integration/signTransactionOtherFioReqobt.js +++ b/test-integration/signTransactionOtherFioReqobt.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionOtherFioStaking.js b/test-integration/signTransactionOtherFioStaking.js index d6838141..868648b8 100644 --- a/test-integration/signTransactionOtherFioStaking.js +++ b/test-integration/signTransactionOtherFioStaking.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 06708a61..34bba150 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionRemaddress.js b/test-integration/signTransactionRemaddress.js index 80672d44..e88df0da 100644 --- a/test-integration/signTransactionRemaddress.js +++ b/test-integration/signTransactionRemaddress.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionRemnft.js b/test-integration/signTransactionRemnft.js index 5c55097b..5c32bac4 100644 --- a/test-integration/signTransactionRemnft.js +++ b/test-integration/signTransactionRemnft.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" diff --git a/test-integration/signTransactionTrnsfiopubky.js b/test-integration/signTransactionTrnsfiopubky.js index fa6396c5..2d47e42a 100644 --- a/test-integration/signTransactionTrnsfiopubky.js +++ b/test-integration/signTransactionTrnsfiopubky.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, HARDENED } from "../ledgerjs-fio/dist/src/fio.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import assert from 'assert/strict'; import fetch from "node-fetch" From 0155d0e84d0f071213de77ac32ea6edc1a71ecd9 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 19 Oct 2022 22:20:03 +0200 Subject: [PATCH 56/83] Fix chaincode tokecode serilization + cleanup --- .../transactionTemplates/commands.ts | 4 +-- .../template_addbundles.ts | 7 ++--- .../transactionTemplates/template_addnft.ts | 6 ++-- .../template_regaddress.ts | 7 ++--- .../template_regdomain.ts | 7 ++--- .../template_remaddress.ts | 1 - .../template_remalladdr.ts | 7 ++--- .../template_remallnfts.ts | 7 ++--- .../transactionTemplates/template_remnft.ts | 6 ++-- .../template_renewdomain.ts | 7 ++--- .../template_setdomainpub.ts | 6 ++-- .../template_xferaddress.ts | 8 ++--- .../template_xferdomain.ts | 7 ++--- src/signTransaction.c | 2 ++ src/signTransactionParse.c | 28 +++++++++--------- test-integration/decodeMessage.js | 2 +- test-integration/signTransactionAddaddress.js | 2 +- test-integration/signTransactionRemaddress.js | 2 +- .../signTransactionAddaddress/nanos.14.png | Bin 409 -> 425 bytes .../signTransactionAddaddress/nanox.17.png | Bin 595 -> 604 bytes .../signTransactionRemaddress/nanos.47.png | Bin 413 -> 417 bytes .../signTransactionRemaddress/nanox.56.png | Bin 587 -> 601 bytes 22 files changed, 43 insertions(+), 73 deletions(-) diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index c61fc04a..669d10e4 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -456,10 +456,10 @@ export function COMMAND_APPEND_DATA_MEMO_HASH(memo?: VarlenAsciiString, hash?: V export function COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW(key: string, chainCode: VarlenAsciiString, tokenCode: VarlenAsciiString, publicAddr: VarlenAsciiString): Command { const varData: Buffer = Buffer.concat([ - varuint32_to_buf(chainCode.length), - Buffer.from(chainCode), varuint32_to_buf(tokenCode.length), Buffer.from(tokenCode), + varuint32_to_buf(chainCode.length), + Buffer.from(chainCode), varuint32_to_buf(publicAddr.length), Buffer.from(publicAddr), ]) diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts index f313ca13..9f07a1f8 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addbundles.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedBuyBundledTransaction, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedBuyBundledTransaction, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_UINT64_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts index 7d524d71..35ee59d8 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -1,10 +1,8 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedMapNFTSignature, ParsedNFT, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedMapNFTSignature, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW} from "./commands" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts index ae6fa445..23426858 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regaddress.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedRegisterAddress, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts index 3a943b77..da03c8d3 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_regdomain.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedRegisterDomain, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts index 9638652c..64adbf0b 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remaddress.ts @@ -1,7 +1,6 @@ import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, ADD_STORAGE_CHECK, templateAlternative, COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts index e5165e0f..12e4ca5e 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remalladdr.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedRemoveAllMappedAddresses, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts index c8c75905..b5a05d31 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remallnfts.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterAddress, ParsedRemoveAllMappedAddresses, ParsedRemoveAllNFT, ParsedTransaction, ParsedTransferDomain, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedRemoveAllNFT, ParsedTransaction, ParsedTransferDomain, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts index 007b7f5e..f3ea84ff 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -1,10 +1,8 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedMapNFTSignature, ParsedNFT, ParsedRemoveNFTSignature, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedMapNFTSignature, ParsedRemoveNFTSignature, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts index 8ed388e2..21a89b47 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_renewdomain.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedRenewDomain, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedRenewDomain, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts index faff27de..2afb217a 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_setdomainpub.ts @@ -1,10 +1,8 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMakeDomainPublic, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedMakeDomainPublic, ParsedTransaction, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts index 2adcd839..1027589e 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferaddress.ts @@ -1,11 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferAddress, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTransferAddress, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, - COMMAND_APPEND_DATA_UINT64_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts index 72c4867f..92f36245 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_xferdomain.ts @@ -1,10 +1,7 @@ -import type {HexString, ParsedActionAuthorisation, ParsedMapBlockchainPublicAddress, ParsedRegisterDomain, ParsedRemoveAllMappedAddresses, ParsedTransaction, ParsedTransferDomain, ParsedTransferFIOTokensData, Uint8_t, ValidBIP32Path} from "../../types/internal" +import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTransferDomain, Uint8_t, ValidBIP32Path} from "../../types/internal" import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, - COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, - COMMAND_APPEND_DATA_STRING_DO_NOT_SHOW, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, - templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" diff --git a/src/signTransaction.c b/src/signTransaction.c index d0feaa5f..d1cdc195 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -404,6 +404,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, security_policy_t policy = POLICY_DENY; { str_validateTextBuffer(constData->displayKey, constData->displayKeyLen); + ASSERT(SIZEOF(ctx->key) >= constData->displayKeyLen+1); memcpy(ctx->key, constData->displayKey, constData->displayKeyLen); ctx->key[constData->displayKeyLen] = 0; @@ -415,6 +416,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, varSize, ctx->value); + ASSERT(SIZEOF(ctx->dataToAppendToTx) >= varSize); memcpy(ctx->dataToAppendToTx, varData->value, varSize); ctx->dataToAppendToTxLen = varSize; diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index f421f5cb..ceeed58d 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -124,37 +124,37 @@ static void displayMemoHash(const uint8_t *value, static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, uint8_t valueLen, char display[MAX_DISPLAY_VALUE_LENGTH]) { - // Format: chain code length(varUINT), chain code, token code lenth (varUINT), token code, + // Format: token code lenth (varUINT), token code, chain code length(varUINT), chain code, // publicAddrLen (varUINT), publicAddr TRACE_BUFFER(value, valueLen); VALIDATE(valueLen >= 1, ERR_INVALID_DATA); - size_t chainCodeLen = value[0]; // always just one byte as it needs to be <=10 - VALIDATE(1 <= chainCodeLen && chainCodeLen <= 10, ERR_INVALID_DATA); - VALIDATE(valueLen >= chainCodeLen + 2, ERR_INVALID_DATA); - size_t tokenCodeLen = value[chainCodeLen + 1]; // always just one byte as it needs to be <=10 + size_t tokenCodeLen = value[0]; // always just one byte as it needs to be <=10 VALIDATE(1 <= tokenCodeLen && tokenCodeLen <= 10, ERR_INVALID_DATA); - VALIDATE(valueLen >= chainCodeLen + tokenCodeLen + 3, ERR_INVALID_DATA); + VALIDATE(valueLen >= tokenCodeLen + 2, ERR_INVALID_DATA); + size_t chainCodeLen = value[tokenCodeLen + 1]; // always just one byte as it needs to be <=10 + VALIDATE(1 <= chainCodeLen && chainCodeLen <= 10, ERR_INVALID_DATA); + VALIDATE(valueLen >= tokenCodeLen + chainCodeLen + 3, ERR_INVALID_DATA); uint64_t publicAddrLen = 0; - size_t publicAddrLenLen = getNumberFromVarUInt(value + chainCodeLen + tokenCodeLen + 2, - valueLen - (chainCodeLen + tokenCodeLen + 2), + size_t publicAddrLenLen = getNumberFromVarUInt(value + tokenCodeLen + chainCodeLen + 2, + valueLen - (tokenCodeLen + chainCodeLen + 2), &publicAddrLen); - size_t publicAddrStart = chainCodeLen + tokenCodeLen + 2 + publicAddrLenLen; + size_t publicAddrStart = tokenCodeLen + chainCodeLen + 2 + publicAddrLenLen; VALIDATE(1 <= publicAddrLen && publicAddrLen <= 128, ERR_INVALID_DATA); VALIDATE(valueLen == publicAddrStart + publicAddrLen, ERR_INVALID_DATA); - str_validateTextBuffer(value + 1, chainCodeLen); - str_validateTextBuffer(value + chainCodeLen + 2, tokenCodeLen); + str_validateTextBuffer(value + 1, tokenCodeLen); + str_validateTextBuffer(value + tokenCodeLen + 2, chainCodeLen); str_validateTextBuffer(value + publicAddrStart, publicAddrLen); // prepare to display - ASSERT(chainCodeLen + 1 + tokenCodeLen + 1 + publicAddrLen < MAX_DISPLAY_VALUE_LENGTH); + ASSERT(tokenCodeLen + 1 + chainCodeLen + 1 + publicAddrLen < MAX_DISPLAY_VALUE_LENGTH); snprintf(display, MAX_DISPLAY_VALUE_LENGTH, "%.*s:%.*s:%.*s", chainCodeLen, - value + 1, + value + tokenCodeLen + 2, tokenCodeLen, - value + chainCodeLen + 2, + value + 1, (int) publicAddrLen, value + publicAddrStart); } diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js index 6e7550ce..68c6d80e 100644 --- a/test-integration/decodeMessage.js +++ b/test-integration/decodeMessage.js @@ -1,7 +1,7 @@ import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" import { getTransport } from "./speculos-transport.js" import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" -import { Fio, DeviceStatusError, InvalidData, HARDENED } from "ledgerjs-hw-app-fio" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" import { fileURLToPath } from 'url'; import { Ecc } from '@fioprotocol/fiojs' import assert from 'assert/strict' diff --git a/test-integration/signTransactionAddaddress.js b/test-integration/signTransactionAddaddress.js index 2cdb7506..d76657f1 100644 --- a/test-integration/signTransactionAddaddress.js +++ b/test-integration/signTransactionAddaddress.js @@ -246,7 +246,7 @@ testStep(" - - -", "Sign mainnet transaction - two addresses"); { public_address: "Second payer public address", chain_code: "BTC", - token_code: "BTC", + token_code: "BTC2", }, ], diff --git a/test-integration/signTransactionRemaddress.js b/test-integration/signTransactionRemaddress.js index e88df0da..00bb43e7 100644 --- a/test-integration/signTransactionRemaddress.js +++ b/test-integration/signTransactionRemaddress.js @@ -406,7 +406,7 @@ testStep(" - - -", "Sign mainnet transaction - five addresses"); { public_address: "Fifth payer public address", chain_code: "BTC", - token_code: "BTC", + token_code: "BTC2", }, ], } diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.14.png b/test-integration/snapshots/signTransactionAddaddress/nanos.14.png index 2186765f89e20913fce79bf21715cd44f4a19afa..dc0ecaf24d16b8c25995636738b14a426731c221 100644 GIT binary patch delta 399 zcmV;A0dW4A1E~X$B!6&8L_t(|ob8$27K0!NfN5uY{|D}(U9{723Jej2o%rrD!Q#&( zfFwzhBw5F?!?FJuQEOHUT0KK2&-F`AWP6PY9=l$Nig*qv!|=34JHiYKMPR^Nf6r-% z%N*5ZHLbcO9F*Us7F|W`3|PPP^0e@C!1nssx_#%ij95Xf2!B4-hlm+470Sd;)`y@D zVD^L3Oz5Ccb1S0Ib{EiE)LWq1lSd35-VbmOXn%(+K{L4a{OfZ4>RH^J2~+oOO!~kR z%=(*N9z8Dcy&4lel21wWt|5woZmOnQ5bEsCRqSZ<*Eqv^6Iy1oP$HllFRIrR_ z>Nh|z{_`NlyUq8^)ycG0gjL+3$sXILU36xE(5z<+wtHP~SwQua;+5uBZJ7<{oNA<< tz&{K__ESC4W_)%-ok<5INs`=`H}>rgzcG&^;{X5v00>D%PDHLkV1l0`#7O`E delta 382 zcmV-^0fGLh1DOMmB!6H@L_t(|ob8#-5`-WKfNf`c{|D~S9^7#p`AG@H-S}>jLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>eXDBhHa-iasNwlFMY@y$B~Ofl-TtDo;=jx zg$RmiN&o-=0001l^A*-oDdj5UoF$20zem;D{uucVYiTz*XaDS98mc7%_z7#NQcB4= z(?PZpx=LEPBCO@M329negGIjeEeEZD{2>WbOzSJ!E*mIMJ%2Uh9S0epe9-F{h0}dV z?~Vb|s;?v8J$Pk`BVB*xff$e+L!IzNcPj_Gre_R5xnibdn1!B4+G|#Mycaqe)+)nL zG1N1mVG{=h;s41gE@(H@#lgt{0Kj}U)SjhDLY`-d9zBH_li-xn9((C_b<&^GXwSDp zk0jZIr=g%-5Py9^=H431Bf93{wS-b3ap@B$E(3TLI6IOh3%S$G{%p^^QvJ3}g1OLLe@;7p1*IZZy?1P+J#9{Ju_gxSbZLNTAIj=U zTojeUDZQucB(#Fw8B4bT00000z#Gsn=$%``-QOKi-hXx{{O1m3)`J*(n(u_e%$JhE zm-I_zs=-)oI1sibtMJxOFG|)vaUQ@@80w!8+I^9y6-$do#}$!^IO@p0urtHNlqFB) z&4yY&s6Wjwulgr|Zd_d^il)3+76;*)FFS40!=Tx3-O@K!z%Zr_J2d>F->BcBP-(Z* z$%B@1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f+ofa2><{9 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanos.47.png b/test-integration/snapshots/signTransactionRemaddress/nanos.47.png index 45727216435e5db5113401788533931dc97c4c0d..45ce2717b1b086f91cd347cac60b41788293c77a 100644 GIT binary patch delta 390 zcmV;10eSwN1EB+uB!6g0L_t(|ob8#*t^*+mK$)BN|3A2k+l7glh!95P(a1?R>WBsu zkOCA%Q52_g1+4l10RXt(T+g!PH6d*S4gEHr@bX;D9F6XL_1?*60DKsy$CK(5PJu9u zC!i^!t7B*mpAAF8PWfo>=|5j`-vBqLTVhX~0j@V0d$AkY#ec47zmI%3z?4j?Z=^H; z6Ay6m3QyEZO<53i5K~|D)Ikm3heVngf6*H_1KQpxU62Jm=J%%m>gC^pN#pkprfd+& zO#7?V&}m(TDz-4rS1E@{AF+_T7p7ihcAk2(mYBKlELJrj$ zQh=f;isG&u0ds!d0075}>sgk(CZsK(vA>KfJUu5fXGeFwdPnjZVBCz;?MZbCUx6@< zC!i?;)zLM($GRb5r+gH9@aIcz4{(F>5_{qdaJ#%1NXro|Sj$@rax9DazI(GGedmt*L3>siY=*Z9zQ zT@(LPSB-JB>w6SlFZBJ4DIZ?C@+iuodW0UpFF+!HX;*FB1I8+RtQ?MoW$y`BwqH3R~DBSM-KSsu~*1A0^=s g@_pkhilUJ715&!@I diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.56.png b/test-integration/snapshots/signTransactionRemaddress/nanox.56.png index 57361d73eb92d15d2961836d9eecd0ad84eb9d14..19b3df1d41af447337411ff8813406fb24a43679 100644 GIT binary patch delta 576 zcmV-G0>Ays1la_TB!3`DL_t(|ob8)Qj>I4g0GZMJg#SN@zsw4YLK8#d zc)?Me0{{R309ek?%E>|qSHpWR_4Lbc78MsWYCRVI)=aa8A-lG0>o4{wAcWw(PoKEh zAKRssr2R@~Y^PIH?{dqxyX1H8^cntx6SlYS-QlDIk2%#~3@G z5_P|l4GKvAWZI4nWcDs}#_F+b3&PFMY=bZA89bYVvY;zwN{Siid8FKTrR#qaRjo9H z%IucK!B*m|ApC_KL$0^`&=Vy7IXTv`fAYY)38`nwm@H`2gJ!u!k(^dQqXlG_&TLhZU1kf2mr~`m(cnUYvdZ#u zo*a9R(E@at7WtNjj%ESrBhceF`{hVCu1V^RTiNE^UT_do)V3^~O7C;}7c-_5F)FfE zt^UBIB_68#*QQy3aa*$^e)>kRUru^^DcO#cl}aPC!GE`Zp?v)bE!a(Yl+jZS-OLMu z@M+k+82|uiRC9@^r};MFhj4Tj^bLV-N){y56s2}HGL@qbyDeT;M^*(sx;&j~O|hZV z?u&Y6vCKHnalQK-FmPXP%TSZ5QtwuPv(+i>a!RpRqo)j|b94~iPWBN)^_zxHW?6u} zrf7+8N;$1DlUd!P+l^B`<#>G%1|3|`W>5eC000000000000000OynOEVkbe+9Rbk* O0000I4g0GZMJg#SN@zswaX1L?JoJBQ0i$OXDJ|jXpd2L zJ|*gYB^wlw{>ii*9mwom7>w1nYzxBO&uoV;8W}vBgR-D2W=e`N^gL4TyVCW)iKn<-X&dF56PI=5FI#Fm9q={1hwVvI`>RJK~hEIUX z0+id4o%PdKgSK+?NLi^gG8=rm;PR~}^q@C5bJL_6x__Bh2H`E}y%_)isHi3t-N*Vz z!Vlr-Ea)2|-jpmzDlSUxY-B2@J?yrMSshsw_~`OQ{QPQ5Q0nME_>JjeC!bAaK# zR86G%0>GAcE5PXrmU=m**sC#8k7{#t5Z+Gq5kvKxhCyaofWEk>iEoXfV|-IK`R*A;DR=T0ssI20000000000003Yj|EsJM6L}FJwg3PC07*qoM6N<$f{6?e A)&Kwi From 79a4766892aa9f78fb89ec6003ff6fce8e59a54c Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 19 Oct 2022 22:37:21 +0200 Subject: [PATCH 57/83] Change min public address length in parsing --- ledgerjs-fio/src/utils/parseTxActions.ts | 2 +- src/signTransaction.c | 2 +- test-integration/signTransactionAddaddress.js | 2 +- .../signTransactionAddaddress/nanos.23.png | Bin 409 -> 368 bytes .../signTransactionAddaddress/nanox.28.png | Bin 595 -> 437 bytes 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index 61d39ceb..c7a80c3a 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -94,7 +94,7 @@ function parsePublicAddress(a: PublicAddress): ParsedPublicAddress { return { chain_code: parseAscii(a.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), token_code: parseAscii(a.token_code, InvalidDataReason.INVALID_TOKEN_CODE, 1, 10), - public_address: parseAscii(a.public_address, InvalidDataReason.INVALID_TOKEN_CODE, 3, 64), + public_address: parseAscii(a.public_address, InvalidDataReason.INVALID_PUBLIC_ADDRESS, 1, 64), } } diff --git a/src/signTransaction.c b/src/signTransaction.c index d1cdc195..a3ebc782 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -404,7 +404,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, security_policy_t policy = POLICY_DENY; { str_validateTextBuffer(constData->displayKey, constData->displayKeyLen); - ASSERT(SIZEOF(ctx->key) >= constData->displayKeyLen+1); + ASSERT(SIZEOF(ctx->key) >= constData->displayKeyLen + 1); memcpy(ctx->key, constData->displayKey, constData->displayKeyLen); ctx->key[constData->displayKeyLen] = 0; diff --git a/test-integration/signTransactionAddaddress.js b/test-integration/signTransactionAddaddress.js index d76657f1..9751b1e7 100644 --- a/test-integration/signTransactionAddaddress.js +++ b/test-integration/signTransactionAddaddress.js @@ -288,7 +288,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); token_code: "BTC", }, { - public_address: "Second payer public address", + public_address: "S", chain_code: "BTC", token_code: "BTC", }, diff --git a/test-integration/snapshots/signTransactionAddaddress/nanos.23.png b/test-integration/snapshots/signTransactionAddaddress/nanos.23.png index 2186765f89e20913fce79bf21715cd44f4a19afa..55508dc761f9e4dc59662a968c6ec4cb1c4e101c 100644 GIT binary patch delta 341 zcmV-b0jmC)1MmWnB!4$aL_t(|ob8#>7K0!NhG}QL{{weX7wv2w1!s!D+W*}}i3);B zL;wH)fF1ir`}RfBt+~6Q))+4GwC{2v%R1U{-};qw5zhhXGCXZjN-Dy}CN$u!pXW5h z+Z@?r_F49-QP}=g>ePzZ5n$i7d06;4U|CIlo5M+_c}%r72q%LRXjSsEWyB7l6tp~C`TK%P$NAy)@`)(OhWF0JBEg$a$|DQ z(}%qFoo>P-*G|sC%dn*9ze*8WKR{IUq??Di8^Wg`Gn^tIyaTi{b=0%9_a0E^{AZ9Q n`ZU|9=!xnZ00000fE#lF-=)m_f0Bif00000NkvXXu0mjftO}x% delta 382 zcmV-^0fGMT0+|DlB!6H@L_t(|ob8#-5`-WKfNf`c{|D~S9^7#p`AG@H-S}>jLV;3H zNsJz6gDy&5|`rs-8BeJdzI8!XhYv)`hn$CUeq9KM3kN=L8-M)kmYs*x}g5>e>SAse6$eJx@$#A|>O{W{#2J45)kuE0Z0 zpu@#IDiNvk&v-M0s67B?dY5^`%Rj~K0ZptUhW-$56qFc-I)CvQ6EOe)0ALU2H3O|x zgvW)*pZPlc*U$P>zUT3DtQ;sJi|2Ii8sI#?y`1s(cHTTB?L2ut0#U-zY&Jh@zPh>d z{Hz5Xx z#C@;gb-f3WGk=Bnd4d-8k>tnln1bF=?)hcYurdJPguz=8muoV;g_=R))+#6MHU_<1 zsOfFqT({9GXFc!3(81MeQjR*CVdzYk*ZQ}BrkuT&BD5ZWsFYLRJk~dZ_Y|~@RS)pq z09u*aNya}jz6XpQ>jzDuud|IxIeU#k0RR91004k({S^WMu5b1JeYMBYy%KNkl|2;e8Iq)I6z z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEe1GdxJ>Id=0F)bD$0&SV zhjexfkXC(d`Rc|iT^#B9D<6mfX`-nwe9=?oVAu4S0iawlQyLgY&m-+Mt32KdZ4Emr z!%#7_^TNU+HVVT3lU-cUYN(5YlK}t#his@lU6X`_kFT91?=^jqvK`TM+dJu_G}`>F zu(K4Gf}(dp?0;;1F^`_w8Qw-H3W>{_Y(#0GA1SX(?Xddvfxfajx^M=c70}L_8Mo+S zhh7h)4X5qRu?Mm4&S#5g$q}83@S2I+&giH3tN>$oboqex`q0r14X5;avXf8+y=Y4% z0RR910Kie`7xa^RM915IBd6U7Z+qgEupY$NV|^#=5`Q?-$%sAjNcN>?YQd;BYzV8# z8hrFRi=G8k(v8DRq+JjA_FP4S&&Zv~Mw}l-t>4`)Js4${#?M z2VpPG`801Gz-i}zKZoa)WOoe<000000000000000000000KZM?E_SE@KZ^hW002ov JPDHLkV1m+w3F80& From 21c211746f27f05eae801ebd510251bf9116f826 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 24 Oct 2022 15:17:23 +0200 Subject: [PATCH 58/83] Fix too too small buffer for tx append --- MakefileLocal.mk | 2 +- ledgerjs-fio/package.json | 2 +- src/signTransaction.h | 4 ++-- test-integration/getVersion.js | 2 +- test-integration/signTransactionAddnft.js | 4 ++-- .../signTransactionAddnft/nanox.29.png | Bin 586 -> 793 bytes .../signTransactionAddnft/nanox.30.png | Bin 462 -> 663 bytes .../signTransactionAddnft/nanox.31.png | Bin 937 -> 462 bytes .../signTransactionAddnft/nanox.32.png | Bin 472 -> 937 bytes .../signTransactionAddnft/nanox.33.png | Bin 476 -> 472 bytes .../signTransactionAddnft/nanox.34.png | Bin 405 -> 476 bytes .../signTransactionAddnft/nanox.35.png | Bin 0 -> 405 bytes 12 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.35.png diff --git a/MakefileLocal.mk b/MakefileLocal.mk index dd654ee8..5335890c 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -22,7 +22,7 @@ endif APPNAME = "FIO" APPVERSION_M = 1 APPVERSION_N = 0 -APPVERSION_P = 0 +APPVERSION_P = 1 APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" APPPATH = "44'/235'" diff --git a/ledgerjs-fio/package.json b/ledgerjs-fio/package.json index 350e97e4..1114ee64 100644 --- a/ledgerjs-fio/package.json +++ b/ledgerjs-fio/package.json @@ -1,6 +1,6 @@ { "name": "ledgerjs-hw-app-fio", - "version": "0.0.1", + "version": "1.0.1", "files": [ "dist" ], diff --git a/src/signTransaction.h b/src/signTransaction.h index d3548e67..8ab40278 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -15,7 +15,7 @@ handler_fn_t signTransaction_handleAPDU; #define MAX_DISPLAY_KEY_LENGTH 20 #define MAX_DISPLAY_VALUE_LENGTH 220 -#define MAX_TX_APPEND_IN_SINGLE_APDU PUBKEY_LENGTH +#define MAX_TX_APPEND_IN_SINGLE_APDU 220 typedef struct { uint32_t initialized_magic; @@ -46,7 +46,7 @@ typedef struct { uint8_t dhCountedSectionEntryLevel; public_key_t otherPubkey; dh_context_t dhContext; - // DH encoding increases data length, we need to store the difference and add the value to + // DH encoding decreases data length, we need to store the difference and add the value to // counted section after we finish DH encoding uint16_t countedSectionDifference; diff --git a/test-integration/getVersion.js b/test-integration/getVersion.js index bf19a05f..c7dc9e35 100644 --- a/test-integration/getVersion.js +++ b/test-integration/getVersion.js @@ -19,7 +19,7 @@ testStep(" - - -", "await app.runTests()"); const {version, compatibility} = await app.getVersion(); assert.equal(version.major, 1) assert.equal(version.minor, 0) -assert.equal(version.patch, 0) +assert.equal(version.patch, 1) assert.equal(compatibility.isCompatible, true) assert.equal(compatibility.recommendedVersion, null) diff --git a/test-integration/signTransactionAddnft.js b/test-integration/signTransactionAddnft.js index fcb0df93..bfc116cf 100644 --- a/test-integration/signTransactionAddnft.js +++ b/test-integration/signTransactionAddnft.js @@ -308,7 +308,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); }, { chain_code: "BTC3", - contract_address: "Contract address3", + contract_address: "Contract address3 and it is very long so we really try long strings too", token_id: "Token3", url: "My URL3", hash: "My hash3", @@ -327,7 +327,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 2, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.29.png b/test-integration/snapshots/signTransactionAddnft/nanox.29.png index 687071d4e82c1190dff8e409049b6433ef9ead92..ca30ada135ad5899fb5d59918fb57d8f374fbd3e 100644 GIT binary patch delta 769 zcmV+c1OEKV1epeqB!A#ZL_t(|ob8)Qa>O7EMM)|*@%@j)U9xaBMJzNJiNVf)i&R>T zg#ZhXpi=?>00000U^-vU=X1{IKgV%!62Ja#RmB)iNzS>J)9PwTv$4)*etRCCz;PU& z79Jnc-@!P!NN9ngBrzi)JZ0p^^Ki}iF363fUQ){iVfnwVf`9AQz5#3Yqv}9@hI@eU z4mO)4x07@EBBbBuoSXC5McC(R+)H3*_yFV&av7tr17Ql1u?(A^m;tB_YOY{|{FhcV zp_W*})_~-&uVXIq6n3hOtt)Z>DCe5V4NTz7!|i>ARkYZ~ZBID~-42cRym*?UqAnGx zp1T@4Y7Ez~dw(1-l#n;qsl*!z_Yt_kuxxDs001-@vIf{wJ*l-*l=G<*@-vS|NEXtM z!Zt2st12rT{h-R&K+J;WEv~~Q*)3GZDtoQ^5lhPUNikQhpkE0eFB+P1S$K(8EyAWM zqn&<6d4TiGs6GG)wyedt{#E(ck#Nm~lx>ss1JIYIe}4_5rXXWCUDBoM*>|%%J*QL+ zYaX0Y!>CnGFPS!}0+yF~@FT$(tOsMT67>E`(EBS{(EEWW?^KEZNVe9dO6=cm#JB;7 z)pjc>8%RJPW=SP-LOBFe12nry+$n{bn@BNHhL)s&<<1$mOAoEesH z?F4&3xPPil?(frUkTkxZJVARB3^BPN|0UsC4^>-oKFQqLD3k0J^^L*$Y^Vx7vD$D4 z(rs0Y2MDP|S;!UeugR9~u=kpf3f*WC1^@s6004eA-0Y9w0fE@N3I3I&C0{5cCb?Lq zc~ONbq4A(a1I;5ful4Pi{-g*QO?zVUZh1A0N_r)hJShDuSJB6e+tHiM=24fTVw*E# z0A{)>m$V7I?Ys34wM%--Xyx7V7KLhcYF%|P<0IV+_kdd$H~kufrL~rKTjg)gb_}}K zu*t%sf;eC?Yknzz5XDBK+{fdlKUUYyL6F$>!=`AQUCP4l_3U6 zL`C9t0RR9104(QYSxX^=r*Pl5BpKJ=ttuKb%N`?N%Ubeg@T;Y65kgqj2OB!zdA-!* zqCA$%QIg6PVJxRjRG+%mdb-5tZUcU~UtGc`F6%4WBrlG_@_+8*`%TSrIj94|3%!m} z*n!mjuB`5W)Vb1fbUknHTkqpKdlunt7weddMk+7hlql#~Go_B1IP*xc@2)WPbgI45 zTq>G+Iy5+O&?5XlIb{m+rkvuKX8-_PvZ3|_&Q**5^eid!c$+NXlWtwDaBxZhsw?z< zu*v=?$l}FmW`9i|7R`YbQxWMSmPG7nISh@EP~K85GYwU_E{tWnu&T;v=Qv&?AoZgT zuSwJTlP#;UaaYVv_=g3F*ed%wpd+i}WXTr1rXb^I$}$8}7#ioIYW?!>W7Dwe@37La z(yI4ZgaH5m0FGzH+0g2ScFHbSi9Rhyy9O<>$G)3!J%3H5YqPX6Zpny-IU6xcHc=Al zyRhaSt<=^$vM6atpOxBGnm&S#WTY-^W+nghM?q=JZbnuf96<9&z;soaQ)ib`@}}kE z_EgGX>(g>UvyQc9Z<4*CQ=0n8{7C0kUD=-vwNU=Fnw}H&&}m`X2vD+#x=^anwM6=xFe+y00000NkvXXu0mjf?I;m0 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.30.png b/test-integration/snapshots/signTransactionAddnft/nanox.30.png index 34e5ceab69c61f6e41008ccfe72708b5eb164f9c..27a5e8aac666148b65cf430a99eea1b6f2f65e08 100644 GIT binary patch delta 639 zcmV-_0)YL_1D6GmBYy&3NklYQOO*E-BI{qrimEQM<$Qc8Ry`**F*XEIB=u7d9@Eq_!g(TD8BdI0kd4%@>w zlJfVG+5ek!9?oON$*rl{;smh+kYDi6OlB^?OhHtoji&~UT)|-gYHR9ru{Fqf`-6zWg}WAQ(Q@vsfD>H+9Q?J@BUPzSyGwtvS_e_l2)7*{BB;(Q|)iim<@ zb;j$@HQ9Cm_yWV_#rWMTL0002^RlV$$j(_hW9+okF0E-)cYoVRYh|K`<7&VA>>R&3@|JGW*}-RR zx)L7mD$Dhs3$Lz(TiqU8K&mmVHkPHM?_NkiQ9!GG{1L4xJU5fWk@ma~c{Twf|8wW1 zO8*GsBL`=aym?nWn1H$ZFj9-oj@-FYT}^;3>(z(0qAn9T5svW|X7wz$%)~apx6La6 f000000D#gT7i(Y+M7ViI00000NkvXXu0mjf=nKt^ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.31.png b/test-integration/snapshots/signTransactionAddnft/nanox.31.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 437 zcmV;m0ZRU<2hIbKBYy#vNklMTL0002^RlV$$j(_hW9+okF0E-)cYoVRYh|K`<7&VA>>R&3@|JGW*}-RR zx)L7mD$Dhs3$Lz(TiqU8K&mmVHkPHM?_NkiQ9!GG{1L4xJU5fWk@ma~c{Twf|8wW1 zO8*GsBL`=aym?nWn1H$ZFj9-oj@-FYT}^;3>(z(0qAn9T5svW|X7wz$%)~apx6La6 f000000D#gT7i(Y+M7ViI00000NkvXXu0mjf3OvoA delta 916 zcmV;F18e-w1E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000|%Q*hnUzb{nib+{KS?b?v;+ zAJd)7#jq9EmbA|Ft8=TVSf$Ro@&$IS!O_RZCm&p2&cHQ8F|;Zqd49B_iT**N{s$`#9%#QupTi0 p0000000000000000001RPk#&Tc`e{iGe7_U002ovPDHLkV1mAq<0b$A diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.33.png b/test-integration/snapshots/signTransactionAddnft/nanox.33.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!U1K0zQB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f({eoQ~&?~ delta 450 zcmV;z0X_cM1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*^U?AOHXW diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.34.png b/test-integration/snapshots/signTransactionAddnft/nanox.34.png index a7a8740548d2608032872a36bbf128b89b69847d..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 450 zcmV;z0X_be1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f~ut1-2eap delta 378 zcmV-=0fqkD1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Mon, 24 Oct 2022 16:07:40 +0200 Subject: [PATCH 59/83] Save some memory in unittests so they pass --- src/diffieHellmann_test.c | 20 +++++++++++++------- src/runTests.c | 1 + 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index 3b5bb816..e80ec34d 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -36,12 +36,14 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { PRINTF("\n"); public_key_t publicKey; - const char* publicKeyHex = - "0484e52dfea57b8f1787488a356374cd8e8515b8ad8db3dd4f9088d8e42ed2fb6d571e8894cccbdbf15e1b" - "d84f8b4362f52d1b5b712b9775c0a51cdd5ee9a9e8ca"; - uint8_t publicKeyBuffer[65]; - size_t publicKeyLen = decode_hex(publicKeyHex, publicKeyBuffer, SIZEOF(publicKeyBuffer)); - ASSERT(publicKeyLen == 65); + const uint8_t publicKeyBuffer[65] = { + 0x04, 0x84, 0xe5, 0x2d, 0xfe, 0xa5, 0x7b, 0x8f, 0x17, 0x87, 0x48, 0x8a, 0x35, 0x63, 0x74, + 0xcd, 0x8e, 0x85, 0x15, 0xb8, 0xad, 0x8d, 0xb3, 0xdd, 0x4f, 0x90, 0x88, 0xd8, 0xe4, 0x2e, + 0xd2, 0xfb, 0x6d, 0x57, 0x1e, 0x88, 0x94, 0xcc, 0xcb, 0xdb, 0xf1, 0x5e, 0x1b, 0xd8, 0x4f, + 0x8b, 0x43, 0x62, 0xf5, 0x2d, 0x1b, 0x5b, 0x71, 0x2b, 0x97, 0x75, 0xc0, 0xa5, 0x1c, 0xdd, + 0x5e, 0xe9, 0xa9, 0xe8, 0xca, + }; + size_t publicKeyLen = 65; cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, publicKeyBuffer, publicKeyLen, @@ -52,7 +54,7 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { #define TESTCASE(msgHex_, expectedEncMsg) \ { \ const char* msgHex = msgHex_; \ - uint8_t msg[100]; \ + uint8_t msg[50]; \ size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ uint8_t encMsg[200]; \ size_t encMsgLength = dh_encode(&pathSpec, \ @@ -330,9 +332,13 @@ __noinline_due_to_stack__ void run_diffieHellman_test() { PRINTF("12-word mnemonic: 11*abandon about\n"); TRACE_STACK_USAGE(); run_dh_encode_tests(); + TRACE_STACK_USAGE(); run_dh_encode_init_append_finalize_tests(); + TRACE_STACK_USAGE(); run_dh_decode_tests(); + TRACE_STACK_USAGE(); run_dh_decode_failed_hmac_tests(); + TRACE_STACK_USAGE(); } #endif // DEVEL diff --git a/src/runTests.c b/src/runTests.c index 1f8b05b3..a55b3a36 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -31,6 +31,7 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, run_diffieHellman_test(); run_integrityCheck_test(); run_countedSection_test(); + TRACE_STACK_USAGE(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; From 48ecf2271909a7340d22033dc1f18f0bc8ac2d29 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 24 Oct 2022 16:26:48 +0200 Subject: [PATCH 60/83] Fix code format, force lint with each push --- .github/workflows/lint-workflow.yml | 5 ----- src/diffieHellmann_test.c | 10 +++++----- src/runTests.c | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/lint-workflow.yml b/.github/workflows/lint-workflow.yml index e5a61570..24c3d6de 100644 --- a/.github/workflows/lint-workflow.yml +++ b/.github/workflows/lint-workflow.yml @@ -3,12 +3,7 @@ name: Code style check on: workflow_dispatch: push: - branches: - - master pull_request: - branches: - - master - - develop jobs: job_lint: diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index e80ec34d..07a41840 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -37,11 +37,11 @@ __noinline_due_to_stack__ static void run_dh_encode_tests() { public_key_t publicKey; const uint8_t publicKeyBuffer[65] = { - 0x04, 0x84, 0xe5, 0x2d, 0xfe, 0xa5, 0x7b, 0x8f, 0x17, 0x87, 0x48, 0x8a, 0x35, 0x63, 0x74, - 0xcd, 0x8e, 0x85, 0x15, 0xb8, 0xad, 0x8d, 0xb3, 0xdd, 0x4f, 0x90, 0x88, 0xd8, 0xe4, 0x2e, - 0xd2, 0xfb, 0x6d, 0x57, 0x1e, 0x88, 0x94, 0xcc, 0xcb, 0xdb, 0xf1, 0x5e, 0x1b, 0xd8, 0x4f, - 0x8b, 0x43, 0x62, 0xf5, 0x2d, 0x1b, 0x5b, 0x71, 0x2b, 0x97, 0x75, 0xc0, 0xa5, 0x1c, 0xdd, - 0x5e, 0xe9, 0xa9, 0xe8, 0xca, + 0x04, 0x84, 0xe5, 0x2d, 0xfe, 0xa5, 0x7b, 0x8f, 0x17, 0x87, 0x48, 0x8a, 0x35, + 0x63, 0x74, 0xcd, 0x8e, 0x85, 0x15, 0xb8, 0xad, 0x8d, 0xb3, 0xdd, 0x4f, 0x90, + 0x88, 0xd8, 0xe4, 0x2e, 0xd2, 0xfb, 0x6d, 0x57, 0x1e, 0x88, 0x94, 0xcc, 0xcb, + 0xdb, 0xf1, 0x5e, 0x1b, 0xd8, 0x4f, 0x8b, 0x43, 0x62, 0xf5, 0x2d, 0x1b, 0x5b, + 0x71, 0x2b, 0x97, 0x75, 0xc0, 0xa5, 0x1c, 0xdd, 0x5e, 0xe9, 0xa9, 0xe8, 0xca, }; size_t publicKeyLen = 65; cx_ecfp_init_public_key_no_throw(CX_CURVE_SECP256K1, diff --git a/src/runTests.c b/src/runTests.c index a55b3a36..8465e11d 100644 --- a/src/runTests.c +++ b/src/runTests.c @@ -31,7 +31,7 @@ void handleRunTests(uint8_t p1 MARK_UNUSED, run_diffieHellman_test(); run_integrityCheck_test(); run_countedSection_test(); - TRACE_STACK_USAGE(); + TRACE_STACK_USAGE(); PRINTF("All tests done\n"); } END_ASSERT_NOEXCEPT; From 24825a9ef2c4e4aafb1f5944243f4f019afd01e3 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 8 Nov 2022 14:52:02 +0100 Subject: [PATCH 61/83] Fio Oracle transaction --- MakefileTest.mk | 7 +- README.md | 20 ++ .../transactionTemplates/template_all.ts | 4 + .../template_wrapdomain.ts | 47 ++++ .../template_wraptokens.ts | 47 ++++ ledgerjs-fio/src/types/internal.ts | 24 +- ledgerjs-fio/src/types/public.ts | 34 ++- ledgerjs-fio/src/utils/parse.ts | 10 +- ledgerjs-fio/src/utils/parseTxActions.ts | 28 +- src/signTransactionIntegrity.c | 6 + .../signTransactionOtherFioOracle.js | 264 ++++++++++++++++++ .../nanos.01.png | Bin 0 -> 426 bytes .../nanos.02.png | Bin 0 -> 322 bytes .../nanos.03.png | Bin 0 -> 370 bytes .../nanos.04.png | Bin 0 -> 346 bytes .../nanos.05.png | Bin 0 -> 307 bytes .../nanos.06.png | Bin 0 -> 407 bytes .../nanos.07.png | Bin 0 -> 421 bytes .../nanos.08.png | Bin 0 -> 393 bytes .../nanos.09.png | Bin 0 -> 424 bytes .../nanos.10.png | Bin 0 -> 356 bytes .../nanos.11.png | Bin 0 -> 426 bytes .../nanos.12.png | Bin 0 -> 314 bytes .../nanos.13.png | Bin 0 -> 362 bytes .../nanos.14.png | Bin 0 -> 380 bytes .../nanos.15.png | Bin 0 -> 307 bytes .../nanos.16.png | Bin 0 -> 407 bytes .../nanos.17.png | Bin 0 -> 421 bytes .../nanos.18.png | Bin 0 -> 393 bytes .../nanos.19.png | Bin 0 -> 424 bytes .../nanos.20.png | Bin 0 -> 356 bytes .../nanos.21.png | Bin 0 -> 426 bytes .../nanox.01.png | Bin 0 -> 405 bytes .../nanox.02.png | Bin 0 -> 390 bytes .../nanox.03.png | Bin 0 -> 446 bytes .../nanox.04.png | Bin 0 -> 419 bytes .../nanox.05.png | Bin 0 -> 370 bytes .../nanox.06.png | Bin 0 -> 473 bytes .../nanox.07.png | Bin 0 -> 486 bytes .../nanox.08.png | Bin 0 -> 462 bytes .../nanox.09.png | Bin 0 -> 937 bytes .../nanox.10.png | Bin 0 -> 472 bytes .../nanox.11.png | Bin 0 -> 476 bytes .../nanox.12.png | Bin 0 -> 405 bytes .../nanox.13.png | Bin 0 -> 379 bytes .../nanox.14.png | Bin 0 -> 426 bytes .../nanox.15.png | Bin 0 -> 434 bytes .../nanox.16.png | Bin 0 -> 370 bytes .../nanox.17.png | Bin 0 -> 473 bytes .../nanox.18.png | Bin 0 -> 486 bytes .../nanox.19.png | Bin 0 -> 462 bytes .../nanox.20.png | Bin 0 -> 937 bytes .../nanox.21.png | Bin 0 -> 472 bytes .../nanox.22.png | Bin 0 -> 476 bytes .../nanox.23.png | Bin 0 -> 405 bytes 55 files changed, 483 insertions(+), 8 deletions(-) create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_wrapdomain.ts create mode 100644 ledgerjs-fio/src/interactions/transactionTemplates/template_wraptokens.ts create mode 100644 test-integration/signTransactionOtherFioOracle.js create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanos.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.22.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanox.23.png diff --git a/MakefileTest.mk b/MakefileTest.mk index 2fe9668b..e576be22 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -17,7 +17,7 @@ .PHONY: test-yarn test-yarn: - cd test-integration && yarn && cd .. + cd test-integration && yarn && yarn upgrade ledgerjs-hw-app-fio && cd .. TESTS_SPECULOS_DIR=test-integration @@ -46,6 +46,7 @@ speculos_port_5001_test_internal: $(call run_nodejs_test,5001,40001,signTransactionOtherFioReqobt.js) $(call run_nodejs_test,5001,40001,signTransactionOtherFioStaking.js) $(call run_nodejs_test,5001,40001,signTransactionOtherEosio.js) + $(call run_nodejs_test,5001,40001,signTransactionOtherFioOracle.js) @echo "# ALL TESTS COMPLETED!" | tee -a speculos-port-5001.log .PHONY: speculos_port_5001_unit_test_internal @@ -70,8 +71,8 @@ speculos_port_5001_test: $(call run_announce,$@) $(MAKE) --no-print-directory speculos_port_5001_start && ($(MAKE) --no-print-directory speculos_port_5001_test_internal; ret=$$?;$(MAKE) --no-print-directory speculos_port_5001_stop;$(call run_announce,note: logs: cat speculos-port-5001.log);cat speculos-port-5001.log; exit $$ret) -.PHONY: get_integrity_hashes_ftom_logs -get_integrity_hashes_ftom_logs: +.PHONY: get_integrity_hashes_from_logs +get_integrity_hashes_from_logs: sed -n -e 's/^.*Integrity check for: //p' speculos-port-5001.log diff --git a/README.md b/README.md index 8d07b8ed..f0fd7b50 100644 --- a/README.md +++ b/README.md @@ -155,5 +155,25 @@ This requires `DEVEL=1` app version. If you use Speculos with `DEVEL=1` build, then you can find logs from `sha_256_append` function. Concatenating what went into hash computation gives the transaction body as signed by ledger. +## How to add a new type of action + +The suggested method is the following: +1. Start writing speculos integration test for the new action until the point when you can retrieve necessary types ftom ABI. Add the new test to the list of tests in MakefileTest.mk. You may want to comment out all other tests durring first phase of the development. +2. Add new public type for the new action's data to ledgerjs-fio/src/types/public.ts . Do not forget to add the new type to Action definition. Add internal types for parsed action data to ledgerjs-fio/src/types/internal.ts . Again, do not forget to add the types ParsedAction definition. +3. Add action data parsing to ledgerjs-fio/src/utils/parseTxActions.ts . +4. Add action data parsing to ledgerjs-fio/src/utils/parse.ts . +5. Prepare transaction template in ledgerjs-fio/src/interaction/transactionTemplates . To get the right serialization you have to follow ABI obtained in step 1. Add the new template into the template list in ledgerjs-fio/src/interaction/transactionTemplates/template_all.ts +6. Build js and connect it with integration tests: `make js-build`, `make test-yarn` +7. Build integration tests for the new action. If the action allows for multiple workflows, all of them must be in integration tests, otherwise we will not get all necessary hashes in later steps. +8. Create a directory in test-integration/snapshots/ that matches the name of your test. +9. Build the NanoS app in devel mode that ignores integrity check: `make clean`, `NO_INTEGRITY_CHECK=1 DEVEL=1 make`. +10. Run Speculos integration tests, generating screenshots for the new test: `TEST_PNG_RE_GEN_FOR=snapshots make speculos_port_5001_test`. After this, the logs contain all necessary interity hashes. +11. Retrieve the integrity hashes from the logs `make get_integrity_hashes_from_logs`. Append the new ones (or if you ran all the tests replace the whole list) to the list of hashes in src/signTransactionIntegrity.c . Run `make format` to format the changes. +12. Build NanoS+ app `make clean`, `TARGET_DEVICE=NANO_SP make` and generate the snapshots for the new test `TEST_PNG_RE_GEN_FOR=snapshots TARGET_DEVICE=NANO_SP make speculos_port_5001_test` . Now the app is not in devel mode thus we validate that integrity hashes were added correctly. +13. Review all snapshots. Uncomment tests you commented in MakefileTest.mk . You can either run all tests again lacally, or use CI to run all tests. + + + + diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts index 3fb36c85..36f36be7 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_all.ts @@ -25,6 +25,8 @@ import { template_stakefio } from "./template_stakefio"; import { template_unstakefio } from "./template_unstakefio"; import { template_voteproducer } from "./template_voteproducer"; import { template_voteproxy } from "./template_voteproxy"; +import { template_wrapdomain } from "./template_wrapdomain"; +import { template_wraptokens } from "./template_wraptokens"; export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { //Validate template expectations @@ -55,6 +57,8 @@ export function templete_all(chainId: HexString, tx: ParsedTransaction, parsedPa template_unstakefio, template_voteproducer, template_voteproxy, + template_wrapdomain, + template_wraptokens ])(chainId, tx, parsedPath) if (actionCommands.length == 0) return []; diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_wrapdomain.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_wrapdomain.ts new file mode 100644 index 00000000..f43ad1df --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_wrapdomain.ts @@ -0,0 +1,47 @@ +import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTransferDomain, ParsedWrapDomain, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.oracle", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("wrapdomain", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_wrapdomain(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedWrapDomain = tx.actions[0].data as ParsedWrapDomain; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Wrap FIO Domain"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("FIO Domain", Buffer.from(actionData.fio_domain), 1, 62), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Public Address", Buffer.from(actionData.public_address)), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max oracle fee", uint64_to_buf(actionData.max_oracle_fee).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_wraptokens.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_wraptokens.ts new file mode 100644 index 00000000..08b1893d --- /dev/null +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_wraptokens.ts @@ -0,0 +1,47 @@ +import type {HexString, ParsedActionAuthorisation, ParsedTransaction, ParsedTransferDomain, ParsedWrapTokens, Uint8_t, ValidBIP32Path} from "../../types/internal" +import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW_MESSAGE, COMMANDS_COUNTED_SECTION, COMMAND_STORE_VALUE, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, + ADD_STORAGE_CHECK, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" +import { uint64_to_buf } from "../../utils/serialize" +import { parseNameString, validate } from "../../utils/parse" +import { InvalidDataReason } from "../../errors"; + +const CONTRACT_ACCOUNT = parseNameString("fio.oracle", InvalidDataReason.UNEXPECTED_ERROR); +const CONTRACT_NAME = parseNameString("wraptokens", InvalidDataReason.UNEXPECTED_ERROR); + + +export function template_wraptokens(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidBIP32Path): Array { + //Validate template expectations + validate(tx.context_free_actions.length == 0, InvalidDataReason.CONTEXT_FREE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions.length == 1, InvalidDataReason.MULTIPLE_ACTIONS_NOT_SUPPORTED); + validate(tx.actions[0].authorization.length == 1, InvalidDataReason.MULTIPLE_AUTHORIZATION_NOT_SUPPORTED); + + // Template matching + if (tx.actions[0].account !== CONTRACT_ACCOUNT || tx.actions[0].name !== CONTRACT_NAME) { + return []; + } + + const actionData: ParsedWrapTokens = tx.actions[0].data as ParsedWrapTokens; + const authorization: ParsedActionAuthorisation = tx.actions[0].authorization[0]; + + return [ + COMMAND_APPEND_CONST_DATA(tx.actions[0].account+tx.actions[0].name+"01" as HexString), + COMMAND_SHOW_MESSAGE("Action", "Wrap Tokens"), + COMMAND_STORE_VALUE(1 as Uint8_t, Buffer.from(tx.actions[0].authorization[0].actor, "hex")), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.actor, "hex"), 8, 8)), + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(authorization.permission, "hex"), 8, 8), + ...COMMANDS_COUNTED_SECTION([ + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Amount", uint64_to_buf(actionData.amount).reverse()), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Public Address", Buffer.from(actionData.public_address)), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max oracle fee", uint64_to_buf(actionData.max_oracle_fee).reverse()), + COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW("Max fee", uint64_to_buf(actionData.max_fee).reverse()), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.tpid)), + ADD_STORAGE_CHECK(VALUE_STORAGE_COMPARE.COMPARE_REGISTER1, + COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW(Buffer.from(actionData.actor, "hex"), 8, 8)), + ]), + ]; +} diff --git a/ledgerjs-fio/src/types/internal.ts b/ledgerjs-fio/src/types/internal.ts index 6dde4b6e..17bc54f0 100644 --- a/ledgerjs-fio/src/types/internal.ts +++ b/ledgerjs-fio/src/types/internal.ts @@ -234,6 +234,26 @@ export type ParsedVoteOnBlockProducers = { actor: NameString } +export type ParsedWrapDomain = { + fio_domain: VarlenAsciiString + chain_code: VarlenAsciiString + public_address: VarlenAsciiString + max_oracle_fee: Uint64_str + max_fee: Uint64_str + tpid: VarlenAsciiString + actor: NameString +} + +export type ParsedWrapTokens = { + amount: Uint64_str + chain_code: VarlenAsciiString + public_address: VarlenAsciiString + max_oracle_fee: Uint64_str + max_fee: Uint64_str + tpid: VarlenAsciiString + actor: NameString +} + export type ParsedActionAuthorisation = { actor: NameString permission: NameString @@ -261,7 +281,9 @@ export type ParsedActionData = ParsedStakeFIO | ParsedUnstakeFIO | ParsedVoteOnBlockProducers | - ParsedProxyVotesToRegisteredProxy + ParsedProxyVotesToRegisteredProxy | + ParsedWrapDomain | + ParsedWrapTokens export type ParsedAction = { account: NameString diff --git a/ledgerjs-fio/src/types/public.ts b/ledgerjs-fio/src/types/public.ts index 17550b9b..0a568471 100644 --- a/ledgerjs-fio/src/types/public.ts +++ b/ledgerjs-fio/src/types/public.ts @@ -489,6 +489,36 @@ export type ActionAuthorisation = { permission: string } +/** + * Wrap domain + * @category Basic types + * @see [[Action]] + */ +export type WrapDomain = { + fio_domain: string + chain_code: string + public_address: string + max_oracle_fee: bigint_like + max_fee: bigint_like + tpid: string + actor: string +} + +/** + * Wrap tokens + * @category Basic types + * @see [[Action]] + */ +export type WrapTokens = { + amount: bigint_like + chain_code: string + public_address: string + max_oracle_fee: bigint_like + max_fee: bigint_like + tpid: string + actor: string +} + /** * Represents actions in the transaction. @@ -521,7 +551,9 @@ export type Action = { StakeFIO | UnstakeFIO | VoteOnBlockProducers | - ProxyVotesToRegisteredProxy + ProxyVotesToRegisteredProxy | + WrapDomain | + WrapTokens } diff --git a/ledgerjs-fio/src/utils/parse.ts b/ledgerjs-fio/src/utils/parse.ts index 175e31d1..40855a9f 100644 --- a/ledgerjs-fio/src/utils/parse.ts +++ b/ledgerjs-fio/src/utils/parse.ts @@ -4,9 +4,9 @@ import {_Uint64_bigint, _Uint64_num, FixlenHexString, HexString, NameString, Par import type {ActionAuthorisation, bigint_like, Transaction, TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransactionMetadata, MapBlockchainPublicAddress, RemoveMappedAddress, MapNFTSignature, RemoveNFTSignature, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain, MakeDomainPublic, - TransferDomain, RemoveAllNFT, StakeFIO, UnstakeFIO, VoteOnBlockProducers, ProxyVotesToRegisteredProxy} from "../types/public" + TransferDomain, RemoveAllNFT, StakeFIO, UnstakeFIO, VoteOnBlockProducers, ProxyVotesToRegisteredProxy, WrapDomain, WrapTokens} from "../types/public" import { parseActionDataRecordOtherBlockchainTransactionMetadata, parseActionDataRequestFunds, parseActionDataTransferFIOToken, - parseBuyBundledTransaction, parseCancelRequestFunds, parseMakeDomainPublic, parseMapBlockchainPublicAddress, parseMapNFTSignature, + parseBuyBundledTransaction, parseCancelRequestFunds, ParsedWrapDomain, ParsedWrapTokens, parseMakeDomainPublic, parseMapBlockchainPublicAddress, parseMapNFTSignature, parseProxyVotesToRegisteredProxy, parseRegisterAddress, parseRegisterDomain, parseRejectRequestFunds, parseRemoveAllMappedAddresses, parseRemoveAllNFT, parseRemoveMappedAddress, parseRemoveNFTSignature, parseRenewDomain, parseStakeFIO, parseTransferAddress, @@ -296,6 +296,12 @@ export function parseTransaction(chainId: string, tx: Transaction): ParsedTransa else if (action.account === "eosio" && action.name === "voteproxy") { parsedActionData = parseProxyVotesToRegisteredProxy(action.data as ProxyVotesToRegisteredProxy) } + else if (action.account === "fio.oracle" && action.name === "wrapdomain") { + parsedActionData = ParsedWrapDomain(action.data as WrapDomain) + } + else if (action.account === "fio.oracle" && action.name === "wraptokens") { + parsedActionData = ParsedWrapTokens(action.data as WrapTokens) + } //manual validate so that automatic tools are OK wit conversion that follows if(parsedActionData == null) { diff --git a/ledgerjs-fio/src/utils/parseTxActions.ts b/ledgerjs-fio/src/utils/parseTxActions.ts index c7a80c3a..a42bd935 100644 --- a/ledgerjs-fio/src/utils/parseTxActions.ts +++ b/ledgerjs-fio/src/utils/parseTxActions.ts @@ -2,7 +2,7 @@ import { TransferFIOTokensData, RequestFundsData, RecordOtherBlockchainTransacti PublicAddress, RemoveMappedAddress, NFT, MapNFTSignature, RemoveNFTSignature, SmallNFT, RemoveAllMappedAddresses, CancelFundsRequest, RejectFundsRequest, BuyBundledTransaction, RegisterAddress, TransferAddress, RegisterDomain, RenewDomain, MakeDomainPublic, TransferDomain, RemoveAllNFT, StakeFIO, UnstakeFIO, VoteOnBlockProducers, - ProxyVotesToRegisteredProxy } from "fio"; + ProxyVotesToRegisteredProxy, WrapDomain, WrapTokens } from "fio"; import { InvalidDataReason } from "../errors" import { _Uint64_bigint, @@ -33,6 +33,8 @@ import { ParsedVoteOnBlockProducers, VarlenAsciiString, ParsedProxyVotesToRegisteredProxy, + ParsedWrapDomain, + ParsedWrapTokens, } from "../types/internal" import { parseAscii, parseBoolean, parseHexString, parseNameString, parseUint64_str, validate } from "./parse"; @@ -319,3 +321,27 @@ export function parseProxyVotesToRegisteredProxy(data: ProxyVotesToRegisteredPro actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), } } + +export function ParsedWrapDomain(data: WrapDomain): ParsedWrapDomain { + return { + fio_domain: parseAscii(data.fio_domain, InvalidDataReason.INVALID_FIO_ADDRESS, 1, 62), + chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + public_address: parseAscii(data.public_address, InvalidDataReason.INVALID_PUBLIC_ADDRESS, 1, 64), + max_oracle_fee: parseUint64_str(data.max_oracle_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} + +export function ParsedWrapTokens(data: WrapTokens): ParsedWrapTokens { + return { + amount: parseUint64_str(data.amount, {}, InvalidDataReason.INVALID_AMOUNT), + chain_code: parseAscii(data.chain_code, InvalidDataReason.INVALID_CHAIN_CODE, 1, 10), + public_address: parseAscii(data.public_address, InvalidDataReason.INVALID_PUBLIC_ADDRESS, 1, 64), + max_oracle_fee: parseUint64_str(data.max_oracle_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + max_fee: parseUint64_str(data.max_fee, {}, InvalidDataReason.INVALID_MAX_FEE), + actor: parseNameString(data.actor, InvalidDataReason.INVALID_ACTOR), + tpid: parseAscii(data.tpid, InvalidDataReason.INVALID_TPID, 0, 20), + } +} diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index c14e9de3..e7a0f428 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -285,6 +285,12 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0xf8, 0x4d, 0xac, 0xa3, 0xb0, 0x93, 0xa7, 0x32, 0x47, 0x21, 0x4c, 0x7e, 0xf1, 0xfb, 0x99, 0x0a, 0xb5, 0x4f, 0xf0, 0x6b, 0x9d, 0x3b, 0x69, 0xac, 0x73, 0xd9, 0x91, 0xf9, 0xdf, 0x79, 0x54, 0x4c}, + {0x15, 0x20, 0xa0, 0x1b, 0x8c, 0x14, 0xc1, 0x46, 0x2c, 0xe2, 0xcb, + 0x55, 0x20, 0x7c, 0xef, 0xba, 0x6d, 0x77, 0x56, 0x5f, 0xec, 0xe1, + 0xbf, 0xe9, 0x0a, 0x60, 0xf9, 0xa2, 0xe1, 0x2d, 0x33, 0xf8}, + {0x97, 0xb8, 0xd1, 0xc4, 0x89, 0x18, 0x9b, 0xbc, 0xcb, 0xc6, 0xb1, 0x8e, 0x54, 0x0c, 0xba, 0x73, + 0x37, 0xd2, 0xe3, 0x8f, 0x04, 0x3e, 0x98, 0xad, 0xb9, 0x7e, 0x6d, 0xba, 0xaa, 0xae, 0xef, 0xa0} + }; enum { diff --git a/test-integration/signTransactionOtherFioOracle.js b/test-integration/signTransactionOtherFioOracle.js new file mode 100644 index 00000000..c4da42c9 --- /dev/null +++ b/test-integration/signTransactionOtherFioOracle.js @@ -0,0 +1,264 @@ +import { testStart, testStep, testEnd, getScriptName, getSpeculosDefaultConf } from "./speculos-common.js" +import { getTransport } from "./speculos-transport.js" +import { getButtonsAndSnapshots } from "./speculos-buttons-and-snapshots.js" +import { Fio, DeviceStatusError, HARDENED } from "ledgerjs-hw-app-fio" +import { fileURLToPath } from 'url'; +import assert from 'assert/strict'; +import fetch from "node-fetch" +import crypto from "crypto" + +import textenc from "text-encoding" +const TextEncoder = textenc.TextEncoder; +const TextDecoder = textenc.TextDecoder; + +import fiojs from '@fioprotocol/fiojs' +const ser = fiojs.Serialize; +const Ecc = fiojs.Ecc +const PrivateKey = Ecc.PrivateKey; +const Signature = Ecc.Signature; +const arrayToHex = fiojs.Numeric.arrayToHex; +import { JsSignatureProvider } from "@fioprotocol/fiojs/dist/chain-jssig.js" + + +// We initialize chain constantsconstants +const textDecoder = new TextDecoder() +const textEncoder = new TextEncoder() + +const httpEndpointTestnet = 'http://testnet.fioprotocol.io' +const httpEndpointMainnet = 'https://fio.greymass.com' + +const infoTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_info')).json() +const infoMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_info')).json() + +const abiFioAddressTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiFioAddressMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.token"}`, + method: 'POST', +})).json() +const abiMsigMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "eosio.msig"}`, + method: 'POST', +})).json() +const abiOracleMainnet = await (await fetch(httpEndpointMainnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.oracle"}`, + method: 'POST', +})).json() +const abiOracleTestnet = await (await fetch(httpEndpointTestnet + '/v1/chain/get_abi', { + body: `{"account_name": "fio.oracle"}`, + method: 'POST', +})).json() + +// Get a Map of all the types from fio.address +const typesFioAddressTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressTestnet.abi) +const typesTransactionTestnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigTestnet.abi) +const typesFioAddressMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiFioAddressMainnet.abi) +const typesTransactionMainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiMsigMainnet.abi) +const typesTransaction2Mainnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiOracleMainnet.abi) +const typesTransaction2Testnet = ser.getTypesFromAbi(ser.createInitialTypes(), abiOracleTestnet.abi) + +console.log(typesTransaction2Mainnet.get('wrapdomain')); +console.log(typesTransaction2Mainnet.get('wraptokens')); + +const networkInfo = { + "TESTNET": { + chainId: infoTestnet.chain_id, + typesFioAddress: typesFioAddressTestnet, + typesTransaction: typesTransactionTestnet, + typesTransaction2: typesTransaction2Testnet, + }, + "MAINNET": { + chainId: infoMainnet.chain_id, + typesFioAddress: typesFioAddressMainnet, + typesTransaction: typesTransactionMainnet, + typesTransaction2: typesTransaction2Mainnet, + }, +} + + + + +// Serializes and signs transaction using fiojs +async function buildTxAndSignatureFioJs(network, tx, txtype, pubkey) { + // We serialize the transaction + // Get the action type + const actionType = networkInfo[network].typesTransaction2.get(txtype) + + // Serialize the actions[] "data" field (This example assumes a single action, though transactions may hold an array of actions.) + const buffer = new ser.SerialBuffer({textEncoder, textDecoder}) + actionType.serialize(buffer, tx.actions[0].data) + const serializedData = arrayToHex(buffer.asUint8Array()) + + // Get the actions parameter from the transaction and replace the data field with the serialized data field + let serializedAction = tx.actions[0] + serializedAction = { + ...serializedAction, + data: serializedData, + } + + const rawTransaction = { + ...tx, + max_net_usage_words: 0x00, + max_cpu_usage_ms: 0x00, + delay_sec: 0x00, + context_free_actions: [], + actions: [serializedAction], //Actions have to be an array + transaction_extensions: [], + } + + // Get the transaction action type + const txnaction = networkInfo[network].typesTransaction.get('transaction') + + // Serialize the transaction + const buffer2 = new ser.SerialBuffer({textEncoder, textDecoder}) + txnaction.serialize(buffer2, rawTransaction) + const serializedTransaction = buffer2.asUint8Array() + + //Lets compute hash in using Signature.sign + const msg = Buffer.concat([Buffer.from(networkInfo[network].chainId, "hex"), serializedTransaction, Buffer.allocUnsafe(32).fill(0)]) + const hash = crypto.createHash('sha256').update(msg).digest('hex') + + //Now using signatureProvider.sign + const signatureProvider = new JsSignatureProvider([ + PrivateKey.fromHex(privateKeyDHex).toString(), + PrivateKey.fromHex(otherPrivateKeyDHex).toString() + ]); + const requiredKeys = [pubkey.toString()] + const serializedContextFreeData = null + + const signedTxn = await signatureProvider.sign({ + chainId: networkInfo[network].chainId, + requiredKeys: requiredKeys, + serializedTransaction: serializedTransaction, + serializedContextFreeData: serializedContextFreeData, + }) + + return { + serializedTx: serializedTransaction, + fullMsg: msg, + hash: crypto.createHash('sha256').update(msg).digest('hex'), + signature: signedTxn.signatures[0], + } +} + + +const path = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 0] +const privateKeyDHex = "4d597899db76e87933e7c6841c2d661810f070bad20487ef20eb84e182695a3a" +const privateKey = PrivateKey(Buffer.from(privateKeyDHex, "hex")) +const publicKey = privateKey.toPublic() + +const otherPath = [44 + HARDENED, 235 + HARDENED, 0 + HARDENED, 0, 1] +const otherPrivateKeyDHex = "90835ae980cd10e9ca7df05d0e3b3c22e0aed0e75527511337f7c53a9d0c6c69" +const otherPrivateKey = PrivateKey(Buffer.from(otherPrivateKeyDHex,"hex")) +const otherPublicKey = otherPrivateKey.toPublic() + +const basicTx = { + expiration: "2021-08-28T12:50:36.686", + ref_block_num: 0x1122, + ref_block_prefix: 0x33445566, + context_free_actions: [], + transaction_extensions: [], +} + +const scriptName = getScriptName(fileURLToPath(import.meta.url)); +testStart(scriptName); + +const speculosConf = getSpeculosDefaultConf(); +const transport = await getTransport(speculosConf); +const app = new Fio(transport); +const device = getButtonsAndSnapshots(scriptName, speculosConf); + +await device.makeStartingScreenshot(); + + +testStep(" - - -", "Sign testnet transaction - wrapdomain"); +{ + const network = "TESTNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.oracle", + name: "wrapdomain", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + fio_domain: "Test domain", + chain_code: "Chain", + public_address: "My address", + max_oracle_fee: 0x44223344, + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +testStep(" - - -", "Sign mainnet transaction - wraptokens"); +{ + const network = "MAINNET" + const tx = { + ...basicTx, + actions: [{ + account: "fio.oracle", + name: "wraptokens", + authorization: [{ + actor: "aftyershcu22", + permission: "active", + }], + data: { + amount: "1234567890123", + chain_code: "Chain", + public_address: "My address", + max_oracle_fee: 0x44223344, + max_fee: 0x11223344, + tpid: "rewards@wallet", + actor: "aftyershcu22", + }, + }], + } + + // Lets sign the transaction with fiojs + const {serializedTx, fullMsg, hash, signature} = await buildTxAndSignatureFioJs(network, tx, tx.actions[0].name, publicKey) + console.log("Full message:") + console.log(fullMsg.toString("hex")); + + // Lets sign the transaction with ledger + const chainId = networkInfo[network].chainId + const ledgerPromise = app.signTransaction({path, chainId, tx}) + await device.review([1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); + const ledgerResponse = await ledgerPromise; + const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) + + assert.equal(ledgerResponse.txHashHex, hash); + assert.equal(signatureLedger.verify(fullMsg, publicKey), true); + assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); +} + +await transport.close() +testEnd(scriptName); +process.stdin.pause() \ No newline at end of file diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.01.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a GIT binary patch literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.03.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.03.png new file mode 100644 index 0000000000000000000000000000000000000000..2350f305557e0a48a15e27c47c732207486b36d3 GIT binary patch literal 370 zcmV-&0ge8NP)?xvucPCH- z6WtZ2l-({7aYx)0ltd^l_&fs6U(vNumBEiiCywQ$Zi>2Ys*;Nmv^VO>g5u`-K)e zw}33snA_veW-lK|bL;wL5$@;@MB}CZ&f>Gmg9oP6Nj!&XA7b=_DD)$DIh0wiRQ%Rs zH4ROe(ne-jibe4fcD8Cz_soDc12uMPkjc8lifG7BiHSdd`C8=#h10eqUIVq6SJLr6 zfNf4#5tOlN1|(M1sy+*U(TJCeD_EOXs$ml~o-Xq4k?{!=$u+ zC#nof>vx4dz(XG(fmMQiJAE21+mPPJ4u7ogYH&Fp|4P-^szNVfR-ZCnua0kV!^*yl z^PZ@SHjLHNxBeI?8`^rXURa|>{~+@b0jXrnVR4hbpbikW7O7y&?r2Z=>xSyy+|=MA spime^Ax#4!>z-+QqJ$7a2qDw*15fL@BFkWu=Kufz07*qoM6N<$f*UED%>V!Z literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.05.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.05.png new file mode 100644 index 0000000000000000000000000000000000000000..c992df66467ef2d2f421310fea4cee9e297c2d03 GIT binary patch literal 307 zcmV-30nGl1P)-RheMVd3A_{44FpzO7L2RLc5|%I!kzrUZWj zluWi}i%z{xK&UnlSdUmQbcfbo9o}HyfVh2qfVNlM*i@x1^7-XwT}NtYjO)}AqyM;$ zkTUv{r~=FAPsKT~$2qXH*gt`{yy=g8j!IOq||R{?bcwfev5kVKLonm7jl005}5Z^u>C6okdsi)wQJwQW9%Apu@0LI=*F^sFT4Je zMM*mkI_?4T-Y7UR9yYgUcpV>%+)&YRxrttzFvDd3Y7Yb6SEs?H@V*gMj)nJ4K@7%& z7>s26PC%YERSvP0!htZ~!yLrA9c3Q^e}o=gj0+^6m^TAtS&h_8Bm=9SvrOoud`~u= zxO$K}XM|lUZUWO}fQ+JF$P^Kh&zKPb2!)rXapv{hT-5kY80+U)-h%Vq%;EK^Jg0001(#<8bkAGE9-j8ZIUgzu1E z@5QmF?Gx4c@&MEeEl<15zw3x1Umn#h)LK_XXwQxLQ?S6bvTGox{wAUS4H3H_ zy`$@>aBHx!#;Isbaguu7Y5e74ybbXFbPO(q_nlBV7T$LSF^C5-h@|J(jTJTRw}hjt z{75dgP~BnC#w0@r*4@-nQ(avd$C4jc?HN8&R&`AE9FvUDyGH9uZR5v`lduq2;q>%? zvf@1W$p)Q-t;y(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.09.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.09.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIN~Q4KYkO(LvbCd22WKPj&yp9B&B007VB3;8t2(?Qg<%m4rY07*qo IM6N<$f`pNkLjV8( literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.14.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.14.png new file mode 100644 index 0000000000000000000000000000000000000000..69780ef1fc4a0544ed0f51079647deaa5315c576 GIT binary patch literal 380 zcmV-?0fYXDP)f}Zw8`u%PAYyX zHhg1hsxfsT3u|d#tJzx{&>UX!yJC&#MDr}a)lzUbLz7j?Hr}(KTg1G1P8hVm;$ zeF=-RzTR_X9!UM1pT|97+Q)M@0r&v}udE;*4e``pdTI7!z=ysI;%cO$j{wTion~R* z$hv&cErY2^4b!570Lr5@ll@=@Ht9YA#95yujmuu~|A?mi&TV{tTDlMhzVRYK^Z@_> a04oRWX5~y|rKHXP0000-RheMVd3A_{44FpzO7L2RLc5|%I!kzrUZWj zluWi}i%z{xK&UnlSdUmQbcfbo9o}HyfVh2qfVNlM*i@x1^7-XwT}NtYjO)}AqyM;$ zkTUv{r~=FAPsKT~$2qXH*gt`{yy=g8j!IOq||R{?bcwfev5kVKLonm7jl005}5Z^u>C6okdsi)wQJwQW9%Apu@0LI=*F^sFT4Je zMM*mkI_?4T-Y7UR9yYgUcpV>%+)&YRxrttzFvDd3Y7Yb6SEs?H@V*gMj)nJ4K@7%& z7>s26PC%YERSvP0!htZ~!yLrA9c3Q^e}o=gj0+^6m^TAtS&h_8Bm=9SvrOoud`~u= zxO$K}XM|lUZUWO}fQ+JF$P^Kh&zKPb2!)rXapv{hT-5kY80+U)-h%Vq%;EK^Jg0001(#<8bkAGE9-j8ZIUgzu1E z@5QmF?Gx4c@&MEeEl<15zw3x1Umn#h)LK_XXwQxLQ?S6bvTGox{wAUS4H3H_ zy`$@>aBHx!#;Isbaguu7Y5e74ybbXFbPO(q_nlBV7T$LSF^C5-h@|J(jTJTRw}hjt z{75dgP~BnC#w0@r*4@-nQ(avd$C4jc?HN8&R&`AE9FvUDyGH9uZR5v`lduq2;q>%? zvf@1W$p)Q-t;y(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanos.19.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanos.19.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iJVP}gJ3L||k$b*k8>d7(401yN000000Km8SSzUo~DW&{5 z#<;L1Gh8-+487#B8T>Usj=l`HdeVj8)fE_21lnEPy-F#``RDr31+OCj%bay{kKI4` z9RWqGJ%;|^Zxs|+h8nTQMhpM|0D#cGx%ImZw(E%LMP#=L`fGIsI;i=d7-LE)?}Y0& zGi;bg)Fa>``<6eqpR~hbHZ=F>qj#^a&b^FILEFbYGui;^48A3E4IrPWK|EvSbaWKR z58Y=Yi3`4vCl+mw;yW1GT-MRyBY6d#oxJM--_4+gaHH4@$0A@zFdBod4 z#hn4oSVtWCL%dT^;uz}09*GzL003ZMQ6A8wPB~{0DTjCc?&-(B+qeDG2%Wo@mdRVA zmbirn?P1-4Pw7W7O@`cDp!4T4158ru*a2wPvGQ6s&f`>czwM{i1;9z^#@q6>E&zTu zI=$c+iuycY8}@rZy-$`FeOY$}(|ha{PVRjG0DynCq8j?6TIP4F1^d@TUp;-FUcbk2 z-ZBvz)hSDQb^L5@%+cQ^)?byP)kIeq)$~UX2Id1j`r!4(E8SQy$z05Ux@FBx=V$q{ z3_$mvESAN-0|F-my55TK?d=q#5PnaP3lkX;r9N-J6$xOZQqlP zQh!1n`syU#o$l7N2^UWY63r+t{O;v)>f`eIS54RD8dBfQ+Ijq${GV?PTG!;9=l__^ z%DQZ!+nbF7%s?ag6k2OiKOD24`dq$W_WPwXI(y&VS(JHw>9j1?mf05D<_F&jUDxrX zxqsfZ{|%S*kLCSZUpsSw>`J!FEJ8*>&cZ zMl8O?oYeD_Wy}3X&sJ%rPV8TO+3f7yUg1cfr3viUzWJUn`Z@ddw252yi3a|ByH7Ju z^UZ9j#O>@nM$$JOj-#WUrE40=IgTsJSZKoc?i;wN2(-DlTNOgc=O6vl1gj$e+q52Yi;usv zI|7PWTMT_Vf6^=GvsqmzwyvZ%CS^OOWJA*$ zFf~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&OvAZ}HJ6ZibAo73aUB8%=hL3}FYkcb#96M(51DH46I-SbK6y&OBpRDH;R$kr*I%o>QPD8fD000000N`}L6jyWcS|LQu P00000NkvXXu0mjfFW}h! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.07.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.07.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9cc4e395030ecad1d4b0f8ad2b2ae4747e9c70 GIT binary patch literal 486 zcmV@P)JR+wf;P6H58)kw7ytkO0Kh9KQv!xb0_C`dGyF3d^-+Wn4CA=f1}MYV z`21Bxl$DnBN;Md66=#G>&habs;Hlt~K2mv_iB%6u8CguY+dGQfph zx-_B}J~h%r?lOR&*646%4W#T%Z{XIP@4&tuaJc@=p??R1U65YUsa0BQFzc<=MAKDE zQr{K;0001#%=s!p2xaA4aMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.10.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.10.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.14.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.14.png new file mode 100644 index 0000000000000000000000000000000000000000..9573f43ee512e712e1c81779837a89e97f945fb1 GIT binary patch literal 426 zcmV;b0agBqP)UEIA&DarY#|JDVscL0|8beVg+{Da>+ zpoq1{&>#Fg1qB{Mjo2d*0{{R3An21@ziF^tM@&1B-6rU-)gAajv;GrfOey6|xZar| zVIEQ60iEhwey#t|4vW>$d_^Bu_v-G;Vlru}YnEeG%uXWKDVjEaYlob! zC~7v}Hop>dRZM+}v|lLwT1K76N-1LM*%svu{m<23yquK*2(8)R!XwuuCVhXVj=|jh zfa1*SK>W?{*23&P2}5^4eV)HAgUV{Cve^!c@EOJ*AFpC@OY&A200000008huZ=#7M U9W%UB4gdfE07*qoM6N<$g6&N_0%s;U3u{Ex36p0YO=K0I|vWYzU+b0Vc`59a)~I{Eip{7loA zjTfuG2W2hvoh!xlEYWA(4I!0P{2O(xSN^oCI>4Dc;h(Db72B_$XKFugc(dHg`u*34 zWmV_dN0;m~&poCamgI+qbF> Y%-<$^&2i*q-VT!SboFyt=akR{0Fi^k7XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.16.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d47cc63bdda47434f3c01ca8eaba5161967d0a5b GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh2lG+(oVfJ5M| z67@Iro|~uFO%P!6(#UO>-0|F-my55TK?d=q#5PnaP3lkX;r9N-J6$xOZQqlP zQh!1n`syU#o$l7N2^UWY63r+t{O;v)>f`eIS54RD8dBfQ+Ijq${GV?PTG!;9=l__^ z%DQZ!+nbF7%s?ag6k2OiKOD24`dq$W_WPwXI(y&VS(JHw>9j1?mf05D<_F&jUDxrX zxqsfZ{|%S*kLCSZUpsSw>`J!FEJ8*>&cZ zMl8O?oYeD_Wy}3X&sJ%rPV8TO+3f7yUg1cfr3viUzWJUn`Z@ddw252yi3a|ByH7Ju z^UZ9j#O>@nM$$JOj-#WUrE40=IgTsJSZKoc?i;wN2(-DlTNOgc=O6vl1gj$e+q52Yi;usv zI|7PWTMT_Vf6^=GvsqmzwyvZ%CS^OOWJA*$ zFf~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&OvAZ}HJ6ZibAo73aUB8%=hL3}FYkcb#96M(51DH46I-SbK6y&OBpRDH;R$kr*I%o>QPD8fD000000N`}L6jyWcS|LQu P00000NkvXXu0mjfFW}h! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.18.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.18.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9cc4e395030ecad1d4b0f8ad2b2ae4747e9c70 GIT binary patch literal 486 zcmV@P)JR+wf;P6H58)kw7ytkO0Kh9KQv!xb0_C`dGyF3d^-+Wn4CA=f1}MYV z`21Bxl$DnBN;Md66=#G>&habs;Hlt~K2mv_iB%6u8CguY+dGQfph zx-_B}J~h%r?lOR&*646%4W#T%Z{XIP@4&tuaJc@=p??R1U65YUsa0BQFzc<=MAKDE zQr{K;0001#%=s!p2xaA4aMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.21.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.21.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Tue, 8 Nov 2022 15:13:00 +0100 Subject: [PATCH 62/83] Bump version --- Makefile | 4 ++++ MakefileLocal.mk | 3 --- MakefileTest.mk | 4 +++- ledgerjs-fio/package.json | 2 +- test-integration/getVersion.js | 6 +++--- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index a592f086..3b616d4a 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,10 @@ # BOLOS_SDK NOT DEFINED We use a containerized build approach # containerize build is recommended +APPVERSION_M = 1 +APPVERSION_N = 0 +APPVERSION_P = 2 + NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" PIN = 5555 diff --git a/MakefileLocal.mk b/MakefileLocal.mk index 5335890c..c23aea33 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -20,9 +20,6 @@ $(error Environment variable BOLOS_SDK is not set) endif APPNAME = "FIO" -APPVERSION_M = 1 -APPVERSION_N = 0 -APPVERSION_P = 1 APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" APPPATH = "44'/235'" diff --git a/MakefileTest.mk b/MakefileTest.mk index e576be22..93b80c18 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -24,7 +24,9 @@ TESTS_SPECULOS_DIR=test-integration define run_nodejs_test @cd $(TESTS_SPECULOS_DIR) \ && { { { \ - TEST_SPECULOS_API_PORT=$(1) TEST_SPECULOS_APDU_PORT=$(2) TEST_DEVICE=$(TEST_DEVICE) node $(3) 2>&1; echo $$? >&3; \ + TEST_SPECULOS_API_PORT=$(1) TEST_SPECULOS_APDU_PORT=$(2) TEST_DEVICE=$(TEST_DEVICE) \ + APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) \ + node $(3) 2>&1; echo $$? >&3; \ } | tee -a ../speculos-port-$(1).log >&4; } 3>&1 | { read xs; exit $$xs; } } 4>&1 endef diff --git a/ledgerjs-fio/package.json b/ledgerjs-fio/package.json index 1114ee64..693e63df 100644 --- a/ledgerjs-fio/package.json +++ b/ledgerjs-fio/package.json @@ -1,6 +1,6 @@ { "name": "ledgerjs-hw-app-fio", - "version": "1.0.1", + "version": "1.0.2", "files": [ "dist" ], diff --git a/test-integration/getVersion.js b/test-integration/getVersion.js index c7dc9e35..7bfc2a57 100644 --- a/test-integration/getVersion.js +++ b/test-integration/getVersion.js @@ -17,9 +17,9 @@ await device.makeStartingScreenshot(); testStep(" - - -", "await app.runTests()"); const {version, compatibility} = await app.getVersion(); -assert.equal(version.major, 1) -assert.equal(version.minor, 0) -assert.equal(version.patch, 1) +assert.equal(version.major, parseInt(process.env.APPVERSION_M)) +assert.equal(version.minor, parseInt(process.env.APPVERSION_N)) +assert.equal(version.patch, parseInt(process.env.APPVERSION_P)) assert.equal(compatibility.isCompatible, true) assert.equal(compatibility.recommendedVersion, null) From f88f3e412e8a6315e42d250c2629944afe8b8ea0 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 21 Nov 2022 21:44:54 +0100 Subject: [PATCH 63/83] Change DH texts Do not show their pubkey and our path. Fix issue with swapped payer and payee public address in recordobt --- Makefile | 2 +- src/decodeDH.c | 40 ++---------------- src/signTransaction.c | 18 ++------ test-integration/decodeMessage.js | 10 ++--- test-integration/signTransactionCommandsDH.js | 21 +++------ ...TransactionCommandsDHAndCountedSections.js | 10 ++--- .../signTransactionNewfundsreq.js | 2 +- test-integration/signTransactionRecordobt.js | 4 +- .../snapshots/decodeMessage/nanos.04.png | Bin 408 -> 384 bytes .../snapshots/decodeMessage/nanos.05.png | Bin 456 -> 298 bytes .../snapshots/decodeMessage/nanos.06.png | Bin 384 -> 323 bytes .../snapshots/decodeMessage/nanos.07.png | Bin 298 -> 334 bytes .../snapshots/decodeMessage/nanos.08.png | Bin 323 -> 283 bytes .../snapshots/decodeMessage/nanos.09.png | Bin 334 -> 329 bytes .../snapshots/decodeMessage/nanos.10.png | Bin 283 -> 426 bytes .../snapshots/decodeMessage/nanos.11.png | Bin 329 -> 282 bytes .../snapshots/decodeMessage/nanos.12.png | Bin 426 -> 426 bytes .../snapshots/decodeMessage/nanos.13.png | Bin 339 -> 384 bytes .../snapshots/decodeMessage/nanos.14.png | Bin 426 -> 298 bytes .../snapshots/decodeMessage/nanos.15.png | Bin 408 -> 323 bytes .../snapshots/decodeMessage/nanos.16.png | Bin 456 -> 334 bytes .../snapshots/decodeMessage/nanos.17.png | Bin 384 -> 319 bytes .../snapshots/decodeMessage/nanos.18.png | Bin 298 -> 291 bytes .../snapshots/decodeMessage/nanos.19.png | Bin 323 -> 329 bytes .../snapshots/decodeMessage/nanos.20.png | Bin 334 -> 426 bytes .../snapshots/decodeMessage/nanos.21.png | Bin 319 -> 282 bytes .../snapshots/decodeMessage/nanos.22.png | Bin 291 -> 426 bytes .../snapshots/decodeMessage/nanos.23.png | Bin 329 -> 384 bytes .../snapshots/decodeMessage/nanos.24.png | Bin 426 -> 373 bytes .../snapshots/decodeMessage/nanos.25.png | Bin 339 -> 298 bytes .../snapshots/decodeMessage/nanos.26.png | Bin 426 -> 323 bytes .../snapshots/decodeMessage/nanos.27.png | Bin 408 -> 334 bytes .../snapshots/decodeMessage/nanos.28.png | Bin 456 -> 269 bytes .../snapshots/decodeMessage/nanos.29.png | Bin 412 -> 261 bytes .../snapshots/decodeMessage/nanos.30.png | Bin 418 -> 283 bytes .../snapshots/decodeMessage/nanos.31.png | Bin 298 -> 329 bytes .../snapshots/decodeMessage/nanos.32.png | Bin 323 -> 426 bytes .../snapshots/decodeMessage/nanos.33.png | Bin 334 -> 282 bytes .../snapshots/decodeMessage/nanos.34.png | Bin 269 -> 426 bytes .../snapshots/decodeMessage/nanos.35.png | Bin 261 -> 384 bytes .../snapshots/decodeMessage/nanos.36.png | Bin 283 -> 373 bytes .../snapshots/decodeMessage/nanos.37.png | Bin 329 -> 298 bytes .../snapshots/decodeMessage/nanos.38.png | Bin 426 -> 323 bytes .../snapshots/decodeMessage/nanos.39.png | Bin 339 -> 334 bytes .../snapshots/decodeMessage/nanos.40.png | Bin 426 -> 269 bytes .../snapshots/decodeMessage/nanos.41.png | Bin 408 -> 261 bytes .../snapshots/decodeMessage/nanos.42.png | Bin 456 -> 365 bytes .../snapshots/decodeMessage/nanos.43.png | Bin 412 -> 332 bytes .../snapshots/decodeMessage/nanos.44.png | Bin 418 -> 329 bytes .../snapshots/decodeMessage/nanos.45.png | Bin 298 -> 426 bytes .../snapshots/decodeMessage/nanos.46.png | Bin 323 -> 339 bytes .../snapshots/decodeMessage/nanos.47.png | Bin 334 -> 426 bytes .../snapshots/decodeMessage/nanos.48.png | Bin 269 -> 384 bytes .../snapshots/decodeMessage/nanos.49.png | Bin 261 -> 298 bytes .../snapshots/decodeMessage/nanos.50.png | Bin 365 -> 323 bytes .../snapshots/decodeMessage/nanos.51.png | Bin 332 -> 334 bytes .../snapshots/decodeMessage/nanos.52.png | Bin 329 -> 283 bytes .../snapshots/decodeMessage/nanos.53.png | Bin 426 -> 329 bytes .../snapshots/decodeMessage/nanos.54.png | Bin 339 -> 426 bytes .../snapshots/decodeMessage/nanos.55.png | Bin 426 -> 0 bytes .../snapshots/decodeMessage/nanos.56.png | Bin 408 -> 0 bytes .../snapshots/decodeMessage/nanos.57.png | Bin 456 -> 0 bytes .../snapshots/decodeMessage/nanos.58.png | Bin 384 -> 0 bytes .../snapshots/decodeMessage/nanos.59.png | Bin 298 -> 0 bytes .../snapshots/decodeMessage/nanos.60.png | Bin 323 -> 0 bytes .../snapshots/decodeMessage/nanos.61.png | Bin 334 -> 0 bytes .../snapshots/decodeMessage/nanos.62.png | Bin 283 -> 0 bytes .../snapshots/decodeMessage/nanos.63.png | Bin 329 -> 0 bytes .../snapshots/decodeMessage/nanos.64.png | Bin 426 -> 0 bytes .../snapshots/decodeMessage/nanox.04.png | Bin 476 -> 557 bytes .../snapshots/decodeMessage/nanox.05.png | Bin 974 -> 358 bytes .../snapshots/decodeMessage/nanox.06.png | Bin 456 -> 385 bytes .../snapshots/decodeMessage/nanox.07.png | Bin 557 -> 393 bytes .../snapshots/decodeMessage/nanox.08.png | Bin 358 -> 347 bytes .../snapshots/decodeMessage/nanox.09.png | Bin 385 -> 455 bytes .../snapshots/decodeMessage/nanox.10.png | Bin 393 -> 405 bytes .../snapshots/decodeMessage/nanox.11.png | Bin 347 -> 346 bytes .../snapshots/decodeMessage/nanox.12.png | Bin 455 -> 592 bytes .../snapshots/decodeMessage/nanox.13.png | Bin 405 -> 557 bytes .../snapshots/decodeMessage/nanox.14.png | Bin 401 -> 358 bytes .../snapshots/decodeMessage/nanox.15.png | Bin 592 -> 385 bytes .../snapshots/decodeMessage/nanox.16.png | Bin 476 -> 393 bytes .../snapshots/decodeMessage/nanox.17.png | Bin 974 -> 380 bytes .../snapshots/decodeMessage/nanox.18.png | Bin 456 -> 345 bytes .../snapshots/decodeMessage/nanox.19.png | Bin 557 -> 455 bytes .../snapshots/decodeMessage/nanox.20.png | Bin 358 -> 405 bytes .../snapshots/decodeMessage/nanox.21.png | Bin 385 -> 346 bytes .../snapshots/decodeMessage/nanox.22.png | Bin 393 -> 724 bytes .../snapshots/decodeMessage/nanox.23.png | Bin 380 -> 539 bytes .../snapshots/decodeMessage/nanox.24.png | Bin 345 -> 557 bytes .../snapshots/decodeMessage/nanox.25.png | Bin 455 -> 544 bytes .../snapshots/decodeMessage/nanox.26.png | Bin 405 -> 358 bytes .../snapshots/decodeMessage/nanox.27.png | Bin 401 -> 385 bytes .../snapshots/decodeMessage/nanox.28.png | Bin 724 -> 393 bytes .../snapshots/decodeMessage/nanox.29.png | Bin 539 -> 330 bytes .../snapshots/decodeMessage/nanox.30.png | Bin 476 -> 308 bytes .../snapshots/decodeMessage/nanox.31.png | Bin 974 -> 347 bytes .../snapshots/decodeMessage/nanox.32.png | Bin 456 -> 455 bytes .../snapshots/decodeMessage/nanox.33.png | Bin 548 -> 405 bytes .../snapshots/decodeMessage/nanox.34.png | Bin 556 -> 346 bytes .../snapshots/decodeMessage/nanox.35.png | Bin 358 -> 724 bytes .../snapshots/decodeMessage/nanox.36.png | Bin 385 -> 539 bytes .../snapshots/decodeMessage/nanox.37.png | Bin 393 -> 760 bytes .../snapshots/decodeMessage/nanox.38.png | Bin 330 -> 743 bytes .../snapshots/decodeMessage/nanox.39.png | Bin 308 -> 358 bytes .../snapshots/decodeMessage/nanox.40.png | Bin 347 -> 385 bytes .../snapshots/decodeMessage/nanox.41.png | Bin 455 -> 393 bytes .../snapshots/decodeMessage/nanox.42.png | Bin 405 -> 330 bytes .../snapshots/decodeMessage/nanox.43.png | Bin 401 -> 308 bytes .../snapshots/decodeMessage/nanox.44.png | Bin 724 -> 480 bytes .../snapshots/decodeMessage/nanox.45.png | Bin 539 -> 555 bytes .../snapshots/decodeMessage/nanox.46.png | Bin 476 -> 455 bytes .../snapshots/decodeMessage/nanox.47.png | Bin 974 -> 405 bytes .../snapshots/decodeMessage/nanox.48.png | Bin 456 -> 401 bytes .../snapshots/decodeMessage/nanox.49.png | Bin 748 -> 592 bytes .../snapshots/decodeMessage/nanox.50.png | Bin 760 -> 557 bytes .../snapshots/decodeMessage/nanox.54.png | Bin 330 -> 347 bytes .../snapshots/decodeMessage/nanox.55.png | Bin 308 -> 455 bytes .../snapshots/decodeMessage/nanox.56.png | Bin 480 -> 390 bytes .../snapshots/decodeMessage/nanox.57.png | Bin 555 -> 405 bytes .../snapshots/decodeMessage/nanox.58.png | Bin 455 -> 0 bytes .../snapshots/decodeMessage/nanox.59.png | Bin 405 -> 0 bytes .../snapshots/decodeMessage/nanox.60.png | Bin 401 -> 0 bytes .../snapshots/decodeMessage/nanox.61.png | Bin 592 -> 0 bytes .../snapshots/decodeMessage/nanox.62.png | Bin 476 -> 0 bytes .../snapshots/decodeMessage/nanox.63.png | Bin 974 -> 0 bytes .../snapshots/decodeMessage/nanox.64.png | Bin 456 -> 0 bytes .../snapshots/decodeMessage/nanox.65.png | Bin 557 -> 0 bytes .../snapshots/decodeMessage/nanox.66.png | Bin 358 -> 0 bytes .../snapshots/decodeMessage/nanox.67.png | Bin 385 -> 0 bytes .../snapshots/decodeMessage/nanox.68.png | Bin 393 -> 0 bytes .../snapshots/decodeMessage/nanox.69.png | Bin 347 -> 0 bytes .../snapshots/decodeMessage/nanox.70.png | Bin 455 -> 0 bytes .../snapshots/decodeMessage/nanox.71.png | Bin 390 -> 0 bytes .../snapshots/decodeMessage/nanox.72.png | Bin 405 -> 0 bytes .../signTransactionCommandsDH/nanos.03.png | Bin 414 -> 330 bytes .../signTransactionCommandsDH/nanos.04.png | Bin 475 -> 372 bytes .../signTransactionCommandsDH/nanos.05.png | Bin 372 -> 300 bytes .../signTransactionCommandsDH/nanos.06.png | Bin 447 -> 424 bytes .../signTransactionCommandsDH/nanos.07.png | Bin 377 -> 356 bytes .../signTransactionCommandsDH/nanos.08.png | Bin 424 -> 426 bytes .../signTransactionCommandsDH/nanos.09.png | Bin 356 -> 322 bytes .../signTransactionCommandsDH/nanos.12.png | Bin 426 -> 330 bytes .../signTransactionCommandsDH/nanos.14.png | Bin 414 -> 330 bytes .../signTransactionCommandsDH/nanos.15.png | Bin 475 -> 300 bytes .../signTransactionCommandsDH/nanos.16.png | Bin 322 -> 330 bytes .../signTransactionCommandsDH/nanos.17.png | Bin 414 -> 426 bytes .../signTransactionCommandsDH/nanos.18.png | Bin 475 -> 322 bytes .../signTransactionCommandsDH/nanos.19.png | Bin 447 -> 330 bytes .../signTransactionCommandsDH/nanos.20.png | Bin 377 -> 300 bytes .../signTransactionCommandsDH/nanos.21.png | Bin 414 -> 426 bytes .../signTransactionCommandsDH/nanos.22.png | Bin 475 -> 322 bytes .../signTransactionCommandsDH/nanos.23.png | Bin 426 -> 330 bytes .../signTransactionCommandsDH/nanos.24.png | Bin 322 -> 372 bytes .../signTransactionCommandsDH/nanos.25.png | Bin 414 -> 426 bytes .../signTransactionCommandsDH/nanos.26.png | Bin 475 -> 0 bytes .../signTransactionCommandsDH/nanos.27.png | Bin 447 -> 0 bytes .../signTransactionCommandsDH/nanos.28.png | Bin 377 -> 0 bytes .../signTransactionCommandsDH/nanos.29.png | Bin 426 -> 0 bytes .../signTransactionCommandsDH/nanos.30.png | Bin 322 -> 0 bytes .../signTransactionCommandsDH/nanos.31.png | Bin 414 -> 0 bytes .../signTransactionCommandsDH/nanos.32.png | Bin 475 -> 0 bytes .../signTransactionCommandsDH/nanos.33.png | Bin 372 -> 0 bytes .../signTransactionCommandsDH/nanos.34.png | Bin 426 -> 0 bytes .../nanos.03.png | Bin 414 -> 330 bytes .../nanos.04.png | Bin 475 -> 300 bytes .../nanos.05.png | Bin 447 -> 424 bytes .../nanos.06.png | Bin 377 -> 356 bytes .../nanos.07.png | Bin 424 -> 426 bytes .../nanos.08.png | Bin 356 -> 322 bytes .../nanos.09.png | Bin 426 -> 330 bytes .../nanos.10.png | Bin 322 -> 426 bytes .../nanos.11.png | Bin 414 -> 322 bytes .../nanos.12.png | Bin 475 -> 330 bytes .../nanos.14.png | Bin 322 -> 0 bytes .../nanos.15.png | Bin 414 -> 0 bytes .../nanos.16.png | Bin 475 -> 0 bytes .../nanos.17.png | Bin 426 -> 0 bytes .../signTransactionNewfundsreq/nanos.06.png | Bin 414 -> 330 bytes .../signTransactionNewfundsreq/nanos.07.png | Bin 455 -> 425 bytes .../signTransactionNewfundsreq/nanos.08.png | Bin 425 -> 382 bytes .../signTransactionNewfundsreq/nanos.09.png | Bin 382 -> 317 bytes .../signTransactionNewfundsreq/nanos.10.png | Bin 317 -> 325 bytes .../signTransactionNewfundsreq/nanos.11.png | Bin 325 -> 300 bytes .../signTransactionNewfundsreq/nanos.12.png | Bin 447 -> 393 bytes .../signTransactionNewfundsreq/nanos.13.png | Bin 377 -> 424 bytes .../signTransactionNewfundsreq/nanos.14.png | Bin 393 -> 356 bytes .../signTransactionNewfundsreq/nanos.15.png | Bin 424 -> 426 bytes .../signTransactionNewfundsreq/nanos.16.png | Bin 356 -> 314 bytes .../signTransactionNewfundsreq/nanos.17.png | Bin 426 -> 377 bytes .../signTransactionNewfundsreq/nanos.18.png | Bin 314 -> 467 bytes .../signTransactionNewfundsreq/nanos.19.png | Bin 377 -> 467 bytes .../signTransactionNewfundsreq/nanos.20.png | Bin 467 -> 330 bytes .../signTransactionNewfundsreq/nanos.21.png | Bin 467 -> 425 bytes .../signTransactionNewfundsreq/nanos.22.png | Bin 414 -> 382 bytes .../signTransactionNewfundsreq/nanos.23.png | Bin 455 -> 317 bytes .../signTransactionNewfundsreq/nanos.24.png | Bin 425 -> 325 bytes .../signTransactionNewfundsreq/nanos.25.png | Bin 382 -> 300 bytes .../signTransactionNewfundsreq/nanos.26.png | Bin 317 -> 393 bytes .../signTransactionNewfundsreq/nanos.27.png | Bin 325 -> 424 bytes .../signTransactionNewfundsreq/nanos.28.png | Bin 447 -> 356 bytes .../signTransactionNewfundsreq/nanos.29.png | Bin 377 -> 426 bytes .../signTransactionNewfundsreq/nanos.30.png | Bin 393 -> 322 bytes .../signTransactionNewfundsreq/nanos.31.png | Bin 424 -> 377 bytes .../signTransactionNewfundsreq/nanos.32.png | Bin 356 -> 467 bytes .../signTransactionNewfundsreq/nanos.33.png | Bin 426 -> 467 bytes .../signTransactionNewfundsreq/nanos.34.png | Bin 322 -> 330 bytes .../signTransactionNewfundsreq/nanos.35.png | Bin 377 -> 425 bytes .../signTransactionNewfundsreq/nanos.36.png | Bin 467 -> 382 bytes .../signTransactionNewfundsreq/nanos.37.png | Bin 467 -> 317 bytes .../signTransactionNewfundsreq/nanos.38.png | Bin 414 -> 325 bytes .../signTransactionNewfundsreq/nanos.39.png | Bin 455 -> 300 bytes .../signTransactionNewfundsreq/nanos.40.png | Bin 425 -> 393 bytes .../signTransactionNewfundsreq/nanos.41.png | Bin 382 -> 424 bytes .../signTransactionNewfundsreq/nanos.42.png | Bin 317 -> 356 bytes .../signTransactionNewfundsreq/nanos.43.png | Bin 325 -> 426 bytes .../signTransactionNewfundsreq/nanos.44.png | Bin 447 -> 314 bytes .../signTransactionNewfundsreq/nanos.45.png | Bin 377 -> 377 bytes .../signTransactionNewfundsreq/nanos.46.png | Bin 393 -> 467 bytes .../signTransactionNewfundsreq/nanos.47.png | Bin 424 -> 467 bytes .../signTransactionNewfundsreq/nanos.48.png | Bin 356 -> 330 bytes .../signTransactionNewfundsreq/nanos.49.png | Bin 426 -> 425 bytes .../signTransactionNewfundsreq/nanos.50.png | Bin 314 -> 382 bytes .../signTransactionNewfundsreq/nanos.51.png | Bin 377 -> 317 bytes .../signTransactionNewfundsreq/nanos.52.png | Bin 467 -> 325 bytes .../signTransactionNewfundsreq/nanos.53.png | Bin 467 -> 300 bytes .../signTransactionNewfundsreq/nanos.54.png | Bin 414 -> 393 bytes .../signTransactionNewfundsreq/nanos.55.png | Bin 455 -> 424 bytes .../signTransactionNewfundsreq/nanos.56.png | Bin 425 -> 356 bytes .../signTransactionNewfundsreq/nanos.57.png | Bin 382 -> 426 bytes .../signTransactionNewfundsreq/nanos.58.png | Bin 317 -> 0 bytes .../signTransactionNewfundsreq/nanos.59.png | Bin 325 -> 0 bytes .../signTransactionNewfundsreq/nanos.60.png | Bin 447 -> 0 bytes .../signTransactionNewfundsreq/nanos.61.png | Bin 377 -> 0 bytes .../signTransactionNewfundsreq/nanos.62.png | Bin 393 -> 0 bytes .../signTransactionNewfundsreq/nanos.63.png | Bin 424 -> 0 bytes .../signTransactionNewfundsreq/nanos.64.png | Bin 356 -> 0 bytes .../signTransactionNewfundsreq/nanos.65.png | Bin 426 -> 0 bytes .../signTransactionNewfundsreq/nanox.06.png | Bin 488 -> 392 bytes .../signTransactionNewfundsreq/nanox.07.png | Bin 976 -> 580 bytes .../signTransactionNewfundsreq/nanox.08.png | Bin 455 -> 445 bytes .../signTransactionNewfundsreq/nanox.09.png | Bin 580 -> 376 bytes .../signTransactionNewfundsreq/nanox.10.png | Bin 445 -> 382 bytes .../signTransactionNewfundsreq/nanox.11.png | Bin 376 -> 415 bytes .../signTransactionNewfundsreq/nanox.12.png | Bin 382 -> 462 bytes .../signTransactionNewfundsreq/nanox.13.png | Bin 953 -> 937 bytes .../signTransactionNewfundsreq/nanox.14.png | Bin 498 -> 472 bytes .../signTransactionNewfundsreq/nanox.15.png | Bin 526 -> 476 bytes .../signTransactionNewfundsreq/nanox.16.png | Bin 462 -> 405 bytes .../signTransactionNewfundsreq/nanox.17.png | Bin 937 -> 379 bytes .../signTransactionNewfundsreq/nanox.18.png | Bin 472 -> 451 bytes .../signTransactionNewfundsreq/nanox.19.png | Bin 476 -> 539 bytes .../signTransactionNewfundsreq/nanox.20.png | Bin 405 -> 540 bytes .../signTransactionNewfundsreq/nanox.21.png | Bin 379 -> 392 bytes .../signTransactionNewfundsreq/nanox.22.png | Bin 451 -> 580 bytes .../signTransactionNewfundsreq/nanox.23.png | Bin 539 -> 445 bytes .../signTransactionNewfundsreq/nanox.24.png | Bin 540 -> 376 bytes .../signTransactionNewfundsreq/nanox.25.png | Bin 488 -> 382 bytes .../signTransactionNewfundsreq/nanox.26.png | Bin 976 -> 415 bytes .../signTransactionNewfundsreq/nanox.27.png | Bin 455 -> 462 bytes .../signTransactionNewfundsreq/nanox.28.png | Bin 580 -> 937 bytes .../signTransactionNewfundsreq/nanox.29.png | Bin 445 -> 472 bytes .../signTransactionNewfundsreq/nanox.30.png | Bin 376 -> 476 bytes .../signTransactionNewfundsreq/nanox.31.png | Bin 382 -> 405 bytes .../signTransactionNewfundsreq/nanox.32.png | Bin 953 -> 390 bytes .../signTransactionNewfundsreq/nanox.33.png | Bin 498 -> 451 bytes .../signTransactionNewfundsreq/nanox.34.png | Bin 526 -> 539 bytes .../signTransactionNewfundsreq/nanox.35.png | Bin 462 -> 540 bytes .../signTransactionNewfundsreq/nanox.36.png | Bin 937 -> 392 bytes .../signTransactionNewfundsreq/nanox.37.png | Bin 472 -> 580 bytes .../signTransactionNewfundsreq/nanox.38.png | Bin 476 -> 445 bytes .../signTransactionNewfundsreq/nanox.39.png | Bin 405 -> 376 bytes .../signTransactionNewfundsreq/nanox.40.png | Bin 390 -> 382 bytes .../signTransactionNewfundsreq/nanox.41.png | Bin 451 -> 415 bytes .../signTransactionNewfundsreq/nanox.42.png | Bin 539 -> 462 bytes .../signTransactionNewfundsreq/nanox.43.png | Bin 540 -> 937 bytes .../signTransactionNewfundsreq/nanox.44.png | Bin 488 -> 472 bytes .../signTransactionNewfundsreq/nanox.45.png | Bin 976 -> 476 bytes .../signTransactionNewfundsreq/nanox.46.png | Bin 455 -> 405 bytes .../signTransactionNewfundsreq/nanox.47.png | Bin 580 -> 379 bytes .../signTransactionNewfundsreq/nanox.48.png | Bin 445 -> 451 bytes .../signTransactionNewfundsreq/nanox.49.png | Bin 376 -> 539 bytes .../signTransactionNewfundsreq/nanox.50.png | Bin 382 -> 540 bytes .../signTransactionNewfundsreq/nanox.51.png | Bin 953 -> 392 bytes .../signTransactionNewfundsreq/nanox.52.png | Bin 498 -> 580 bytes .../signTransactionNewfundsreq/nanox.53.png | Bin 526 -> 445 bytes .../signTransactionNewfundsreq/nanox.54.png | Bin 462 -> 376 bytes .../signTransactionNewfundsreq/nanox.55.png | Bin 937 -> 382 bytes .../signTransactionNewfundsreq/nanox.56.png | Bin 472 -> 415 bytes .../signTransactionNewfundsreq/nanox.57.png | Bin 476 -> 462 bytes .../signTransactionNewfundsreq/nanox.58.png | Bin 405 -> 937 bytes .../signTransactionNewfundsreq/nanox.59.png | Bin 379 -> 472 bytes .../signTransactionNewfundsreq/nanox.60.png | Bin 451 -> 476 bytes .../signTransactionNewfundsreq/nanox.61.png | Bin 539 -> 405 bytes .../signTransactionNewfundsreq/nanox.62.png | Bin 540 -> 0 bytes .../signTransactionNewfundsreq/nanox.63.png | Bin 488 -> 0 bytes .../signTransactionNewfundsreq/nanox.64.png | Bin 976 -> 0 bytes .../signTransactionNewfundsreq/nanox.65.png | Bin 455 -> 0 bytes .../signTransactionNewfundsreq/nanox.66.png | Bin 580 -> 0 bytes .../signTransactionNewfundsreq/nanox.67.png | Bin 445 -> 0 bytes .../signTransactionNewfundsreq/nanox.68.png | Bin 376 -> 0 bytes .../signTransactionNewfundsreq/nanox.69.png | Bin 382 -> 0 bytes .../signTransactionNewfundsreq/nanox.70.png | Bin 953 -> 0 bytes .../signTransactionNewfundsreq/nanox.71.png | Bin 498 -> 0 bytes .../signTransactionNewfundsreq/nanox.72.png | Bin 526 -> 0 bytes .../signTransactionNewfundsreq/nanox.73.png | Bin 462 -> 0 bytes .../signTransactionNewfundsreq/nanox.74.png | Bin 937 -> 0 bytes .../signTransactionNewfundsreq/nanox.75.png | Bin 472 -> 0 bytes .../signTransactionNewfundsreq/nanox.76.png | Bin 476 -> 0 bytes .../signTransactionNewfundsreq/nanox.77.png | Bin 405 -> 0 bytes .../signTransactionRecordobt/nanos.07.png | Bin 414 -> 330 bytes .../signTransactionRecordobt/nanos.08.png | Bin 455 -> 432 bytes .../signTransactionRecordobt/nanos.09.png | Bin 432 -> 425 bytes .../signTransactionRecordobt/nanos.10.png | Bin 425 -> 382 bytes .../signTransactionRecordobt/nanos.11.png | Bin 382 -> 317 bytes .../signTransactionRecordobt/nanos.12.png | Bin 317 -> 325 bytes .../signTransactionRecordobt/nanos.13.png | Bin 325 -> 290 bytes .../signTransactionRecordobt/nanos.14.png | Bin 290 -> 278 bytes .../signTransactionRecordobt/nanos.15.png | Bin 278 -> 300 bytes .../signTransactionRecordobt/nanos.16.png | Bin 447 -> 393 bytes .../signTransactionRecordobt/nanos.17.png | Bin 377 -> 424 bytes .../signTransactionRecordobt/nanos.18.png | Bin 393 -> 356 bytes .../signTransactionRecordobt/nanos.19.png | Bin 424 -> 426 bytes .../signTransactionRecordobt/nanos.20.png | Bin 356 -> 314 bytes .../signTransactionRecordobt/nanos.21.png | Bin 426 -> 357 bytes .../signTransactionRecordobt/nanos.22.png | Bin 314 -> 371 bytes .../signTransactionRecordobt/nanos.23.png | Bin 357 -> 467 bytes .../signTransactionRecordobt/nanos.24.png | Bin 371 -> 467 bytes .../signTransactionRecordobt/nanos.25.png | Bin 467 -> 330 bytes .../signTransactionRecordobt/nanos.26.png | Bin 467 -> 432 bytes .../signTransactionRecordobt/nanos.27.png | Bin 414 -> 425 bytes .../signTransactionRecordobt/nanos.28.png | Bin 455 -> 382 bytes .../signTransactionRecordobt/nanos.29.png | Bin 432 -> 317 bytes .../signTransactionRecordobt/nanos.30.png | Bin 425 -> 325 bytes .../signTransactionRecordobt/nanos.31.png | Bin 382 -> 290 bytes .../signTransactionRecordobt/nanos.32.png | Bin 317 -> 278 bytes .../signTransactionRecordobt/nanos.33.png | Bin 325 -> 300 bytes .../signTransactionRecordobt/nanos.34.png | Bin 290 -> 393 bytes .../signTransactionRecordobt/nanos.35.png | Bin 278 -> 424 bytes .../signTransactionRecordobt/nanos.36.png | Bin 447 -> 356 bytes .../signTransactionRecordobt/nanos.37.png | Bin 377 -> 426 bytes .../signTransactionRecordobt/nanos.38.png | Bin 393 -> 322 bytes .../signTransactionRecordobt/nanos.39.png | Bin 424 -> 357 bytes .../signTransactionRecordobt/nanos.40.png | Bin 356 -> 467 bytes .../signTransactionRecordobt/nanos.41.png | Bin 426 -> 467 bytes .../signTransactionRecordobt/nanos.42.png | Bin 322 -> 330 bytes .../signTransactionRecordobt/nanos.43.png | Bin 357 -> 432 bytes .../signTransactionRecordobt/nanos.44.png | Bin 467 -> 425 bytes .../signTransactionRecordobt/nanos.45.png | Bin 467 -> 382 bytes .../signTransactionRecordobt/nanos.46.png | Bin 414 -> 317 bytes .../signTransactionRecordobt/nanos.47.png | Bin 455 -> 325 bytes .../signTransactionRecordobt/nanos.48.png | Bin 432 -> 290 bytes .../signTransactionRecordobt/nanos.49.png | Bin 425 -> 278 bytes .../signTransactionRecordobt/nanos.50.png | Bin 382 -> 300 bytes .../signTransactionRecordobt/nanos.51.png | Bin 317 -> 393 bytes .../signTransactionRecordobt/nanos.52.png | Bin 325 -> 424 bytes .../signTransactionRecordobt/nanos.53.png | Bin 290 -> 356 bytes .../signTransactionRecordobt/nanos.54.png | Bin 278 -> 426 bytes .../signTransactionRecordobt/nanos.55.png | Bin 447 -> 314 bytes .../signTransactionRecordobt/nanos.56.png | Bin 377 -> 357 bytes .../signTransactionRecordobt/nanos.57.png | Bin 393 -> 467 bytes .../signTransactionRecordobt/nanos.58.png | Bin 424 -> 467 bytes .../signTransactionRecordobt/nanos.59.png | Bin 356 -> 330 bytes .../signTransactionRecordobt/nanos.60.png | Bin 426 -> 432 bytes .../signTransactionRecordobt/nanos.61.png | Bin 314 -> 425 bytes .../signTransactionRecordobt/nanos.62.png | Bin 357 -> 382 bytes .../signTransactionRecordobt/nanos.63.png | Bin 467 -> 317 bytes .../signTransactionRecordobt/nanos.64.png | Bin 467 -> 325 bytes .../signTransactionRecordobt/nanos.65.png | Bin 414 -> 290 bytes .../signTransactionRecordobt/nanos.66.png | Bin 455 -> 278 bytes .../signTransactionRecordobt/nanos.67.png | Bin 432 -> 300 bytes .../signTransactionRecordobt/nanos.68.png | Bin 425 -> 393 bytes .../signTransactionRecordobt/nanos.69.png | Bin 382 -> 424 bytes .../signTransactionRecordobt/nanos.70.png | Bin 317 -> 356 bytes .../signTransactionRecordobt/nanos.71.png | Bin 325 -> 426 bytes .../signTransactionRecordobt/nanos.72.png | Bin 290 -> 0 bytes .../signTransactionRecordobt/nanos.73.png | Bin 278 -> 0 bytes .../signTransactionRecordobt/nanos.74.png | Bin 447 -> 0 bytes .../signTransactionRecordobt/nanos.75.png | Bin 377 -> 0 bytes .../signTransactionRecordobt/nanos.76.png | Bin 393 -> 0 bytes .../signTransactionRecordobt/nanos.77.png | Bin 424 -> 0 bytes .../signTransactionRecordobt/nanos.78.png | Bin 356 -> 0 bytes .../signTransactionRecordobt/nanos.79.png | Bin 426 -> 0 bytes .../signTransactionRecordobt/nanox.07.png | Bin 488 -> 392 bytes .../signTransactionRecordobt/nanox.08.png | Bin 976 -> 564 bytes .../signTransactionRecordobt/nanox.09.png | Bin 455 -> 580 bytes .../signTransactionRecordobt/nanox.10.png | Bin 564 -> 445 bytes .../signTransactionRecordobt/nanox.11.png | Bin 580 -> 376 bytes .../signTransactionRecordobt/nanox.12.png | Bin 445 -> 382 bytes .../signTransactionRecordobt/nanox.13.png | Bin 376 -> 345 bytes .../signTransactionRecordobt/nanox.14.png | Bin 382 -> 333 bytes .../signTransactionRecordobt/nanox.15.png | Bin 345 -> 415 bytes .../signTransactionRecordobt/nanox.16.png | Bin 333 -> 462 bytes .../signTransactionRecordobt/nanox.17.png | Bin 953 -> 937 bytes .../signTransactionRecordobt/nanox.18.png | Bin 498 -> 472 bytes .../signTransactionRecordobt/nanox.19.png | Bin 526 -> 476 bytes .../signTransactionRecordobt/nanox.20.png | Bin 462 -> 405 bytes .../signTransactionRecordobt/nanox.21.png | Bin 937 -> 379 bytes .../signTransactionRecordobt/nanox.22.png | Bin 472 -> 430 bytes .../signTransactionRecordobt/nanox.23.png | Bin 476 -> 428 bytes .../signTransactionRecordobt/nanox.24.png | Bin 405 -> 539 bytes .../signTransactionRecordobt/nanox.25.png | Bin 379 -> 540 bytes .../signTransactionRecordobt/nanox.26.png | Bin 430 -> 392 bytes .../signTransactionRecordobt/nanox.27.png | Bin 428 -> 564 bytes .../signTransactionRecordobt/nanox.28.png | Bin 539 -> 580 bytes .../signTransactionRecordobt/nanox.29.png | Bin 540 -> 445 bytes .../signTransactionRecordobt/nanox.30.png | Bin 488 -> 376 bytes .../signTransactionRecordobt/nanox.31.png | Bin 976 -> 382 bytes .../signTransactionRecordobt/nanox.32.png | Bin 455 -> 345 bytes .../signTransactionRecordobt/nanox.33.png | Bin 564 -> 333 bytes .../signTransactionRecordobt/nanox.34.png | Bin 580 -> 415 bytes .../signTransactionRecordobt/nanox.35.png | Bin 445 -> 462 bytes .../signTransactionRecordobt/nanox.36.png | Bin 376 -> 937 bytes .../signTransactionRecordobt/nanox.37.png | Bin 382 -> 472 bytes .../signTransactionRecordobt/nanox.38.png | Bin 345 -> 476 bytes .../signTransactionRecordobt/nanox.39.png | Bin 333 -> 405 bytes .../signTransactionRecordobt/nanox.40.png | Bin 953 -> 390 bytes .../signTransactionRecordobt/nanox.41.png | Bin 498 -> 430 bytes .../signTransactionRecordobt/nanox.42.png | Bin 526 -> 539 bytes .../signTransactionRecordobt/nanox.43.png | Bin 462 -> 540 bytes .../signTransactionRecordobt/nanox.44.png | Bin 937 -> 392 bytes .../signTransactionRecordobt/nanox.45.png | Bin 472 -> 564 bytes .../signTransactionRecordobt/nanox.46.png | Bin 476 -> 580 bytes .../signTransactionRecordobt/nanox.47.png | Bin 405 -> 445 bytes .../signTransactionRecordobt/nanox.48.png | Bin 390 -> 376 bytes .../signTransactionRecordobt/nanox.49.png | Bin 430 -> 382 bytes .../signTransactionRecordobt/nanox.50.png | Bin 539 -> 345 bytes .../signTransactionRecordobt/nanox.51.png | Bin 540 -> 333 bytes .../signTransactionRecordobt/nanox.52.png | Bin 488 -> 415 bytes .../signTransactionRecordobt/nanox.53.png | Bin 976 -> 462 bytes .../signTransactionRecordobt/nanox.54.png | Bin 455 -> 937 bytes .../signTransactionRecordobt/nanox.55.png | Bin 564 -> 472 bytes .../signTransactionRecordobt/nanox.56.png | Bin 580 -> 476 bytes .../signTransactionRecordobt/nanox.57.png | Bin 445 -> 405 bytes .../signTransactionRecordobt/nanox.58.png | Bin 376 -> 379 bytes .../signTransactionRecordobt/nanox.59.png | Bin 382 -> 430 bytes .../signTransactionRecordobt/nanox.60.png | Bin 345 -> 539 bytes .../signTransactionRecordobt/nanox.61.png | Bin 333 -> 540 bytes .../signTransactionRecordobt/nanox.62.png | Bin 953 -> 392 bytes .../signTransactionRecordobt/nanox.63.png | Bin 498 -> 564 bytes .../signTransactionRecordobt/nanox.64.png | Bin 526 -> 580 bytes .../signTransactionRecordobt/nanox.65.png | Bin 462 -> 445 bytes .../signTransactionRecordobt/nanox.66.png | Bin 937 -> 376 bytes .../signTransactionRecordobt/nanox.67.png | Bin 472 -> 382 bytes .../signTransactionRecordobt/nanox.68.png | Bin 476 -> 345 bytes .../signTransactionRecordobt/nanox.69.png | Bin 405 -> 333 bytes .../signTransactionRecordobt/nanox.70.png | Bin 379 -> 415 bytes .../signTransactionRecordobt/nanox.71.png | Bin 430 -> 462 bytes .../signTransactionRecordobt/nanox.72.png | Bin 539 -> 937 bytes .../signTransactionRecordobt/nanox.73.png | Bin 540 -> 472 bytes .../signTransactionRecordobt/nanox.74.png | Bin 488 -> 476 bytes .../signTransactionRecordobt/nanox.75.png | Bin 976 -> 405 bytes .../signTransactionRecordobt/nanox.76.png | Bin 455 -> 0 bytes .../signTransactionRecordobt/nanox.77.png | Bin 564 -> 0 bytes .../signTransactionRecordobt/nanox.78.png | Bin 580 -> 0 bytes .../signTransactionRecordobt/nanox.79.png | Bin 445 -> 0 bytes .../signTransactionRecordobt/nanox.80.png | Bin 376 -> 0 bytes .../signTransactionRecordobt/nanox.81.png | Bin 382 -> 0 bytes .../signTransactionRecordobt/nanox.82.png | Bin 345 -> 0 bytes .../signTransactionRecordobt/nanox.83.png | Bin 333 -> 0 bytes .../signTransactionRecordobt/nanox.84.png | Bin 953 -> 0 bytes .../signTransactionRecordobt/nanox.85.png | Bin 498 -> 0 bytes .../signTransactionRecordobt/nanox.86.png | Bin 526 -> 0 bytes .../signTransactionRecordobt/nanox.87.png | Bin 462 -> 0 bytes .../signTransactionRecordobt/nanox.88.png | Bin 937 -> 0 bytes .../signTransactionRecordobt/nanox.89.png | Bin 472 -> 0 bytes .../signTransactionRecordobt/nanox.90.png | Bin 476 -> 0 bytes .../signTransactionRecordobt/nanox.91.png | Bin 405 -> 0 bytes 468 files changed, 26 insertions(+), 81 deletions(-) delete mode 100644 test-integration/snapshots/decodeMessage/nanos.55.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.56.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.57.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.58.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.59.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.60.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.61.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.62.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.63.png delete mode 100644 test-integration/snapshots/decodeMessage/nanos.64.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.58.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.59.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.60.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.61.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.62.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.63.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.64.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.65.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.66.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.67.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.68.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.69.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.70.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.71.png delete mode 100644 test-integration/snapshots/decodeMessage/nanox.72.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.26.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.27.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.28.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.29.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.30.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.31.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.32.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.33.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDH/nanos.34.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.14.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.16.png delete mode 100644 test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.59.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.61.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.62.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.64.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanos.65.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.62.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.63.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.64.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.65.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.67.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.69.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.70.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.71.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.73.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.74.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.76.png delete mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanox.77.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.72.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.73.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.74.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.75.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.76.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.77.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.78.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanos.79.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.76.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.77.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.78.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.79.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.80.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.81.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.82.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.83.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.84.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.85.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.86.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.87.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.88.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.89.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.90.png delete mode 100644 test-integration/snapshots/signTransactionRecordobt/nanox.91.png diff --git a/Makefile b/Makefile index 3b616d4a..9949f1dd 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ APPVERSION_M = 1 APPVERSION_N = 0 -APPVERSION_P = 2 +APPVERSION_P = 3 NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" diff --git a/src/decodeDH.c b/src/decodeDH.c index 6746c60d..b906b172 100644 --- a/src/decodeDH.c +++ b/src/decodeDH.c @@ -74,8 +74,6 @@ static void readOptionalStringWithLength(size_t *read, string_with_length_t **re enum { DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1 = 200, DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2, - DECODE_NEWFUNDSREQ_MEMO_UI_STEP_OUR_PATH, - DECODE_NEWFUNDSREQ_MEMO_UI_STEP_THEIR_PUBKEY, DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS, DECODE_NEWFUNDSREQ_MEMO_UI_STEP_AMOUNT, DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CHAIN_CODE, @@ -98,12 +96,6 @@ static void decodeNewfundsreqMemo_ui_runStep() { UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2) { ui_displayPaginatedText("Interpreting", "the message as Request funds", this_fn); } - UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_OUR_PATH) { - ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); - } - UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_THEIR_PUBKEY) { - ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); - } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", parsedContent.payee_public_address->data, @@ -149,8 +141,6 @@ static void decodeNewfundsreqMemo_ui_runStep() { enum { DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1 = 250, DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE2, - DECODE_NEWFUNDSREQ_HASH_UI_STEP_OUR_PATH, - DECODE_NEWFUNDSREQ_HASH_UI_STEP_THEIR_PUBKEY, DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS, DECODE_NEWFUNDSREQ_HASH_UI_STEP_AMOUNT, DECODE_NEWFUNDSREQ_HASH_UI_STEP_CHAIN_CODE, @@ -169,17 +159,11 @@ static void decodeNewfundsreqHash_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1) { - ui_displayPaginatedText("Decode shared", "secret", this_fn); + ui_displayPaginatedText("Decrypt content", "", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE2) { ui_displayPaginatedText("Interpreting", "the message as Request funds", this_fn); } - UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OUR_PATH) { - ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); - } - UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_THEIR_PUBKEY) { - ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); - } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", parsedContent.payee_public_address->data, @@ -263,8 +247,6 @@ static void decodeNewfundsreqUIFlow() { enum { DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1 = 300, DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE2, - DECODE_RECORDOBT_MEMO_UI_STEP_OUR_PATH, - DECODE_RECORDOBT_MEMO_UI_STEP_THEIR_PUBKEY, DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS, DECODE_RECORDOBT_MEMO_UI_STEP_PAYER_PUBLIC_ADDRESS, DECODE_RECORDOBT_MEMO_UI_STEP_AMOUNT, @@ -285,19 +267,13 @@ static void decodeRecordobtMemo_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1) { - ui_displayPaginatedText("Decode shared", "secret", this_fn); + ui_displayPaginatedText("Decrypt content", "", this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE2) { ui_displayPaginatedText("Interpreting", "the message as Record other blockchain transaction metadata", this_fn); } - UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OUR_PATH) { - ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); - } - UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_THEIR_PUBKEY) { - ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); - } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", parsedContent.payee_public_address->data, @@ -361,8 +337,6 @@ static void decodeRecordobtMemo_ui_runStep() { enum { DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1 = 350, DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE2, - DECODE_RECORDOBT_HASH_UI_STEP_OUR_PATH, - DECODE_RECORDOBT_HASH_UI_STEP_THEIR_PUBKEY, DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS, DECODE_RECORDOBT_HASH_UI_STEP_PAYER_PUBLIC_ADDRESS, DECODE_RECORDOBT_HASH_UI_STEP_AMOUNT, @@ -384,19 +358,13 @@ static void decodeRecordobtHash_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1) { - ui_displayPaginatedText("Decode shared", "secret", this_fn); + ui_displayPaginatedText("Decrypt content", "", this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE2) { ui_displayPaginatedText("Interpreting", "the message as Record other blockchain transaction metadata", this_fn); } - UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OUR_PATH) { - ui_displayPathScreen("Our path", &ctx->pathSpec, this_fn); - } - UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_THEIR_PUBKEY) { - ui_displayPubkeyScreen("Their public key", &ctx->otherPubKey, this_fn); - } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", parsedContent.payee_public_address->data, @@ -470,8 +438,8 @@ static void decodeRecordobtUIFlow() { explicit_bzero(&parsedContent, SIZEOF(parsedContent)); size_t read = 0; - readStringWithLength(&read, &parsedContent.payee_public_address); readStringWithLength(&read, &parsedContent.payer_public_address); + readStringWithLength(&read, &parsedContent.payee_public_address); readStringWithLength(&read, &parsedContent.amount); readStringWithLength(&read, &parsedContent.chain_code); readStringWithLength(&read, &parsedContent.token_code); diff --git a/src/signTransaction.c b/src/signTransaction.c index a3ebc782..17abf4a6 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -631,7 +631,6 @@ __noinline_due_to_stack__ void signTx_handleStoreValueAPDU( // ======================= START DH ENCODING =========================== enum { HANDLE_DH_START_STEP_DISPLAY_MESSAGE = 800, - HANDLE_DH_START_STEP_DISPLAY_DETAILS_THEIR_PUBKEY, HANDLE_DH_START_STEP_RESPOND, HANDLE_DH_START_STEP_INVALID, }; @@ -644,11 +643,7 @@ static void signTx_handleDHStart_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(HANDLE_DH_START_STEP_DISPLAY_MESSAGE) { - ui_displayPaginatedText("Initialize shared", "secred encryption", this_fn); - } - - UI_STEP(HANDLE_DH_START_STEP_DISPLAY_DETAILS_THEIR_PUBKEY) { - ui_displayPaginatedText(ctx->key, ctx->value, this_fn); + ui_displayPaginatedText("Encrypting", "content", this_fn); } UI_STEP(HANDLE_DH_START_STEP_RESPOND) { @@ -751,8 +746,7 @@ __noinline_due_to_stack__ void signTx_handleStartDHEncodingAPDU( // ======================= END DH ENCODING =========================== enum { - HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY = 900, - HANDLE_DH_END_STEP_CONFIRM, + HANDLE_DH_END_STEP_CONFIRM = 900, HANDLE_DH_END_STEP_RESPOND, HANDLE_DH_END_STEP_INVALID, }; @@ -764,12 +758,8 @@ static void signTx_handleDHEnd_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); - UI_STEP(HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY) { - ui_displayPaginatedText(ctx->key, ctx->value, this_fn); - } - UI_STEP(HANDLE_DH_END_STEP_CONFIRM) { - ui_displayPrompt("Encrypt", "shared secret?", this_fn, respond_with_user_reject); + ui_displayPrompt("Encrypt content?", "", this_fn, respond_with_user_reject); } UI_STEP(HANDLE_DH_END_STEP_RESPOND) { @@ -858,7 +848,7 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( ctx->ui_step = UI_STEP; \ break; \ } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_DISPLAY_DETAILS_OUR_PUBKEY); + CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_CONFIRM); default: THROW(ERR_NOT_IMPLEMENTED); #undef CASE diff --git a/test-integration/decodeMessage.js b/test-integration/decodeMessage.js index 68c6d80e..b0da1113 100644 --- a/test-integration/decodeMessage.js +++ b/test-integration/decodeMessage.js @@ -96,7 +96,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq memo"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent1, context: "newfundsreq"}); - await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433201074d79206d656d6f0000") } @@ -105,7 +105,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq hash"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent2, context: "newfundsreq"}); - await device.review([1, 1, 1, 2, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796565207075626c696320616464726573730a416d6f756e7420313030044254433104425443320001074d792068617368010b4f66666c696e652055524c") } @@ -114,7 +114,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt memo"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent3, context: "recordobt"}); - await device.review([1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 2, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "145061796572207075626c69632061646472657373145061796565207075626c696320616464726573730a416d6f756e74203130300442544331044254433206537461747573064f627420494401074d79206d656d6f0000") } @@ -124,7 +124,7 @@ testStep(" - - -", "await app.decodeMessage() - recordobt hash"); console.log(encryptedContent4) const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent4, context: "recordobt"}); - await device.review([1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); + await device.review([1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Review decode message"); const decodeMessageResponse = await decodeMessagePromise; assert.equal(decodeMessageResponse.message.toString("hex"), "2d5061796572207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e672d5061796565207075626c696320616464726573732069732076657279206c6f6e672c206c6f6e672c206c6f6e670a416d6f756e74203130300442544331044254433206537461747573064f62742049440001234d792068617368206973207175697465206c6f6e6720746f6f2c20746f6f2c20746f6f01224f66666c696e652055524c206973207175697465206c6f6e6720746f6f2c20746f6f") } @@ -140,7 +140,7 @@ testStep(" - - -", "await app.decodeMessage() - newfundsreq rejected by user"); { const decodeMessagePromise = app.decodeMessage({path: path, publicKeyHex: otherPublicKey.toUncompressed().toBuffer().toString("hex"), message: encryptedContent1, context: "newfundsreq"}); - await device.reviewReject([1, 1, 1, 2, 1, 1, 1, 1, 1], "Review decode message"); + await device.reviewReject([1, 1, 1, 1, 1, 1, 1], "Review decode message"); await assert.rejects(decodeMessagePromise, DeviceStatusError); } diff --git a/test-integration/signTransactionCommandsDH.js b/test-integration/signTransactionCommandsDH.js index 1e8cadc4..67cb9b13 100644 --- a/test-integration/signTransactionCommandsDH.js +++ b/test-integration/signTransactionCommandsDH.js @@ -53,8 +53,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); let dhEncodedMsg = response12.slice(0, -2).toString("hex"); @@ -79,7 +78,6 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); const buffer15 = getAPDUDataBuffer("", ""); const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); device.curlButton("right", "Confirm create shared secret"); //!!!!!! const response15 = await promise15; assert.equal(response15.slice(-2).toString("hex"), "9000"); @@ -145,8 +143,7 @@ testStep(" - - -", "Nested DH encryption disallowed"); const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); @@ -172,8 +169,7 @@ testStep(" - - -", "You can restart DH encryption. You cannot finish the transac const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); @@ -181,7 +177,6 @@ testStep(" - - -", "You can restart DH encryption. You cannot finish the transac const buffer13 = getAPDUDataBuffer("", ""); const promise13 = transport.send(215, 0x20, 0x09, 0, buffer13); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); device.curlButton("right", "Confirm create shared secret"); //!!!!!! const response13 = await promise13; assert.equal(response13.slice(-2).toString("hex"), "9000"); @@ -190,8 +185,7 @@ testStep(" - - -", "You can restart DH encryption. You cannot finish the transac const buffer14 = getAPDUDataBuffer("", otherPublicKey); const promise14 = transport.send(215, 0x20, 0x08, 0, buffer14); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response14 = await promise14; assert.equal(response14.slice(-2).toString("hex"), "9000"); @@ -219,8 +213,7 @@ testStep(" - - -", "If you reject DH encryption it fails imediately, without exp const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); @@ -228,7 +221,6 @@ testStep(" - - -", "If you reject DH encryption it fails imediately, without exp const buffer13 = getAPDUDataBuffer("", ""); const promise13 = transport.send(215, 0x20, 0x09, 0, buffer13); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); device.curlButton("left", "Reject create shared secret"); //!!!!!! await assert.rejects(promise13, err(0x6e09)); @@ -251,8 +243,7 @@ testStep(" - - -", "Modifying anything within DH block should lead to integrity const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); let dhEncodedMsg = response12.slice(0, -2).toString("hex"); diff --git a/test-integration/signTransactionCommandsDHAndCountedSections.js b/test-integration/signTransactionCommandsDHAndCountedSections.js index b9deee75..642666d5 100644 --- a/test-integration/signTransactionCommandsDHAndCountedSections.js +++ b/test-integration/signTransactionCommandsDHAndCountedSections.js @@ -61,8 +61,7 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); let dhEncodedMsg = response12.slice(0, -2).toString("hex"); @@ -96,7 +95,6 @@ testStep(" - - -", "Sign minimal devel DH tranaction"); const buffer15 = getAPDUDataBuffer("", ""); const promise15 = transport.send(215, 0x20, 0x09, 0, buffer15); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "Confirm our pubkey"); device.curlButton("right", "Confirm create shared secret"); //!!!!!! const response15 = await promise15; assert.equal(response15.slice(-2).toString("hex"), "9000"); @@ -159,8 +157,7 @@ testStep(" - - -", "You cannt just end counted section within DH encription with const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); @@ -188,8 +185,7 @@ testStep(" - - -", "Counted section from within DH encoding mus be finished"); const buffer12 = getAPDUDataBuffer("", otherPublicKey); const promise12 = transport.send(215, 0x20, 0x08, 0, buffer12); await device.curlScreenShot(); - await device.curlButtonAndScreenshot("both", "message"); - device.curlButton("both", "Confirm their pubkey"); + device.curlButton("both", "message"); const response12 = await promise12; assert.equal(response12.slice(-2).toString("hex"), "9000"); diff --git a/test-integration/signTransactionNewfundsreq.js b/test-integration/signTransactionNewfundsreq.js index e9d0af90..8e413b98 100644 --- a/test-integration/signTransactionNewfundsreq.js +++ b/test-integration/signTransactionNewfundsreq.js @@ -259,7 +259,7 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence = [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2]; +const longSequence = [1, 1, 1, 1, 1, 1, 1, 1, 1]; const secondSequence = [1, 2] testStep(" - - -", "Sign testnet transaction - memo"); diff --git a/test-integration/signTransactionRecordobt.js b/test-integration/signTransactionRecordobt.js index 34bba150..1e62aa89 100644 --- a/test-integration/signTransactionRecordobt.js +++ b/test-integration/signTransactionRecordobt.js @@ -279,8 +279,8 @@ async function runTxTest(network, tx, review1, review2) { assert.equal(signatureLedger.verify(fullMsg, otherPublicKey), false); } -const longSequence = [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2]; -const longSequenceHash = [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2]; //has empty fio_request_id +const longSequence = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const longSequenceHash = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; //has empty fio_request_id const secondSequence = [1, 2] testStep(" - - -", "Sign testnet transaction - memo"); diff --git a/test-integration/snapshots/decodeMessage/nanos.04.png b/test-integration/snapshots/decodeMessage/nanos.04.png index 0a417247a7b9a9d367300888396923fcf52510a6..7cbf94713d9c53a3ba1382adcbc030d6be886518 100644 GIT binary patch delta 357 zcmV-r0h<1p1AqgNB!5RqL_t(|ob8y~4#OY_hV8Px{{!!0y=Y>M9EPHiwf~o0sIx#p zVIw5~002Pb`?)?5V9m&jP9t^U6L_0;ZTn?P9>*lOc?4SkDCMEp_Bt?mnzxl9tX5co zl^i-|g;=&piYRok64*5Dr?f+{sc)cb=~%SqB99h}MqA>t-G2b(AR8ZSG;1OQ4Pf7n z%>*)yHGnSa??WGqkfSY@+vQNP=b)Mjyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k| zC;dt{0Ia6WW4ol3Dd9(#bVPph-2ik+-3+P$bn(eu(iTS7 z07`CJMR0LECIsN&UDAl4ODcnI=wc?<0Azmv00_(hP_;~EHSIkv00000NkvXXu0mjf DySb+? delta 381 zcmV-@0fPR31DFGlB!6E?L_t(|ob8$04uc>JhH;ti|G-{s7Z}n(Tk5owYQHRtRxIUU z2|pOjKngPZ`XnHQEMB(h=%ELcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws z?UKZg_STH{e|E)Am=TRDsAG^b$0P0L)|JkzEJd6@cxpXVmNMk|0zD59M#7iTIYb*M z#=(U&HEFc9Q%*e0YdHhOxGGDOTgu*YyWUT_1E7?DGSsmmC5u*B3tc&wG7=9#5ClOG b1c8_@b4e0c!pH7+00000NkvXXu0mjfdt7vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2}f9BYy#pNkl!$uAlSGJXXVS${U$;!8c))ky(ZZsk6~ zJTutU+feIYNs57fw_o<3u>$fDI)`Cy&U(*g2O3=chpe_?boGZR=p(H54#il<`}~mK zpi3sh7|e$;m`Q2&_pq8cs^DFe3n3mgLtl7kq-YjZOlO3osO2$k7O!Gp+?0Aq^cI$1 zJpN$CNwHA8TYszV6bnHiXNrn-Q%in^ik}KaiJ~hSo9_(e=`+Ci$dho}8M0Pq7WJ9D zf~^-1uF!l8b}RY<5DoZN$)uP%Qa3DtHFE~Tv}VSv_DjHH+&vaw0D4VLBARDw)|_+U zcV-5&_kjKQyLypUl1NIuW_f_|YkL4DU*(^lkYL#zhbY%EDdE%2NB9e?=3ogSgb+f= ZJHMBpMyCL5*i!%i002ovPDHLkV1ia!%)S5s diff --git a/test-integration/snapshots/decodeMessage/nanos.06.png b/test-integration/snapshots/decodeMessage/nanos.06.png index 7cbf94713d9c53a3ba1382adcbc030d6be886518..355c272af3549fc07cb3c94c733a1f8b4886e0c3 100644 GIT binary patch delta 296 zcmV+@0oVS31H%H4B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD0000M9EPHiwf~o0sIx#p zVIw5~002Pb`?)?5V9m&jP9t^U6L_0;ZTn?P9>*lOc?4SkDCMEp_Bt?mnzxl9tX5co zl^i-|g;=&piYRok64*5Dr?f+{sc)cb=~%SqB99h}MqA>t-G2b(AR8ZSG;1OQ4Pf7n z%>*)yHGnSa??WGqkfSY@+vQNP=b)Mjyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k| zC;dt{0Ia6WW4ol3Dd9(#bVPph-2ik+-3+P$bn(eu(iTS7 z07`CJMR0LECIsN&UDAl4ODcnI=wc?<0Azmv00_(hP_;~EHSIkv00000NkvXXu0mjf D_DrW) diff --git a/test-integration/snapshots/decodeMessage/nanos.07.png b/test-integration/snapshots/decodeMessage/nanos.07.png index e4da844413df4469d5044c9e87d1346d5970505a..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 100644 GIT binary patch delta 308 zcmV-40n7fX0?q=EBYy!ENkl70|Nnz~s0T-zCO{L%z&7qX=>#P% zgeXoEA%u{-GW)rDzrH;$mZdS;1AmWUWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>O zYAot*%x46$XHHL#o);pwc6 zEe4|#y#i8|jnu0&)9l5|#Q?WD>ctIG4;ZR{ISrCh{Z3Q~OZB_L7{tREL?Q{RbVEV9 zgJJ_!>#COBA&3{s9S}*|Fd9DPsj+aw*R(zX;4k4;kn>BQTlAOkPoT=k?Pw}NH8;Uy zpb{hkzx53i04?#i47U2yKkWfFTNkt3Ft~*fLI@#*K(Ydh6PrbYQckM?00007vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2;6{Q`T z6p++8A|fIn!Moruu8d;Q9>DBY?Ey52v*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+dAGl)4!#l;X{RhpcTRstGu$ zcRu+{Qy^zRkHnyYOhB_K3Z?&HZ7FZYKV&E|{E?W52*w6DYmqTnSFKwB0000c83BYy!3Nkl|dq?hx4~oT> zwp1V`LI@$miSxLx($d&*l0BikUA5)WZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nN zq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=zq)0TVeF70}bC9u#hSqje01c^V15|8qKAO7Bmi$+7hQR2YMJ7=uV^j@?wz_@$VzxVkkn zj*m(s$XF1}=)*Ynk&oKB5Ww|1Sg5<&0?7i9B!3V|L_t(|ob8#(62l+}hPBhY{{wrl2Pd`>x4INk{_m8yFb*In z8Up|TKr5De0Vm$QzwI$NJxug&M1pF(yBJ_#`fZW114=#{H5+^BM#;7$UG_+aQOT;w zy6|UX{BAZj2UjL?@Zes6c3=Qz#27$8G+^P$y#Qm(nH7`7sDCb1QXkanm3)+r4PY%b z-G)ABe;;k#Li_vZ)jn*nitnO2a=;FHeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73 z)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&|(OE_7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1gq;iO~Q6 diff --git a/test-integration/snapshots/decodeMessage/nanos.10.png b/test-integration/snapshots/decodeMessage/nanos.10.png index 0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 401 zcmV;C0dD@A0;&U$BYy#LNkl%?El@*$@Khua)Wk_QOP&n_ETOD5zi5lsjst)i-9CS1DmGv;Fc+bI3!7LbVXD?FcK%XG&dP1%Rxgqg6| zedezP-Xf}}x_^VVCR%howI2iXfR>b}r4JX*DIXnn%;K}DV{I)XZ;b;zfR`D#(BFnB z6Gv`s){Nlh-=X*bHDL(y@g?KI;6{Q`T z6p++8A|fIn!Moruu8d;Q9>DBY?Ey52v*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+dAGl)4!#l;X{RhpcTRstGu$ zcRu+{Qy^zRkHnyYOhB_K3Z?&HZ7FZYKV&E|{E?W52*w6DYmqTnSFKwB000020091#$1tUR`xbr=Qw9|x0b+QmFMG9d0lY>D^+@5SvdAs@Wb(S%xBAm)iC0l) z!coU>N3A8I3BZ$91$1u8VgKcp!Ul$5x2S&QvUChxG)YN zC>jF*06;62djTijy}#`-I6X}CZbX7=yt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@ z$-3}oWBhJ5HV0QGa`50@fOcR2X2cjkKr~?C$-Mw$%$XIF#DAzRRZ<_+>Xm$yjtyWf zHQk0jXn!AV-9r2O=+!=Ku!`@ZIcdVLzFpnX7-V&SfaCReS_Uvs^h^%PC(!&F@K zveb)|r7~w}%zV-G=ZL8V1?bDnTJ2Eb+|gM^Ehv(Ng0)YKRGNUuBWwp`N#3(WNt;H} z4xr`Fp0wFtG$_?xZJkGw=dR)oA?UAx0RR9%FE8XfuKu400J#7F002ovPDHLkV1mad Bjn4o8 diff --git a/test-integration/snapshots/decodeMessage/nanos.12.png b/test-integration/snapshots/decodeMessage/nanos.12.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..20641a16b0334e7da5812636cd7b665892a79e07 100644 GIT binary patch delta 392 zcmV;30eAkY1F8d%EPt9y62l+}KuM>)|ADh;7wK3>K0yg;EN{Aq1{5V?qyY$mAP53? z-uq|^0ALz31|W~zbzUZ(^sQf4?;W<+_u|+8Sq&~?;VOB-3_z|*^(&CZmJd={N!~T8 z>s35?_UWb?WA}s1)o_RFp$1+e~J=UQ$& zaE$Lo%Uw2-M~6Ow8@&`L@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^h zLF{NQKiZIo7w$xZ)02gmklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R z&s0QnXd-=9tbZ*ogI{Y5SzmOAg~^59gr@_V*Il8QBExY}6oHC7IP-HFA8=&DDnf{B zdobw;AakooUGI5njX`@A6iNgD0N}1H zIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu#9ztsA*Ta} z+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGBuiR`JP)XCZGRC);&i#jS$$y-h(<_% z$1^~Gt%%F}<^`gY6ytIBfsGJ7dkwB}3%W5$nQ$&*%SXq3eGmS4bq1Yr@)$6PqC3>j z#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4ml zgSIAGbUn2n1Ap^?mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnDwx51ZWYgBn m4%|Za?Faw>007{>c>zfN!b+jC;amU!002ovPDHLkU;%>0#=A}c diff --git a/test-integration/snapshots/decodeMessage/nanos.13.png b/test-integration/snapshots/decodeMessage/nanos.13.png index 18da61d22727989bf2700ab24c4a2b91d5876544..7cbf94713d9c53a3ba1382adcbc030d6be886518 100644 GIT binary patch delta 357 zcmV-r0h<2P0)PXMB!5RqL_t(|ob8y~4#OY_hV8Px{{!!0y=Y>M9EPHiwf~o0sIx#p zVIw5~002Pb`?)?5V9m&jP9t^U6L_0;ZTn?P9>*lOc?4SkDCMEp_Bt?mnzxl9tX5co zl^i-|g;=&piYRok64*5Dr?f+{sc)cb=~%SqB99h}MqA>t-G2b(AR8ZSG;1OQ4Pf7n z%>*)yHGnSa??WGqkfSY@+vQNP=b)Mjyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k| zC;dt{0Ia6WW4ol3Dd9(#bVPph-2ik+-3+P$bn(eu(iTS7 z07`CJMR0LECIsN&UDAl4ODcnI=wc?<0Azmv00_(hP_;~EHSIkv00000NkvXXu0mjf D46CPU delta 312 zcmV-80muG;1JeSKB!3!7L_t(|ob8!G62c%1MN`M#|G-_;g$@o$fKVYo{cpM`NR#-3 zVN8ht004kyoJVxEwe0YSufb?ZPULj6vdgoXND zK@P@)9E=1f!ASmE(&1k|9l+)pMg>((P5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0 zi4|wengH3y(nKzvP00000U>q;jqQeRQ$FU{=0000< KMNUMnLSTYbtB_d$ diff --git a/test-integration/snapshots/decodeMessage/nanos.14.png b/test-integration/snapshots/decodeMessage/nanos.14.png index 20641a16b0334e7da5812636cd7b665892a79e07..e4da844413df4469d5044c9e87d1346d5970505a 100644 GIT binary patch delta 272 zcmV+r0q_2*1F8a$BYyz#Nkl7vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{ z#+DCKSxMeCs_RuedG_h18sqpUjyVOhI>5O0E$WB!dIg_Z9e*&8zHxsh2c$cli2x6d9DTS zX=-RnR&O)A5`WKBM002&eO9b3E`wid3|U`vhlR<7-h`(En%7;Sm?Fb*Q51oSJUH`n z8Xs_E!zx0EYvn$v2=c!zLD-(q=GvFLuEekcJMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD0000JhH;ti|G-{s7Z}n(Tk5owYQHRtRxIUU z2|pOjKngPZ`XnHQEMB(h=%ELcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws z?UKZg_STH{e|E)Am=TRDsAG^b$0P0L)|JkzEJd6@cxpXVmNMk|0zD59M#7iTIYb*M z#=(U&HEFc9Q%*e0YdHhOxGGDOTgu*YyWUT_1E7?DGSsmmC5u*B3tc&wG7=9#5ClOG b1c8_@b4e0c!pH7+00000NkvXXu0mjf-JY>K diff --git a/test-integration/snapshots/decodeMessage/nanos.16.png b/test-integration/snapshots/decodeMessage/nanos.16.png index 7761caf59caa3f2622c358d69d20f711d5fbfec8..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 100644 GIT binary patch delta 307 zcmV-30nGl$1I_}FB!3l2L_t(|ob8#x5`!=ZM72}@|ATv|2S=MGKoiHnHtsv=1SKwn zC{7b0gpj*3`?-3*zCACNr7_wAe~)2gVK{AbE&d*No>7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1gq-iO~Q6 delta 430 zcmV;f0a5}f9B!7=dL_t(|ob8$2l7k=&g|)N3{{#1;d%@Py9LNtsp*!arFPKPT zAQB{Q8zF=ca+SyZ?K*`{-CjN@Lh~uT+?a_N!-t2Y2cS)TFh9eeaE@v}s=~+p)lfR; z@>2!dXd%>1>6yz#w^dM90Hy+^;Wy$Jnz<;+FB%Clegza+HhHU;Q#;t diff --git a/test-integration/snapshots/decodeMessage/nanos.17.png b/test-integration/snapshots/decodeMessage/nanos.17.png index 7cbf94713d9c53a3ba1382adcbc030d6be886518..10c212723b1b1c4ea34842762edf7eb40fb7ec27 100644 GIT binary patch delta 292 zcmV+<0o(q71HS^0B!31;L_t(|ob8#x5`!QNM6sj)|G^&Yff)uRVJM>6(0wKLI^?R*lWY~7lHX$2k`H#)&X>pC-}0RX5vtsfdt+Fv6z%9heGK58DJ0K4al`i za*M8D3$5XH4_LO7+;Qk*#g>0000M9EPHiwf~o0sIx#p zVIw5~002Pb`?)?5V9m&jP9t^U6L_0;ZTn?P9>*lOc?4SkDCMEp_Bt?mnzxl9tX5co zl^i-|g;=&piYRok64*5Dr?f+{sc)cb=~%SqB99h}MqA>t-G2b(AR8ZSG;1OQ4Pf7n z%>*)yHGnSa??WGqkfSY@+vQNP=b)Mjyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k| zC;dt{0Ia6WW4ol3Dd9(#bVPph-2ik+-3+P$bn(eu(iTS7 z07`CJMR0LECIsN&UDAl4ODcnI=wc?<0Azmv00_(hP_;~EHSIkv00000NkvXXu0mjf D@VKW{ diff --git a/test-integration/snapshots/decodeMessage/nanos.18.png b/test-integration/snapshots/decodeMessage/nanos.18.png index e4da844413df4469d5044c9e87d1346d5970505a..22b41df9a0eb1a4086ca941f72538c9989038efd 100644 GIT binary patch delta 264 zcmV+j0r&o@0;2+uB!B8jL_t(|ob8y~4uc>NL~Yal{|EP>eIOxp0b3CqF6YD;SAm6D z3CV05002O9-mkAK{*(;khl0GxFgcmxEWHyiET`;#cs_M9@A)#9^0+vk#Vy#~Z%-SV zmhMfcQP{@6Hy!&%T>vM#m&}Aay&Pdx;_{4ux&Rd^kiLUWGk;M53PkK+)7*u*d%>SQ z3a;7#@gnQ)`fz+RvPu0j@1e%680{#V3)HX90ZCE65q}Ab`c0t*dZ>XC@ky|_8!G;- z7k5MR!>X-_McmN*l+*>l4OLH|9=M@ma6?B0H?;EjGq|Au0001!^8uJr+Oy_xZ43Ya O002ovPDHLkU;%=NaC>S1 delta 271 zcmV+q0r38#0;&R#B!BTqL_t(|ob8yw4#OY}L)~fp{}1k=JxpV)P)0R~BgOATBUB;$gKHCoos=dzwBD%PDHLkV1jycfdv2n diff --git a/test-integration/snapshots/decodeMessage/nanos.19.png b/test-integration/snapshots/decodeMessage/nanos.19.png index 355c272af3549fc07cb3c94c733a1f8b4886e0c3..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc 100644 GIT binary patch delta 302 zcmV+}0nz@$0?7i9B!3V|L_t(|ob8#(62l+}hPBhY{{wrl2Pd`>x4INk{_m8yFb*In z8Up|TKr5De0Vm$QzwI$NJxug&M1pF(yBJ_#`fZW114=#{H5+^BM#;7$UG_+aQOT;w zy6|UX{BAZj2UjL?@Zes6c3=Qz#27$8G+^P$y#Qm(nH7`7sDCb1QXkanm3)+r4PY%b z-G)ABe;;k#Li_vZ)jn*nitnO2a=;FHeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73 z)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&|(OE_ A_W%F@ delta 296 zcmV+@0oVS?0>c83B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD00004#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY*Aio6w delta 307 zcmV-30nGlY1I_}FB!3l2L_t(|ob8#x5`!=ZM72}@|ATv|2S=MGKoiHnHtsv=1SKwn zC{7b0gpj*3`?-3*zCACNr7_wAe~)2gVK{AbE&d*No>7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1oZRiL(Fz diff --git a/test-integration/snapshots/decodeMessage/nanos.21.png b/test-integration/snapshots/decodeMessage/nanos.21.png index 10c212723b1b1c4ea34842762edf7eb40fb7ec27..4a84ea79b19febddeb4fa290f1fc0a9d4cba8c13 100644 GIT binary patch delta 255 zcmV20091#$1tUR`xbr=Qw9|x0b+QmFMG9d0lY>D^+@5SvdAs@Wb(S%xBAm)iC0l) z!coU>N3A8I3BZ$91$1u8VgKcp!U1)~BYyz~Nklm;0?&N zOLB{@U<<9`b`My#liYFWXYWn8H9*9n2k<3GLpz~5tU?mr@_%S9sQz$%kd*2_M3b;o z|550HJ@mj5(4FAeg)?PK0DVDPrI+%(%0+CF(=-fvn*{qJc8RkzKx&jiCv=qK z(r7FDZsiirXDXjo{?!54?XXus2i_W`Fb1SP+I^+O%7f|wd^a>2b6-BxMk&k+7|7&} r()WSP+)==nARb~#SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{ z#+DCKSxMeCs_RuedG_h18sqpUjyVOhI>5O0E$WB!dIg_Z9e*&8zHxsh2c$cli2x6d9DTS zX=-RnR&O)A5`WKBM002&eO9b3E`wid3|U`vhlR<7-h`(En%7;Sm?Fb*Q51oSJUH`n z8Xs_E!zx0EYvn$v2=c!zLD-(q=GvFLuEekcM9EPHiwf~o0sIx#p zVIw5~002Pb`?)?5V9m&jP9t^U6L_0;ZTn?P9>*lOc?4SkDCMEp_Bt?mnzxl9tX5co zl^i-|g;=&piYRok64*5Dr?f+{sc)cb=~%SqB99h}MqA>t-G2b(AR8ZSG;1OQ4Pf7n z%>*)yHGnSa??WGqkfSY@+vQNP=b)Mjyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k| zC;dt{0Ia6WW4ol3Dd9(#bVPph-2ik+-3+P$bn(eu(iTS7 z07`CJMR0LECIsN&UDAl4ODcnI=wc?<0Azmv00_(hP_;~EHSIkv00000NkvXXu0mjf D{;H>6 delta 302 zcmV+}0nz?|1IYrAB!3V|L_t(|ob8#(62l+}hPBhY{{wrl2Pd`>x4INk{_m8yFb*In z8Up|TKr5De0Vm$QzwI$NJxug&M1pF(yBJ_#`fZW114=#{H5+^BM#;7$UG_+aQOT;w zy6|UX{BAZj2UjL?@Zes6c3=Qz#27$8G+^P$y#Qm(nH7`7sDCb1QXkanm3)+r4PY%b z-G)ABe;;k#Li_vZ)jn*nitnO2a=;FHeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73 z)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&|(OE_exPQ|v5f+W+$->9*)o$GO|KL3Cu{YcrRz@8FN_sW6Jr7Kr#%=7B6_rV# zV=6(pt)xgk9V@VDY9+Nsu&ilNmH%K-pNlM7G#b^3OZ@_9NPm?&rk9PBj>fPTk<9@j z?KOZd%BS*{mo+x)b>dyRrXWz_jT>h9PF~>!tZ+u}AO`b63}({b`{7> z0=lF+%FZzdfKyc#S+GmWGU^7PORAA6VtxVWlG^B31L)$KUD8Gd)Bs9sU3qi51I7ek s*)FMH&?PN^Zs=sj*8pUH008jH57tjWX8k_xPyhe`07*qoM6N<$f_2`Za{vGU delta 400 zcmV;B0dM~G0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZj5Wg${ diff --git a/test-integration/snapshots/decodeMessage/nanos.25.png b/test-integration/snapshots/decodeMessage/nanos.25.png index 18da61d22727989bf2700ab24c4a2b91d5876544..e4da844413df4469d5044c9e87d1346d5970505a 100644 GIT binary patch delta 272 zcmV+r0q_3P0;&R#BYyz#Nkl7vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2csJC`gm| zgJDdG0001hW}HWKwYBWX*r z9eB8Ta%J0BsoH&h0rHfiSd{l9n~@7BA*H&KxxQS5@^Lz`$o9D@P`^19l0yAXn1qG; zT|o}UgB*+mC&5VmTGHWPJ{`d38Ab(FO-=dNN&Sdidkl+XZ>h?mrD-}1zRkEQSVOH! z#EBJW%$fk%)H1B99_y5vxx1n3G&L`CqeED&SD81R000000AL(1)}q4+|HrW=00000 LNkvXXu0mjfiSCet diff --git a/test-integration/snapshots/decodeMessage/nanos.26.png b/test-integration/snapshots/decodeMessage/nanos.26.png index 20641a16b0334e7da5812636cd7b665892a79e07..355c272af3549fc07cb3c94c733a1f8b4886e0c3 100644 GIT binary patch delta 296 zcmV+@0oVSj1H%H4B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD0000)|ADh;7wK3>K0yg;EN{Aq1{5V? zqyY$mAP53?-uq|^0ALz31|W~zbzUZ(^sQf4?;W<+_u|+8Sq&~?;VOB-3_z|*^(&CZ zmJd={N!~T8>s35?_UWb?WA}s1)o_RFn^G~aepQUq(?8`Imzje z?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T z&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gmklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALC zYG_JUZ!^0R&wo@zb7&%cR;(>9gI{Y5SzmOAg~^59gr@_V*Il8QBExY}6oHC7IP-HF zA8=&DDnf{B7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1ntQiJ<@h delta 381 zcmV-@0fPR{0+<7kB!6E?L_t(|ob8$04uc>JhH;ti|G-{s7Z}n(Tk5owYQHRtRxIUU z2|pOjKngPZ`XnHQEMB(h=%ELcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws z?UKZg_STH{e|E)Am=TRDsAG^b$0P0L)|JkzEJd6@cxpXVmNMk|0zD59M#7iTIYb*M z#=(U&HEFc9Q%*e0YdHhOxGGDOTgu*YyWUT_1E7?DGSsmmC5u*B3tc&wG7=9#5ClOG b1c8_@b4e0c!pH7+00000NkvXXu0mjf?ftPv diff --git a/test-integration/snapshots/decodeMessage/nanos.28.png b/test-integration/snapshots/decodeMessage/nanos.28.png index 7761caf59caa3f2622c358d69d20f711d5fbfec8..47045550f563e2928f113ee01b4e6353be5ef4f2 100644 GIT binary patch delta 242 zcmVia*i3%f9(gdYoyW}f9BYy#pNkl!$uAlSGJXXVS${U$;!8c))ky(ZZsk6~ zJTutU+feIYNs57fw_o<3u>$fDI)`Cy&U(*g2O3=chpe_?boGZR=p(H54#il<`}~mK zpi3sh7|e$;m`Q2&_pq8cs^DFe3n3mgLtl7kq-YjZOlO3osO2$k7O!Gp+?0Aq^cI$1 zJpN$CNwHA8TYszV6bnHiXNrn-Q%in^ik}KaiJ~hSo9_(e=`+Ci$dho}8M0Pq7WJ9D zf~^-1uF!l8b}RY<5DoZN$)uP%Qa3DtHFE~Tv}VSv_DjHH+&vaw0D4VLBARDw)|_+U zcV-5&_kjKQyLypUl1NIuW_f_|YkL4DU*(^lkYL#zhbY%EDdE%2NB9e?=3ogSgb+f= ZJHMBpMyCL5*i!%i002ovPDHLkV1gxw%%K1P diff --git a/test-integration/snapshots/decodeMessage/nanos.29.png b/test-integration/snapshots/decodeMessage/nanos.29.png index e2a5180d2f68aa7a08d3667a35810369c8b99576..4622c002df452d6bf534b36c76ea112d586b1923 100644 GIT binary patch delta 234 zcmV>WHiu39dQ@i!CHig{? zYOu2d+o%!FV7gYuN(juim;Qh9-=BcLpWp^$4*ba+ zc(Q)=;|QhkC417r^NRlgg)M|q_rS)BqfP+otil&cMapGli4?_Z2UrNDkM<)=q;k|J zV4+azh+i=4Y5*LR3Z=fRl1POZ)Bs4;t)eY@0BjO4A(TFv+Cn0Y%Us;M&Q?IGq0ZRX gfV};aBuS$31KBD@W-8&7ga7~l07*qoM6N<$g1R8OGynhq diff --git a/test-integration/snapshots/decodeMessage/nanos.30.png b/test-integration/snapshots/decodeMessage/nanos.30.png index 804fb3a0f56cfd511649be71e4eda1381ad16ede..0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d 100644 GIT binary patch delta 256 zcmV+b0ssD@1DgVnBYyzmNkl;6{Q`T z6p++8A|fIn!Moruu8d;Q9>DBY?Ey52v*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+dAGl)4!#l;X{RhpcTRstGu$ zcRu+{Qy^zRkHnyYOhB_K3Z?&HZ7FZYKV&E|{E?W52*w6DYmqTnSFKwB0000 zfzE%Lk|arzgkxLxpSvf_pwd0w_!z#@iSzPrZ0p{RMp(ya#0h{LkH);TiK*Q>4eg?) z8Vj%uEeNMk3-P-{4R&?49KB&Y>uQ|Zzc46&i!`f9Run&6;(r?eQz~4;y=)vYbOt?$ z=o`S&UjyJEzpH5PvczY(9cZ>Rnl8;p>qp~6`KJ^u=(kZKKy@(`MR*dNqoW6WR!(as zKU2PLV-t6O>Tgal$m;$#1v;Z`fmWG6()-4m>fAejJIk z5L_rFChNWf9)BT`7JS{K7|hk)k80!Nv}3qedjt424q2ko1p`NEtiSv}i(U zCq`0)ULtibBu)+()c`oyE0IPhAyz_Z57spRQgy2cA&$p@1YD3vdC~M)LTN-a9zSol neWV)d%-|Z3uYZyxNnn0W+D2wNV`B6G0000l$5x2S&QvUChxG)YN zC>jF*06;62djTijy}#`-I6X}CZbX7=yt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@ z$-3}oWBhJ5HV0QGa`50@fOcR2X2cjkKr~?C$-Mw$%$XIF#DAzRRZ<_+>Xm$yjtyWf zHQk0jXn!AV-9r2O=+!=Ku!`@ZIcdVLzFpnX7-V&SfaCReS_Uvs^h^%PC(!&F@K zveb)|r7~w}%zV-G=ZL8V1?bDnTJ2Eb+|gM^Ehv(Ng0)YKRGNUuBWwp`N#3(WNt;H} z4xr`Fp0wFtG$_?xZJkGw=dR)oA?UAx0RR9%FE8XfuKu400J#7F002ovPDHLkV1n8g Bjo$zO delta 272 zcmV+r0q_3F0;&R#BYyz#Nkl7vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi24#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYp@V@#0 delta 296 zcmV+@0oVSj1H%H4B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD000020091#$1tUR`xbr=Qw9|x0b+QmFMG9d0lY>D^+@5SvdAs@Wb(S%xBAm)iC0l) z!coU>N3A8I3BZ$91$1u8VgKcp!U70|Nnz~s0T-zCO{L%z&7qX=>#P% zgeXoEA%u{-GW)rDzrH;$mZdS;1AmWUWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>O zYAot*%x46$XHHL#o);pwc6 zEe4|#y#i8|jnu0&)9l5|#Q?WD>ctIG4;ZR{ISrCh{Z3Q~OZB_L7{tREL?Q{RbVEV9 zgJJ_!>#COBA&3{s9S}*|Fd9DPsj+aw*R(zX;4k4;kn>BQTlAOkPoT=k?Pw}NH8;Uy zpb{hkzx53i04?#i47U2yKkWfFTNkt3Ft~*fLI@#*K(Ydh6PrbYQckM?0000SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{ z#+DCKSxMeCs_RuedG_h18sqpUjyVOhI>5O0E$WB!dIg_Z9e*&8zHxsh2c$cli2x6d9DTS zX=-RnR&O)A5`WKBM002&eO9b3E`wid3|U`vhlR<7-h`(En%7;Sm?Fb*Q51oSJUH`n z8Xs_E!zx0EYvn$v2=c!zLD-(q=GvFLuEekcia*i3%f9(gdYoyW8i%uhT;S+e9c5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zd zft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivMYw1|D=OT|5i$+`GvVYwGhD7zjF6)(mfPh}vFD(g3cS2VluFy7QsX z>nHt6FON#F6mgzb1P_43-Vh;bb zlEL0bm$XTyuwU8nKOmt?YDV^tF958j%wxNxlqumymvlsa^W6Y+N!<*p0d(=nUD6gt z*8oaxT19YiJSGI-;a$>*pi3%)Zs=kr*8pUH000Qg0Z_F}W;N|SE&u=k07*qoM6N<$ Ef}xqG8~^|S delta 234 zcmVgy1BZyeElK6kwL5%?f zg_RHh0001q^SFQ0EfE%t=E=gx@YQbI_W$5K?y)!A8dgRf07`l_wmlC_oW^bJlogdp zpkpdQxviu~J{>EtX=)|4MzE}DP?i5+QJ;$}S~MEfiA((gXn#nRI;NM6l#a%*7m>{Y zBJDMRF3P9!mX|d)>*Y|f*C3mg`B?49jJW0-FMmBYyzmNkl;6{Q`T z6p++8A|fIn!Moruu8d;Q9>DBY?Ey52v*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+dAGl)4!#l;X{RhpcTRstGu$ zcRu+{Qy^zRkHnyYOhB_K3Z?&HZ7FZYKV&E|{E?W52*w6DYmqTnSFKwB00007vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2l$5x2S&QvUChxG)YN zC>jF*06;62djTijy}#`-I6X}CZbX7=yt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@ z$-3}oWBhJ5HV0QGa`50@fOcR2X2cjkKr~?C$-Mw$%$XIF#DAzRRZ<_+>Xm$yjtyWf zHQk0jXn!AV-9r2O=+!=Ku!`@ZIcdVLzFpnX7-V&SfaCReS_Uvs^h^%PC(!&F@K zveb)|r7~w}%zV-G=ZL8V1?bDnTJ2Eb+|gM^Ehv(Ng0)YKRGNUuBWwp`N#3(WNt;H} z4xr`Fp0wFtG$_?xZJkGw=dR)oA?UAx0RR9%FE8XfuKu400J#7F002ovPDHLkV1n8g Bjo$zO diff --git a/test-integration/snapshots/decodeMessage/nanos.38.png b/test-integration/snapshots/decodeMessage/nanos.38.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..355c272af3549fc07cb3c94c733a1f8b4886e0c3 100644 GIT binary patch delta 296 zcmV+@0oVSj1H%H4B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD00004#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYp@V@#0 diff --git a/test-integration/snapshots/decodeMessage/nanos.39.png b/test-integration/snapshots/decodeMessage/nanos.39.png index 18da61d22727989bf2700ab24c4a2b91d5876544..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 100644 GIT binary patch delta 307 zcmV-30nGl>0?q=EB!3l2L_t(|ob8#x5`!=ZM72}@|ATv|2S=MGKoiHnHtsv=1SKwn zC{7b0gpj*3`?-3*zCACNr7_wAe~)2gVK{AbE&d*No>7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1h3|iQ51G delta 312 zcmV-80muH%0@DJJB!3!7L_t(|ob8!G62c%1MN`M#|G-_;g$@o$fKVYo{cpM`NR#-3 zVN8ht004kyoJVxEwe0YSufb?ZPULj6vdgoXND zK@P@)9E=1f!ASmE(&1k|9l+)pMg>((P5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0 zi4|wengH3y(nKzvP00000U>q;jqQeRQ$FU{=0000< KMNUMnLSTZkgpj5H diff --git a/test-integration/snapshots/decodeMessage/nanos.40.png b/test-integration/snapshots/decodeMessage/nanos.40.png index 20641a16b0334e7da5812636cd7b665892a79e07..47045550f563e2928f113ee01b4e6353be5ef4f2 100644 GIT binary patch delta 242 zcmVia*i3%f9(gdYoyWSMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{ z#+DCKSxMeCs_RuedG_h18sqpUjyVOhI>5O0E$WB!dIg_Z9e*&8zHxsh2c$cli2x6d9DTS zX=-RnR&O)A5`WKBM002&eO9b3E`wid3|U`vhlR<7-h`(En%7;Sm?Fb*Q51oSJUH`n z8Xs_E!zx0EYvn$v2=c!zLD-(q=GvFLuEekc{PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g3pmL%NrvZT9e^gwI)8t9x%B{ez&Zt$VX1MLEkB!4tXL_t(|ob8$24uc>Jh3hik|AD=57bFCQRt6=sc)klW7zOO% zw-NyW000&_4=Gu1XqeCJ4!oW3><%=M4)ATi7RD8U2J?Xi^MM94 z8RGr(D4YmuT59W!Y^C^y>ds;+T<#*KUX_Xxe3)e9MeNpU-U%UuNljtS*o0grZz7M} zg&(1Ccs|xFFz|Yqc9Ba`X&j|F!oR{dnR+YPT+Vzn>BCqkLNUxaC^)LUHz)}ZXKVjE z7iapv-fXj~uS;2v!JBXprr!~5VNMUhQDaLGDTO&XD^8M{)9vk(gPX9c*)eFNV{6?5 k95VPGK#ry=006v>A2=?xQ_AR@Z2$lO07*qoM6N<$g5mF#!2kdN delta 430 zcmV;f0a5<#0>}f9B!7=dL_t(|ob8$2l7k=&g|)N3{{#1;d%@Py9LNtsp*!arFPKPT zAQB{Q8zF=ca+SyZ?K*`{-CjN@Lh~uT+?a_N!-t2Y2cS)TFh9eeaE@v}s=~+p)lfR; z@>2!dXd%>1>6yz#w^dM90Hy+^;Wy$Jnz<;+FB%Clegza+Hh`t@>0%6NefP&k2eiT z&(u=ZsO*#5$%($P79bTpmyCo5XC+EixI7WC7GNR+rFXDt7Jm|8pok7O&C@Wq7xJ^m z0<9gu7ddy=m*bO>N$S6OPjvPPoD)hbF|%?Qv4t z6Oefk3*>R~3GhUGZlz;*$~|Pr2oTictj>_sdN%IOI8BeU=PH?vdjZruPJVAuVO=+L z%;QvdMz8IFl`1^W&P3G#ff52mU-uRi1PA~C0QY4Fx1H+Mp`EkC00000NkvXXu0mjf D^&O89 delta 385 zcmV-{0e=3>0-OVoB!6Q`L_t(|ob8yw4#OY_hTCO*{|DY-JD6A_NI@jv!j~P?wSc0s z{l}3cNs=T(zMuOO0W^#{s0@-eZor%M)Op>Z)OJjQhX>##0Mc%X^Xd~*yY;a)h202h zu(Jc(s1eR%BS#Q8*clXc=V{|0Vw!8vUM2?lcag>m$0P6J;(wh0Vk0wO6ozHU!T`|O zp*O)8VGV$T^nBop5$a z^%H(Ymq#Mmgs;vfx<*e6huF6&!hAG`+PyY7vF-{=2+X&a{(th{pMbxg;09z4{K*`6 zvVQgB2&M5Q(t5%3ivIzHEre3{z{ZQCP5|nx!WT+K%4KAU6vb)>SO}$$_9IKAa?~ea zp-}3GUoh)x034JGrM|3^NQD^G07%uXqAhv=Y!Wabls=l;LL!aJT->|PRzRwu&e+$0 fy#13TNuu%t*(ye6D&drb00000NkvXXu0mjfBHg-r diff --git a/test-integration/snapshots/decodeMessage/nanos.44.png b/test-integration/snapshots/decodeMessage/nanos.44.png index 804fb3a0f56cfd511649be71e4eda1381ad16ede..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc 100644 GIT binary patch delta 302 zcmV+}0nz@V1IYrAB!3V|L_t(|ob8#(62l+}hPBhY{{wrl2Pd`>x4INk{_m8yFb*In z8Up|TKr5De0Vm$QzwI$NJxug&M1pF(yBJ_#`fZW114=#{H5+^BM#;7$UG_+aQOT;w zy6|UX{BAZj2UjL?@Zes6c3=Qz#27$8G+^P$y#Qm(nH7`7sDCb1QXkanm3)+r4PY%b z-G)ABe;;k#Li_vZ)jn*nitnO2a=;FHeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73 z)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&|(OE_JhIN_m|G-|j3l=o=V6ny4*e|;PLP}|Y z&VQPcBuSElV_Wy1yC=+`(mmez7{1bp^YU+O>)wt=SjT9@34k1r#=NwNsogpa?V_d{ z3$P6>2&YjC@w-C}c6GHJy7ZGlu+Dp!ZhE>Z@2+(*kg1u2mWLZJTZ=b9Er3L zTqq?b>%IdXA%Bq;eBGntqe}p~QbjJ2q9drm#tv+wMkLb=g;L0n^pB8889UUpXhLZx zMpA@cB6Tk$P7WB=065qykwz#XRzhhH)-?c9b*l&=j>mumT#!h4(eznDX+$(0KX12v mq#EkX;2Myxf086gV17;7MrJx=V)Ot2002ovPDHLkU;%=ym#>)s diff --git a/test-integration/snapshots/decodeMessage/nanos.45.png b/test-integration/snapshots/decodeMessage/nanos.45.png index e4da844413df4469d5044c9e87d1346d5970505a..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 401 zcmV;C0dD@P0;&U$BYy#LNkl%?El@*$@Khua)Wk_QOP&n_ETOD5zi5lsjst)i-9CS1DmGv;Fc+bI3!7LbVXD?FcK%XG&dP1%Rxgqg6| zedezP-Xf}}x_^VVCR%howI2iXfR>b}r4JX*DIXnn%;K}DV{I)XZ;b;zfR`D#(BFnB z6Gv`s){Nlh-=X*bHDL(y@g?KI7vtWZWZh$F@CL?cup z8;A%Xgb+gT**A6uk$I_a=7AftpX>y#$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+ zr1D@V03h3~`A(04n=2@o?g=*rls9_}92k&SPP}iSpS7`CmVa@_Ki5S#*fw;A)E~|b zNu~ZIx`dVbQ;`RJ*m0ao46!2QlPh9^L}*Dy37YQM9Mi2?ZPULj6vdgoXND zK@P@)9E=1f!ASmE(&1k|9l+)pMg>((P5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0 zi4|wengH3y(nKzvP00000U>q;jqQeRQ$FU{=0000< KMNUMnLSTZX9FUs; delta 296 zcmV+@0oVT10>c83B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD0000)|ADh;7wK3>K0yg;EN{Aq1{5V? zqyY$mAP53?-uq|^0ALz31|W~zbzUZ(^sQf4?;W<+_u|+8Sq&~?;VOB-3_z|*^(&CZ zmJd={N!~T8>s35?_UWb?WA}s1)o_RFn^G~aepQUq(?8`Imzje z?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T z&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gmklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALC zYG_JUZ!^0R&wo@zb7&%cR;(>9gI{Y5SzmOAg~^59gr@_V*Il8QBExY}6oHC7IP-HF zA8=&DDnf{B7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1oZRiL(Fz diff --git a/test-integration/snapshots/decodeMessage/nanos.48.png b/test-integration/snapshots/decodeMessage/nanos.48.png index 47045550f563e2928f113ee01b4e6353be5ef4f2..7cbf94713d9c53a3ba1382adcbc030d6be886518 100644 GIT binary patch delta 358 zcmV-s0h#`d0)PXMBYy!$Nkl8i%uhT;S+e9c5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zd zft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivMYw1|D=OT|5i$+`GvVYwGhD7zjF6)(mfPh}vFD(g3cS2VluFy7QsX z>nHt6FON#F6mgzb1P_43-Vh;bb zlEL0bm$XTyuwU8nKOmt?YDV^tF958j%wxNxlqumymvlsa^W6Y+N!<*p0d(=nUD6gt z*8oaxT19YiJSGI-;a$>*pi3%)Zs=kr*8pUH000Qg0Z_F}W;N|SE&u=k07*qoM6N<$ Ef~?7>Bme*a delta 242 zcmVia*i3%f9(gdYoyW;$gKHCoos=dzwBD%PDHLkV1in)fad@J delta 233 zcmVJg<)Cd`#R# zS_9f;0RYS@sVC6$e(ipyb&Hqt!x8eG)=)4tDXSyjmkxu?)$YwwPxS-_l?>Jocs|B_ zx}z1KS&q^=ur9guP)}fX6hMpui22(C^0MAUie?k8gVs(^k75>PxA6D6HWRXcx`C9E z{fqpSSh9a9YM@6AlzNFZx}nc83B!3D?L_t(|ob8y=4uc>JMRA$`|G_@!0|~m7Hb6#uNA8Iaip7?; zR3Ifn2qDCY^SH0l(%5m5J)yi^wdK)n`$*rhUhwz^ASr$cFHTm(R zBz{$LDePfa1!SdalsAO!M&F|3J_8yFDa{c|Q3H@f0ddpl%YVyTVf3m44c{5C?H>zJ zJLASel~t7cuSY4Pbqt1i8VSAsb2?l~?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7 zk4huRSP;zU!#MVlkJ`Bq!i3gsaNh~fL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@ uPyi5qw*A1Dpdm)LcAc{lLI@#*kZ3LhijPdW%$oWD0000VS0__5jB!4tXL_t(|ob8$24uc>Jh3hik|AD=57bFCQRt6=sc)klW7zOO% zw-NyW000&_4=Gu1XqeCJ4!oW3><%=M4)ATi7RD8U2J?Xi^MM94 z8RGr(D4YmuT59W!Y^C^y>ds;+T<#*KUX_Xxe3)e9MeNpU-U%UuNljtS*o0grZz7M} zg&(1Ccs|xFFz|Yqc9Ba`X&j|F!oR{dnR+YPT+Vzn>BCqkLNUxaC^)LUHz)}ZXKVjE z7iapv-fXj~uS;2v!JBXprr!~5VNMUhQDaLGDTO&XD^8M{)9vk(gPX9c*)eFNV{6?5 k95VPGK#ry=006v>A2=?xQ_AR@Z2$lO07*qoM6N<$g4zU?y8r+H diff --git a/test-integration/snapshots/decodeMessage/nanos.51.png b/test-integration/snapshots/decodeMessage/nanos.51.png index e55ef587cf27f2bed40a0ac3983155b52661901f..e3087cbed6dfcaf950133cf9585ec5c24bae02c2 100644 GIT binary patch delta 307 zcmV-30nGl)0?q=EB!3l2L_t(|ob8#x5`!=ZM72}@|ATv|2S=MGKoiHnHtsv=1SKwn zC{7b0gpj*3`?-3*zCACNr7_wAe~)2gVK{AbE&d*No>7iJ91maSV49ejSt^;ByqbM# zEb4B|X9TimPEU{H?Z6n)Mo)ODxqnXpR)9!Zl-;U?Z#hB@z<<2tF>osgzLn?U>8y<{ z2BQLqWQO zVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0| z5+nk@^$ipN@hrCtw))dQ?EyAh7qi?jxP=fx2qA<(vI2_}n?-|CPOAU_002ovPDHLk FV1g#wiPQi9 delta 305 zcmV-10nYx;0?Y!CB!3f0L_t(|ob8z14#FS|g{RT?e_$`%1qs0xCS&xEoiB^A$SCxT z&7Exn0002Q`F?&5{!=yNUk374!|G&)vv`LutX0|L@OtWM-s>`t@>0%6NefP&k2eiT z&(u=ZsO*#5$%($P79bTpmyCo5XC+EixI7WC7GNR+rFXDt7Jm|8pok7O&C@Wq7xJ^m z0<9gu7ddy=m*bO>N$S6OPjvPPoD)hbF|%?Qv4t z6Oefk3*>R~3GhUGZlz;*$~|Pr2oTictj>_sdN%IOI8BeU=PH?vdjZruPJVAuVO=+L z%;QvdMz8IFl`1^W&P3G#ff52mU-uRi1PA~C0QY4Fx1H+Mp`EkC00000NkvXXu0mjf DFOH8w diff --git a/test-integration/snapshots/decodeMessage/nanos.52.png b/test-integration/snapshots/decodeMessage/nanos.52.png index 8d806ca2d7eea00dc3fa6987f665e26c9907fcbc..0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d 100644 GIT binary patch delta 256 zcmV+b0ssEV0-FMmBYyzmNkl;6{Q`T z6p++8A|fIn!Moruu8d;Q9>DBY?Ey52v*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+dAGl)4!#l;X{RhpcTRstGu$ zcRu+{Qy^zRkHnyYOhB_K3Z?&HZ7FZYKV&E|{E?W52*w6DYmqTnSFKwB0000l$5x2S&QvUChxG)YN zC>jF*06;62djTijy}#`-I6X}CZbX7=yt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@ z$-3}oWBhJ5HV0QGa`50@fOcR2X2cjkKr~?C$-Mw$%$XIF#DAzRRZ<_+>Xm$yjtyWf zHQk0jXn!AV-9r2O=+!=Ku!`@ZIcdVLzFpnX7-V&SfaCReS_Uvs^h^%PC(!&F@K zveb)|r7~w}%zV-G=ZL8V1?bDnTJ2Eb+|gM^Ehv(Ng0)YKRGNUuBWwp`N#3(WNt;H} z4xr`Fp0wFtG$_?xZJkGw=dR)oA?UAx0RR9%FE8XfuKu400J#7F002ovPDHLkV1me2 BjnDu9 diff --git a/test-integration/snapshots/decodeMessage/nanos.53.png b/test-integration/snapshots/decodeMessage/nanos.53.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..8d806ca2d7eea00dc3fa6987f665e26c9907fcbc 100644 GIT binary patch delta 302 zcmV+}0nz@d1IYrAB!3V|L_t(|ob8#(62l+}hPBhY{{wrl2Pd`>x4INk{_m8yFb*In z8Up|TKr5De0Vm$QzwI$NJxug&M1pF(yBJ_#`fZW114=#{H5+^BM#;7$UG_+aQOT;w zy6|UX{BAZj2UjL?@Zes6c3=Qz#27$8G+^P$y#Qm(nH7`7sDCb1QXkanm3)+r4PY%b z-G)ABe;;k#Li_vZ)jn*nitnO2a=;FHeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73 z)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&|(OE_4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYzP`>~G diff --git a/test-integration/snapshots/decodeMessage/nanos.54.png b/test-integration/snapshots/decodeMessage/nanos.54.png index 18da61d22727989bf2700ab24c4a2b91d5876544..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}(0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY?@V^QG delta 312 zcmV-80muHT1JeSKB!3!7L_t(|ob8!G62c%1MN`M#|G-_;g$@o$fKVYo{cpM`NR#-3 zVN8ht004kyoJVxEwe0YSufb?ZPULj6vdgoXND zK@P@)9E=1f!ASmE(&1k|9l+)pMg>((P5IYJ{fJz942xrLsmh_HX*vzQ&A2L9L#;~0 zi4|wengH3y(nKzvP00000U>q;jqQeRQ$FU{=0000< KMNUMnLSTZ3+mM3* diff --git a/test-integration/snapshots/decodeMessage/nanos.55.png b/test-integration/snapshots/decodeMessage/nanos.55.png deleted file mode 100644 index 20641a16b0334e7da5812636cd7b665892a79e07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)SMMFR*Z1Pr|5*(#V&N)z!3;pIO7$y{#+DCKSxMeCs_RuedG_h18sqpUjyVOh zI>5O0E$WB!dIg_Z9Wao-aepQUq(?8`Imzje?~>~J=UQ$&aE$Lo%Uw2-M~6Ow8@&`L z@IJDo-{ma_g9#suCwwpxui5_-uNt?9i)V>T&Mb^&$h>^hLF{NQKiZIo7w$xZ)02gm zklGZAWQ}a0tgbwWY2>dz)9KTb*!fC%t_ALCYG_JUZ!^0R&s0QnXd-=9tSv5sUuz6m zUv!6s$%Wp8rvsYTU7?sF!*Nj*fr>mh^K%*>aAdc11ri!U_w?dBOAl*F&eX*hq){xGMX0d6M`0{<5v;gAU}5qf*=SGA5ah& UxI&dK>Hq)$07*qoM6N<$f?U(MT>t<8 diff --git a/test-integration/snapshots/decodeMessage/nanos.56.png b/test-integration/snapshots/decodeMessage/nanos.56.png deleted file mode 100644 index 0a417247a7b9a9d367300888396923fcf52510a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY+P){PvvS~Tj?tK}eX>i}rrBrVsak`2x@hi_TnrYV!^$pQD)g z3pmL%NrvZT9e^gwI)8e(^#FLlIt7*G5n2lJG}2w1p=J8d!c79*@fB?!ckP)!-~$oP z-OjKngPZ`XnHQEMB(h=%E zLcxc6^xsAIDFa>X^hOL79TUCT$+{-mO_lws?UKZg_STH{f5lFi5sfRTV~{h)Bkkta zmCmdzMVvo)YCTkzGUWLJJr58@!k5uGL>nl^!G$z6X|%OdPCU$OIRnMGDod1G%HDFj z-cPy%pp<_y)UhHZi&j|+T{)OC5)VNT1VIo4ftW9INfKAW$L@Ck0000!$uAlSGJXXVSvK3^OFh`tNdZ`H~igi;Bz+>D!7GD5*O-&-2XKU7+bK!Sp2DA5o{rJ0jkyesOO1)-zfbna40487M ypP!Im*&T=1F)88G%}4kPtL9({A%qY@$UDE6phl+vY}iu(00008i%uhT;S+e9 zc5VA*N*>1~xOoIy04U|5*!DUwd78JCA*@zdft4IOW`$U`Ns1_Ru@cxc?WeRuv8ivM zYw1|D=OT|5i$+`GvfTjXAR8ZSG;1OQ4Pf7n%>*)yHGnSa??WGqkfSY@+vQNP=b)Mj zyu3z~>d#+F5nQ~G(+|>=&|8F);RKbs^P$k|C;dt7vtWZWZh$F@CL?cup8;A%Xgb+gT**A6uk$I_a=7AftpX>y# z$u(Nm&*!q9C*+ZGeEJW*%}(>9Q=Wk8xE%Z+r1D@V03h3~`A(04n=2@o?g=*rls9_} z92k&SPP}iSpS7`CmT|{F*F`wkHgty6AI=R)rT!$kgq8YJkq3O_0TX^D@L=t}ozv)v z3|W_qhkj?H|dq?hx4~oT>wp1V`LI@$miSxLx($d&*l0BikUA5)W zZu>~zv0m`_1|TVZENNKYJ`*!Hp2vOD^)>nNq$GY-aw+U#R|RCHYLqvG?MC0CKxlL;-Qr=*!DnVf3m44c{5C?H>zJJLASel~t7cuSY4Pbqt1i8VSAsb2?l~ z?@yx1vGo2_7=w5igGg$Q-Bi)|rI@g|x-~P7k4huRSP;zU!#MVlkJ`Bq!i3gsaNh~f zL*^Gw#_5&-p9N)rcBfN-55TjUuNZ@cO3;6@Pyi5qw*A1DphmZLowE``2qA=!Xf6bb Vk4(ADn)(0$002ovPDHLkV1nOjj}-s_ diff --git a/test-integration/snapshots/decodeMessage/nanos.61.png b/test-integration/snapshots/decodeMessage/nanos.61.png deleted file mode 100644 index e3087cbed6dfcaf950133cf9585ec5c24bae02c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)70|Nnz~s0T-zCO{L%z&7qX=>#P%geXoEA%u{-GW)rDzrH;$mZdS;1AmWU zWMMdMb1nWJcb-v>KO7HV=3ttbnOQ2Cn7o>OYAot*%x46$XHHL#osgzLn?U>8y<{2BQLqWQOVgps{s+Qd$h!@Ho5J}rG8b0Nzv2erJ zv_1jgFX2{@^Glyw^q25YpvuVYXevQ9H^F0|5+nk@^$ipN@wW`N`qMw{0XAC~v)nMa gg%CmrA%sA(0*e!yMT1gKs{jB107*qoM6N<$f`uB3&Hw-a diff --git a/test-integration/snapshots/decodeMessage/nanos.62.png b/test-integration/snapshots/decodeMessage/nanos.62.png deleted file mode 100644 index 0a6229c935e9bba6acd82ca8c7dfa20a4e6bc79d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$LPP);6{Q`T6p++8A|fIn!Moruu8d;Q9>DBY?Ey52 zv*GhSH1{jX-Ml|t*y9zWR%{ku)Zc|+djAZI|2#GryqK(i?drT<}VDR0I< hWGFHGk(h`G#s)ZRkug|Tty=&9002ovPDHLkV1hi!clH1P diff --git a/test-integration/snapshots/decodeMessage/nanos.63.png b/test-integration/snapshots/decodeMessage/nanos.63.png deleted file mode 100644 index 8d806ca2d7eea00dc3fa6987f665e26c9907fcbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmV-P0k-~$P)l$5x2S&QvUChxG)YNC>jF*06;62djTijy}#`-I6X}CZbX7= zyt^1+VES#5u>(pz8#Nny=|;)6BwhAMhf&F@$-3}oWBhJ5HV0QGa`50@fOcR2X2cjk zKr~?C$-Mw$%$XIF#HcP+QXkanm3)+r4PY%b-G)ABe;;k#Li_vZ)jn*nitnO2a=;FH zeHy2reL$09;jV@zSFO%pbG@4N6iw^HR9y73)Qgm*GG}Sbe9`phh^Yky=*!Gn?NH&| z(OE_%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=XPx# diff --git a/test-integration/snapshots/decodeMessage/nanox.05.png b/test-integration/snapshots/decodeMessage/nanox.05.png index ee51839298dd18fab729e0cee14040a1d0bd5122..14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9 100644 GIT binary patch delta 332 zcmV-S0ki(j2j&8hBYy!cNkl~YDxeA00000h~lBWfa`M3WxOnl;!5stnSeUkqN*u>gn=vV%pf)bCRMt{svhyefq0I~V4W@oTQ ze^?IeB>SbkfL)tHSN`PEoRMQ$FxSbZg#M5xpgER<`;)p%bVJK-t#^75RxUx&;$B!u zfV{E?p`U>I&Y8Yfp~HJ)^R}FR$sadi004j}EIi}O|8Jd{nSq6VXQ$)TZ#VsqW+67d z-)XSyQm%wM(M4>=`sC-FET=6P)D4Z?@9Z0Q0*HIlxCDglclM1)faQK?`IhoFIRgLy e00000Uue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfSH|8Q diff --git a/test-integration/snapshots/decodeMessage/nanox.06.png b/test-integration/snapshots/decodeMessage/nanox.06.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 100644 GIT binary patch delta 358 zcmV-s0h#{D1AzmOB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef|YHj761SM delta 430 zcmV;f0a5;e1IPoAB!7=dL_t(|obA|cl7k=&fMK??H{t$A;x7GRht2RAkX1w9=U1x{ zA^~)C4gdfExZIEY6GBK%d+(2f-urG_`bdppYx1D7yM7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$f=sN^CjbBd diff --git a/test-integration/snapshots/decodeMessage/nanox.07.png b/test-integration/snapshots/decodeMessage/nanox.07.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..56eff5485e79dd0f3771be67cb4e65b087e49838 100644 GIT binary patch delta 366 zcmV-!0g?W#1c?KXB!5szL_t(|obB3C4#FS|fMGP=g!><yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$g7D0#$p8QV delta 532 zcmV+v0_**W1FZy*B!BctL_t(|ob8!Wa>O7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@sJhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)mvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCihzRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfo{!J` delta 358 zcmV-s0h#{C1AzmOB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef|LiR6#xJL diff --git a/test-integration/snapshots/decodeMessage/nanox.10.png b/test-integration/snapshots/decodeMessage/nanox.10.png index 56eff5485e79dd0f3771be67cb4e65b087e49838..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjF1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$g3S-9umAu6 diff --git a/test-integration/snapshots/decodeMessage/nanox.11.png b/test-integration/snapshots/decodeMessage/nanox.11.png index 8a50d7e0aefb037bc7c64b380116e1dd54e9430f..d2f0dd6732095ec340cf121f8399dba68b647931 100644 GIT binary patch delta 319 zcmcc3bc<<%O1+||i(^Q|oVT|E`I;33Tmx^HsK2ZC+&sN*f&i1#GLHl9?|)`Y+4eX^ zVB)RE3}A3zf5lqA1@mVfef!x)Jgulbg?-6Vf6cPyIQAp2mOtH>Gv!0vT!-arE)4F9x_qy;V<}6*%v+i3Dt^iDQdU^KHR&bu-rWnDZ(nG?QJ<{H1~gU2AV+qBZr={W z`MJ;XnUkB#U8H9mNDo=i_9@fzR#5bXSvQ~VUZ}b!?Xiw^z~ddg8CwUF8YqzokPfKR`Em^oRr?5@; zKikA@DT(z~UOmq&{$Jase#)$W*PIY}&%DQu#Rs-EOF{ez_3iwhOuJQYC%b>%D-06x MboFyt=akR{007&R*#H0l delta 320 zcmV-G0l)s*0^0(RB!41FL_t(|obB3S4uc>JhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)m}Nw1JDGJBYy%HNklctg`YUnZJ$di=Xuse*FM*h z+N3L~m6cX)9cqWR(qro^wB_#nMi^ze`dNRri?Qu<_w%rgMSoj|+M&Mm*w`RVoqW#9 zBdA3g?nCZ>H@LTUHe{CxsCcb47dr`AD(?u=8S5l%$wB38;rgmlAK^5%qsr zJDo2hmSDb%oZ;xaggV{j2>MzA?*S2{-QCy=2LJ#7D|mae;QSVZL4S(pTacnbwr>&L z<>FIkW_-+(E-xi1UExZ$3#bJp!Gx?RSC zVap}edWHoPFx-c(VJG*q>i;2pDzF42oov2y@OmkNCL3k#&#Rld{Q>-UfUXv>+0}yb z)lf>3N}8#gMhQmBFy_*$ZJz&;1={71Bi3vf7+ zD3s&T*L7(8*;0glU82{0R^FjEuj{#6?6i=ze5=|j!SBmcY13Z#NDWo$%*5bG;0|Ed z%S<0`)zAdoJqAvI@)=~tAhn-12N52_r3iQVFxh^z$J8WD)kmo_wD499ttI;MG>#n` z*qf5@05SV0l$k&cT?{4w000000000000000000005Xc|#P8g$74i23F0000y0cklD7 zWow`|A;C>4000000001RgNTSo^eEo&9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd& zfTqhq-sqQf3D6L0&{Idhl=2llfIG%jC~5Rdx-+2Z!kstzxqqd*7 zJEj|3s;(5#-k!WQ6On_4_i!_nbT4Mdd}t{`UTjO(ZtHQY*S2MR8tU7~N`C+V006ip=J$ZMBVQHWuC$cdV~V!LRvcFcTs7_#wi6yp&000LjJ)qO?Hb48jRNdEho;#n0a`pfIMAifP{caPPfX+D6ZH%6;538WZmYd?Mq0aaB zOZn5k`q8u>Ii$>Y#2L`$=9Oz^nO%zYvsV@$d%$VGSSL#Q6TB~e3Hs+q00000007wN Y7pL|pXTmd0$^ZZW07*qoM6N<$f+yP0O#lD@ diff --git a/test-integration/snapshots/decodeMessage/nanox.13.png b/test-integration/snapshots/decodeMessage/nanox.13.png index a7a8740548d2608032872a36bbf128b89b69847d..1c8a714f721eb077d6860f5ca1a6361d924d4455 100644 GIT binary patch delta 532 zcmV+v0_**i1FZy*B!BctL_t(|ob8!Wa>O7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCih-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g4^AvzW@LL diff --git a/test-integration/snapshots/decodeMessage/nanox.15.png b/test-integration/snapshots/decodeMessage/nanox.15.png index a1a25bcc339c3581703c9debb8715b97f6567df6..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 100644 GIT binary patch delta 359 zcmV-t0hs>K1c3vPBYy!%Nkl?Yj*NWIG*NC**W5F@nse@|+3 zV2cdU5C8xG0002+7N6A>7$+imJI1)MCU>|@KpFay$29m$K#qPH?$d)Vd{_(7 z;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DPSbGe8;%^ib7={|L$A3f&0001Z0V(7oofke- zpC^8{-*0AN>2Aj+O}kFDrY0aX;#j{n*IVuuf}fl+de&^?x{M@S5DRs zPVSUuKLMSVbj?c&HJX4>bs*D9oNV^{faRkOYo}M<1JDGJBYy%HNklctg`YUnZJ$di=Xuse*FM*h z+N3L~m6cX)9cqWR(qro^wB_#nMi^ze`dNRri?Qu<_w%rgMSoj|+M&Mm*w`RVoqW#9 zBdA3g?nCZ>H@LTUHe{CxsCcb47dr`AD(?u=8S5l%$wB38;rgmlAK^5%qsr zJDo2hmSDb%oZ;xaggV{j2>MzA?*S2{-QCy=2LJ#7D|mae;QSVZL4S(pTacnbwr>&L z<>FIkW_-+(E-xi1UExZ$3#bJp!Gx?RSC zVap}edWHoPFx-c(VJG*q>i;2pDzF42oov2y@OmkNCL3k#&#Rld{Q>-UfUXv>+0}yb z)lf>3N}8#gMhQmBFy_*$ZJz&;1={71Bi3vf7+ zD3s&T*L7(8*;0glU82{0R^FjEuj{#6?6i=ze5=|j!SBmcY13Z#NDWo$%*5bG;0|Ed z%S<0`)zAdoJqAvI@)=~tAhn-12N52_r3iQVFxh^z$J8WD)kmo_wD499ttI;MG>#n` z*qf5@05SV0l$k&cT?{4w000000000000000000005Xc|#P8g$74i23F0000<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$f-<0~_W%F@ delta 450 zcmV;z0X_bS1Kb0UB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=XY4+knlLomohBk6e{l6!x zFJz`nVW=qq000000N`IdRu5oaMC_k)&I?C!hGhcE(3c$3;Fo|s`enGgUs`ys9>An3 z&~|Zm6%l3qIli>uIs>rG=r(t}{gdwusABCH`iK2U;6gM?FQ$3tUPZkGVI|Xl9RUCU004lYH#Vur7_Q|%hX4Qo07*qoM6N<$f?uVe Ap#T5? delta 953 zcmV;q14jJ(0?r4JBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfsjS{J diff --git a/test-integration/snapshots/decodeMessage/nanox.18.png b/test-integration/snapshots/decodeMessage/nanox.18.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..8ffe94b05a95808cf3742a29cdad5a587c437b6e 100644 GIT binary patch delta 318 zcmX@Xe3NN{O1*-oi(^Q|oVPb)`3@-vxCNTLYx%36`Rx%ir(@l%jwP4*-&Yze&GJs~ znx@FY00w`$+soOX&5XR)XK3~9iTET=4d?hEpXNBGqA#Zl%FDefs>&0BL^F2oSZ%cV z)A#2)G#yJ>4xD{q7QW|i^E-|eNoys3xxClZ_#jawT`vvP6{l9u_A!ti^Wq26I_4 OkbtMFpUXO@geCwP$d2X! delta 430 zcmV;f0a5}f9B!7=dL_t(|obA|cl7k=&fMK??H{t$A;x7GRht2RAkX1w9=U1x{ zA^~)C4gdfExZIEY6GBK%d+(2f-urG_`bdppYx1D7yM7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$g5J;4egFUf diff --git a/test-integration/snapshots/decodeMessage/nanox.19.png b/test-integration/snapshots/decodeMessage/nanox.19.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..0966b381351991acb6db707ea26cd67901f222f9 100644 GIT binary patch delta 429 zcmV;e0aE_01jhrAB!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjf>G#kn delta 532 zcmV+v0_*+91FZy*B!BctL_t(|ob8!Wa>O7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCihtVJ!oFmwzh+r;9Q%=1%b)JcneriSuEX**7m7;5 zQ`264UA|Y_v6LlY=B>Z981`3Oy#8vlwOiSNrzNxemMq+uQ`n~a zpKao{l*D=~ubyWX|F3ORKV{axYfgx~XWnDS;se{7r6B%<`gZ6$XiT My85}Sb4q9e0FmUBfB*mh delta 358 zcmV-s0h#{V0)YdNB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef~_>CCjbBd diff --git a/test-integration/snapshots/decodeMessage/nanox.22.png b/test-integration/snapshots/decodeMessage/nanox.22.png index 56eff5485e79dd0f3771be67cb4e65b087e49838..63ca33084772046af8e4e052eabc24df0cb998ce 100644 GIT binary patch delta 701 zcmV;u0z&#6MGOsFfm4Fj5w>WtDbhUf8#$lhQu6iP5SVVCn%~Kye4y`l>R*cJ@%!5D1*&*$T*b zbyycW_EIbD81bKkOV)l;rt+%4Y|YCtEpQzF3dn;-H6?aeNBC>gPL)?7RLQXcI?HkW5 zyY?6G?*Uj>XwI%9fb&Idk_6LC?liy|ZH_S>JHL7ke~!T!d%q{w4?)*a4PviQL-(NV zOOEh&$D%htz2GD){ga$2{Z#N=78{b>iY5>}l*L(3W;q~5WM=hF5Mjjr&uh6)Z0@bP zKHSHw%zrtO3OrkqPYI{`#5l@x}hJjTqkVjOdg(a6wEh<7jtDKbi4s zqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-#v^HnIo#@NO6%al`UVY;v+>|7z#8J@3 jZ?7;y2qAVh7bmoZIQO~|DL9s zgA~S~m=XX000000{>8((0_TZHInFs7*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWK zaB+`HMC$QJ{}@8lCje$f-8^FVPjR1sCe{%{zlk>sN=!qYxPQk&3;+NCFtBbN(5#-6 znY)NAp4YE0(acQFV0~V}Fq84JD!5SgQtFP`T=sPtJi5NSjWb!FJ5Z8n<#;<#PL0l< zC}rmUKV|;}bnOS_Wf56C964=(oO9C#%LatSBah$xfUOOzYw>f&Pe2`IrRz;zHoCt1 z^KJtlEeHSr0BGm9{#QgdfjY{n?z2NoD6diyKKqZ#s?GC)&hJY2sG!~4X)dT>7_oF{ z2%5QxL-!eiy8Q1o-lqY&+cM6hp8~xDbXyj4|H9xE0ssI20002s;|@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf D!O{9F delta 353 zcmV-n0iOPw1pES!B!5FmL_t(|obB6N4#FT1g<&-Ag#9mR_Tod62DvnbHgZn=zbC6N zWTs4Es3`#e00000;9ope4`5zI?4NVa3rBK>Wdh33mmJgJmw-L`Ww^UvT6nG=z@#eB zc5!zV5oP^3zO>*v1F+2KHg~-JlkW_uV(l3Ejo&ILu?!V)kAICA0001hPt)67qm8j^ zE8;d@s|PTn-2=A=GA>6n>Ivu;lQzm}d_)rw$~jO^K=<5n)Q(mT^oZ*-Am?0$d%HAx z_U>F0(B+r|^%68PTA?~tApigXEYQAC_2ny8b4z};jl!)qVveLYVpV&m?e-irL6d)@ z^hdUERE@T_?^@QDj_SSW(XR)mItt}TdIn6eYm}-aVDF=yk5sqv$mT%(A-pB#eE4J= zr7APvLNrP*rg`UHMZE-JCDVT$0RR910Dz%4HmS%MuH`?600000NkvXXu0mjf5_X_! diff --git a/test-integration/snapshots/decodeMessage/nanox.24.png b/test-integration/snapshots/decodeMessage/nanox.24.png index 8ffe94b05a95808cf3742a29cdad5a587c437b6e..1c8a714f721eb077d6860f5ca1a6361d924d4455 100644 GIT binary patch delta 532 zcmV+v0_*+R0<8p)B!BctL_t(|ob8!Wa>O7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@sa+7I-O1*-oi(^Q|oVPb)`3@-vxCNTLYx%36`Rx%ir(@l%jwP4*-&Yze&GJs~ znx@FY00w`$+soOX&5XR)XK3~9iTET=4d?hEpXNBGqA#Zl%FDefs>&0BL^F2oSZ%cV z)A#2)G#yJ>4xD{q7QW|i^E-|eNoys3xxClZ_#jawT`vvP6{l9u_A!ti^Wq26I_4 OkbtMFpUXO@geCy_Y>vzT diff --git a/test-integration/snapshots/decodeMessage/nanox.25.png b/test-integration/snapshots/decodeMessage/nanox.25.png index 0966b381351991acb6db707ea26cd67901f222f9..50781aad917d8731ed37465cd6c3e599f9f13f1f 100644 GIT binary patch delta 518 zcmV+h0{Q*N1E2(uB!A~gL_t(|ob8!QZp0uAK$)sH;r>U;UAl-GA^&0m$uRAEtBGU4 zHpVEPQUCw|00186rA6DewU4#dr;Lf%trEtxLQ`S-D%1J$UMv##Jhj%3v$>S=oz!cO zg_&_W8HIAKRi~19+77iqU&q?CM=NLKflxc*MJARUxFWV~lF2Ra_zJV# z4e&;aP4*03vmASl45Bl=-J3n}h2&7qmY{&vtHHQWsYSgunEIJXVjD8`rz9`oeFKvz zBa}0qct=>Duzx`tJV#7<#%pt-u1k27{Knid{0}gp1i=VH8*u9pWP%&%* zLpSuz43(f3I->vp00000000000000000000000000PtV=0a<4GzV1>)0ssI207*qo IM6N<$f}B(Gy#N3J delta 429 zcmV;e0aE^;1jhrAB!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjf)Gp8* diff --git a/test-integration/snapshots/decodeMessage/nanox.26.png b/test-integration/snapshots/decodeMessage/nanox.26.png index a7a8740548d2608032872a36bbf128b89b69847d..14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9 100644 GIT binary patch delta 331 zcmV-R0kr;=1LgvdB!4YQL_t(|obB3C4#FS|fMGP=WcNQ3cky9L$jaEvGOzyey02O73u(fI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66 zarY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!%SN@)Y5|5!q%zsgc0RR91vH7iLXRt

zX|U{4u7o?$Y(&QT>GCih$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVJfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef=Gj=-v9sr delta 374 zcmV-+0g3*B1CaxeB!5^*L_t(|obB6P5`r)cM$ziHlkR^>-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$f=R@uTL1t6 diff --git a/test-integration/snapshots/decodeMessage/nanox.28.png b/test-integration/snapshots/decodeMessage/nanox.28.png index 63ca33084772046af8e4e052eabc24df0cb998ce..56eff5485e79dd0f3771be67cb4e65b087e49838 100644 GIT binary patch delta 367 zcmV-#0g(RG1&ITYBYy!Vh7bmoZIQO~|DL9s zgA~S~m=XX000000{>8((0_TZHInFs7*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWK zaB+`HMC$QJ{}@8lCje$f-8^FVPjR1sCe{%{zlk>sN=!qYxPQk&3;+NCFtBbN(5#-6 znY)NAp4YE0(acQFV0~V}Fq84JD!5SgQtFP`T=sPtJi5NSjWb!FJ5Z8n<#;<#PL0l< zC}rmUKV|;}bnOS_Wf56C964=(oO9C#%LatSBah$xfUOOzYw>f&Pe2`IrRz;zHoCt1 z^KJtlEeHSr0BGm9{#QgdfjY{n?z2NoD6diyKKqZ#s?GC)&hJY2sG!~4X)dT>7_oF{ z2%5QxL-!eiy8Q1o-lqY&+cM6hp8~xDbXyj4|H9xE0ssI20002s;|#6MGOsFfm4Fj5w>WtDbhUf8#$lhQu6iP5SVVCn%~Kye4y`l>R*cJ@%!5D1*&*$T*b zbyycW_EIbD81bKkOV)l;rt+%4Y|YCtEpQzF3dn;-H6?aeNBC>gPL)?7RLQXcI?HkW5 zyY?6G?*Uj>XwI%9fb&Idk_6LC?liy|ZH_S>JHL7ke~!T!d%q{w4?)*a4PviQL-(NV zOOEh&$D%htz2GD){ga$2{Z#N=78{b>iY5>}l*L(3W;q~5WM=hF5Mjjr&uh6)Z0@bP zKHSHw%zrtO3OrkqPYI{`#5l@x}hJjTqkVjOdg(a6wEh<7jtDKbi4s zqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-#v^HnIo#@NO6%al`UVY;v+>|7z#8J@3 jZ?7;y2qA@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf DU7z{+ diff --git a/test-integration/snapshots/decodeMessage/nanox.30.png b/test-integration/snapshots/decodeMessage/nanox.30.png index 389c244b04442e80358f7291847758d515e7dc33..6fb64278872da49278bf6b6e344d72375d2a804d 100644 GIT binary patch delta 282 zcmV+#0p)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$fF{jhRF%YhdyU<8thF#8vT5@o0TTKc6VS< zG0^75-Kr2mzW(TkCRn`#u#I$?TfF?8-8-NdYl}l4*?S9eynlus;u(P$00026!Tva) zh^p>+qYohvIyl#gY1btcioEHfZ~3p^-5n6+7ilW%yD@ovQ5g^8U!|$9quc?_3s%a5 z4mT*Zd7E?ZfJx^pGCHg2=pNqt^Ou(=Pk;%Vm!R}`%xhA)e;K)aIOjFz-xkJLS?-%y zf;M9U001lXXMf!EY(e;w*Gn~*DUHj_MDv$k`q>jT|A(HRwki3a&V-M2YOHX1cFb%b z)=WA&IoOGL&E_x_^`8otdfM3-ntdP=R+7dAX&Yo_d!!C-ZRMHQrXuDyp6V8gnl$CH z(A*E`?1}!FMVn~%1!DPw)K$x9T`x6a;=1m4Uox&(B|OrhR9}1E=)0v8uxR~>1!-GR tN{be&R`bcBe5R)b000000000-djmh7g@Xy<`9=T$002ovPDHLkV1gtK*zW)U diff --git a/test-integration/snapshots/decodeMessage/nanox.31.png b/test-integration/snapshots/decodeMessage/nanox.31.png index ee51839298dd18fab729e0cee14040a1d0bd5122..8a50d7e0aefb037bc7c64b380116e1dd54e9430f 100644 GIT binary patch delta 321 zcmV-H0lxmu2ipRWBYy!RNkl?Yp-NWIH`m=K0&9J;k1yw5Ln z&X876iYWmA00000U=|PW2J|ztyuB=oV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~ z#a)$|mE+Ixt_0N{05^NLx#I1gbbCM*YsJv7^xlFJuc1MVF@F&Q0001xQfd_yM9U0k zsFosz@$zm!k81g)ni6jpXLOfqe5~=xQETotH_rbWhjtGbK->i6!DKsbj5Lz)5Ox-~ z2kdD+W^X(n0002PnyTJ;jER`Da1${ztG+vLeukdT6+S7HwtZXgtp2!nnqr|eTo1TN z?m^<2fP;GHl{#zQb*cY|*aLo%n6M%ypc{qK+sF;&-Ixd9)3j4!000000H*K;?9J9^ T{Tde$00000NkvXXu0mjf8g-J{ delta 953 zcmV;q14jJY0?r4JBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfF4Nu; diff --git a/test-integration/snapshots/decodeMessage/nanox.32.png b/test-integration/snapshots/decodeMessage/nanox.32.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..0966b381351991acb6db707ea26cd67901f222f9 100644 GIT binary patch delta 429 zcmV;e0aE_R1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjf6`9aO delta 430 zcmV;f0a57}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$g2F)3Z2$lO diff --git a/test-integration/snapshots/decodeMessage/nanox.33.png b/test-integration/snapshots/decodeMessage/nanox.33.png index b2674191a124127bd923db472bc86027d05d6db7..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjg1eF7jB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVO7AKy9Zt@%~5hF8#=Ch5{0dZjzn8_qAaO zASg~K1poj50N`@I)N^Z1KGs?<4Ca6>HWiW-x(ds^tmWI4J}U2dYONm^`A- z?}f2KMehjPbAL7yNw6GOo>{x=D1Ql0kuS`v6S-G3esGkgbF;o+zx>Eaqz%|Y#; zt%#(n$AFcihlcox$r#`|rJk^PD@{ zkGdx=hH2={Otl~h!%+YL00000000000000000000000000Qj%`0;#nKWc=0R$p8QV N07*qoLGv!0vT!-arE)4F9x_qy;V<}6*%v+i3Dt^iDQdU^KHR&bu-rWnDZ(nG?QJ<{H1~gU2AV+qBZr={W z`MJ;XnUkB#U8H9mNDo=i_9@fzR#5bXSvQ~VUZ}b!?Xiw^z~ddg8CwUF8YqzokPfKR`Em^oRr?5@; zKikA@DT(z~UOmq&{$Jase#)$W*PIY}&%DQu#Rs-EOF{ez_3iwhOuJQYC%b>%D-06x MboFyt=akR{0LZtLtN;K2 delta 531 zcmV+u0_^?T0;~j(B!BZsL_t(|ob8xfa)U4oMb%Ds;{7j)z4U_#*u6<>aTtlV)NbwS0H?Wv8 z%DCc5bcF2*8-LUgIpU62yml8lbP11A-0vvl08MP%>8 zbx`Dqui`dnmR zhT3+UbU{~tBc`#6MGOsFfm4Fj5w>WtDbhUf8#$lhQu6iP5SVVCn%~Kye4y`l>R*cJ@%!5D1*&*$T*b zbyycW_EIbD81bKkOV)l;rt+%4Y|YCtEpQzF3dn;-H6?aeNBC>gPL)?7RLQXcI?HkW5 zyY?6G?*Uj>XwI%9fb&Idk_6LC?liy|ZH_S>JHL7ke~!T!d%q{w4?)*a4PviQL-(NV zOOEh&$D%htz2GD){ga$2{Z#N=78{b>iY5>}l*L(3W;q~5WM=hF5Mjjr&uh6)Z0@bP zKHSHw%zrtO3OrkqPYI{`#5l@x}hJjTqkVjOdg(a6wEh<7jtDKbi4s zqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-#v^HnIo#@NO6%al`UVY;v+>|7z#8J@3 jZ?7;y2qAfBYy!cNkl~YDxeA00000h~lBWfa`M3WxOnl;!5stnSeUkqN*u>gn=vV%pf)bCRMt{svhyefq0I~V4W@oTQ ze^?IeB>SbkfL)tHSN`PEoRMQ$FxSbZg#M5xpgER<`;)p%bVJK-t#^75RxUx&;$B!u zfV{E?p`U>I&Y8Yfp~HJ)^R}FR$sadi004j}EIi}O|8Jd{nSq6VXQ$)TZ#VsqW+67d z-)XSyQm%wM(M4>=`sC-FET=6P)D4Z?@9Z0Q0*HIlxCDglclM1)faQK?`IhoFIRgLy e00000U@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf D%}4pM delta 358 zcmV-s0h#`r1c3vPB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Ef>-3G>Hq)$ diff --git a/test-integration/snapshots/decodeMessage/nanox.37.png b/test-integration/snapshots/decodeMessage/nanox.37.png index 56eff5485e79dd0f3771be67cb4e65b087e49838..8b7052724ced5fbc86ffd55ab51b5bba6278fd9b 100644 GIT binary patch delta 737 zcmV<70v`Q|1Na4yBYy(FNklZk$p80000009ei+c75MBy}Yh#VKN$>pzVJ*wUPT-Wuw%>Q`` z(P^QMH8~7v;g(T;CH>2x_bD&iTFpup_Sg;MecvpxR{PkNihn)>7}pO)Yio58Pz%UZ z)SSA>c#6@W>=s#_GPv^4Dj2nEg{BsL2Cz0#o6NXN<~QWT-^8twb}V&Jk2+ENPxT-t z8MWvg(7K0pZ!1OTim`=Ob%Mx|PWz?~d}gViT}zMwt&iHoqwSuu7NrFBII(l+u0O@I z3D>T34i;AU(|zMM4qZM+)zqZr*#|qy1EYT}ibU~599pUWML5B8O z+VV*E4Sx>xb{3bF_b8p+;WEkXM7jdxs6OfuP2+0i0=ItB4r2ans&JGQ_w7UvVwEBN zZ{?hwbWTiko6`Xm`2*Rdz2M*V;4klSnBr%i+nf&Y>wmT^>S4%(-0)ksOmh1^vbG2H zXTrGibhp1q4V^SjgKqi1BsY@2VYW^fXSxLd09v5)#V6-q^b~X^nJ3{jyic?I0=8?G z^S~0cnfEP0eqQm)%r|$y;Z0w8SqDTkOR$c}KPDD~O?Wd0siC<*vjhMDa6111x+4P^ TcncjQ00000NkvXXu0mjfo|k1k delta 367 zcmV-#0g(Rq1&ITYBYy!Vh7bmoZIQO~|DL9s zgA~S~m=XX000000{>8((0_TZHInFs7*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWK zaB+`HMC$QJ{}@8lCje$f-8^FVPjR1sCe{%{zlk>sN=!qYxPQk&3;+NCFtBbN(5#-6 znY)NAp4YE0(acQFV0~V}Fq84JD!5SgQtFP`T=sPtJi5NSjWb!FJ5Z8n<#;<#PL0l< zC}rmUKV|;}bnOS_Wf56C964=(oO9C#%LatSBah$xfUOOzYw>f&Pe2`IrRz;zHoCt1 z^KJtlEeHSr0BGm9{#QgdfjY{n?z2NoD6diyKKqZ#s?GC)&hJY2sG!~4X)dT>7_oF{ z2%5QxL-!eiy8Q1o-lqY&+cM6hp8~xDbXyj4|H9xE0ssI20002s;|0x$i_0_O#gBYy&}NklVjz#RfF_W()qD&EYj{cwbs|gTuS*5 z+O^X{9dU9ncE+_;u0`IgHUI$f2!Ou-#MEqN_2e_J|Wd24wvy z;3m9xAUI??V}GP3))baAEEt1T5j7pDwOY`nO*jhPF(a~n00~PFi4f|5p+`hQ2q8oGOj>kFn{VmRM!BX%X@%KM3mcg$dW>( z)>fKE?=BrOrHDhBTCLHi(W!@yTz_zX6E46wY9sJ_<#f;VE%9u0%U@!&ODTupnkmys8rFwREePipZ4d+npYg3kB zg?ySf!hh{RP6f!T5~<@bQLUWd79{f^hDWo)%e6&FJBZ=>Uzs~+2b~bJ+@^KFj(jy% zwa@%dJ>d3;!xTS*+$KvA1&9onNK-t>4d2Q#$nE>c+8)%`gmLG&Zof+n9W+iOZk2yY zK1lk8X`L|EbV~>!MB#&v&ENGDv>?eR;R(D?uu1#?o)s*I!X@Zo-nRtdyy8olPws%l zn||kI9S{*L$vkfVU1C1mgdb)tH8c?lmV^*OR_7OX%Ik73_lZUT0000P-AqLxY?mwUci z3R2|6eM~U}000000KmU^WDnrHh-lmHo;Z?Ul$?OR^u3DHP;UZS_4{%!KP=&yJ%E#j zLYJ$1RT0sjfA)7vsM-NY^J$q^T>e(K1BO~xEd8e5U664bDu3c04`KiS06+rK=YYEL z@*T_%y8B5(-5kO+J0K#KFI&va-M{X(-?nY~>6kg!{1kuAN0-~mE%M49z(T)l=QVq- znnPFV(2b*a>gDc-s=0k%vk!D9;BuOCpm++}`QO8EQ9X3jxCjFP0LW0xf{Yu-T%@7N zNJEp6h9)Bol_@|PdN-PLpm+)*4Fv!I00000aJ@H=aNex*Rz6(-0000~YDxeA00000h~lBWfa`M3WxOnl;!5stnSeUkqN*u>gn=vV%pf)bCRMt{svhyefq0I~V4W@oTQ ze^?IeB>SbkfL)tHSN`PEoRMQ$FxSbZg#M5xpgER<`;)p%bVJK-t#^75RxUx&;$B!u zfV{E?p`U>I&Y8Yfp~HJ)^R}FR$sadi004j}EIi}O|8Jd{nSq6VXQ$)TZ#VsqW+67d z-)XSyQm%wM(M4>=`sC-FET=6P)D4Z?@9Z0Q0*HIlxCDglclM1)faQK?`IhoFIRgLy e00000U)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$f=Z!(tN;K2 diff --git a/test-integration/snapshots/decodeMessage/nanox.40.png b/test-integration/snapshots/decodeMessage/nanox.40.png index 8a50d7e0aefb037bc7c64b380116e1dd54e9430f..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 100644 GIT binary patch delta 358 zcmV-s0h#{W0)YdNB!5UrL_t(|obB3C4uc>JfMK@mCfxr>y~`d*2oY%zBeeK`Pik~v ziww{Z00000008h7pVbu@Cn9+}#<;L1ceqSI8TyjPH26zEj(!>L(}OO2S65)rA<*vP z?v;p?{g1xug4ZVi%e0!g$L1gWJ^_bVdklTzZxj?5h8nTQM1Kqb004LaDdZ!a7d}*< zCw{iyZ)RcXZpS7~yH2&HCLlE8SierGXSpJhH!l5}{sKp@#%}c6K0TrCsXEVBPSy`j z?v!Rf0iBj~%}WY3nt)JsAk#{mZ1($r<)aR3ral2N#&Q6vx45xXr6Th7VYfb~b>TqK z0002!XZov%!(U+WbZVw7ABB6%f6$hF>fP45knyRX*DvF0bu)L-@a?VzCEL$VttX)D z&9}_KK3$Mg`y{~lpKXivE~qoCm)2PU00000006wv9}2zIaTFgmzyJUM07*qoM6N<$ Eg07mUC;$Ke delta 320 zcmV-G0l)r%1KR?SB!41FL_t(|obB3S4uc>JhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)m<yo~E0F z6vm*K5&!@I0002~#lyM+=ZQ!;&N&;_hVYa7(&!10A@zrJYx4xai4%D))7O$i8l*MOhcWx$A3Z$0000mux=gDte%va zyNE2F*RL|>WrGxZy1x7K zZUY}J2mk;8=V!S7S41~~I?Afj1rvbX#GR~u)0=)xtTNZQw!r&DG00000007|Q4buSUYD%+U5&!@I M07*qoM6N<$f)tvm;s5{u delta 429 zcmV;e0aE^n1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjftM||Z diff --git a/test-integration/snapshots/decodeMessage/nanox.42.png b/test-integration/snapshots/decodeMessage/nanox.42.png index a7a8740548d2608032872a36bbf128b89b69847d..9fbc447c72dd7395262af62672e5d0b2156bb7ad 100644 GIT binary patch delta 303 zcmV+~0nq-H1IhxBB!3Y}L_t(|obB3M4#F@DL{Wp-iTA%G?}d*_QIv$DmP#I%d%ju< zQsl&aOfdrh00000z`uB858%9rXxr|dIFetKoPfUcy^7ONZvtBN`*JToEa90wfRlzo zm#ceK5z(K2_IFFD+5t%OX_;4C{#LgGhFVuF{ifbskZ~I-;(s0wVgLXDKmyU{fV%PW z9n259`$I= delta 378 zcmV-=0fqj`0+j=hB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV+eFO8@`> diff --git a/test-integration/snapshots/decodeMessage/nanox.43.png b/test-integration/snapshots/decodeMessage/nanox.43.png index 69ea1320dab303f5042d49f9f7c140fc45e3aa31..6fb64278872da49278bf6b6e344d72375d2a804d 100644 GIT binary patch delta 282 zcmV+#0p)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$g6;`_SO5S3 delta 375 zcmV--0f_#z0+9odBYy!{Nklx_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q> zBw8--szL~H{jnD%sGb41P3Xhh29*7Qm?7jCNo~-i^Xj=BQ(Z5 zvlopLRMTgZF$NSI;==fz&3$@k|dtXVZX$*b^)#m{=@4ZUZzT^xjHj3k< zEGv^W`3A0%%5dVA$*vDqA$yzv0000)%zPC;>Fz=(drLK6Y-yU# zV`wvOm!zS#D~U5_JTd76ggaBYy#>Nkl*#ld?JcI07pz^5RHHyKZU*6n>Kp}oFT5F+?;l{u-O0@^na*qA^H?lIp%bIjrShH z0002kj9%?I^NVBqAiLJYz12Wgb=Iky_SlF`T-rDDcMFYd#Htin^)NqHc-p1ZWmrwxqG}PINF<1 z5zVgXTgTbd6MxBuRWs7X0GxO0>;JiVr{9g{SS^3cv-pEH_z*smVlVc4?1f4E*DU_j z?EA8zy-EMp5cX>IhQzbFJ%V-FAI~wD{hTT6HMq88#^R!BkA1)g8{7vZ-g|UZlOa(8 z0IV}>Q5dbAS$-aE-IE0E6-I7nC%rVMoluP5&Ma)i7C>VF7GnSwd-frmS}y?P*XA+F x@tX6^?R=e2U3Bh&=mP)%000000002M9RD4`q6qj>3cLUS002ovPDHLkV1iN|-LwDz delta 701 zcmV;u0z&=Z1JnhOBYy&$Nkl#6MGOsFfm4Fj5w>WtDbhUf8#$lhQu6iP5SVVCn%~Kye4y`l>R*cJ@%!5D1*&*$T*b zbyycW_EIbD81bKkOV)l;rt+%4Y|YCtEpQzF3dn;-H6?aeNBC>gPL)?7RLQXcI?HkW5 zyY?6G?*Uj>XwI%9fb&Idk_6LC?liy|ZH_S>JHL7ke~!T!d%q{w4?)*a4PviQL-(NV zOOEh&$D%htz2GD){ga$2{Z#N=78{b>iY5>}l*L(3W;q~5WM=hF5Mjjr&uh6)Z0@bP zKHSHw%zrtO3OrkqPYI{`#5l@x}hJjTqkVjOdg(a6wEh<7jtDKbi4s zqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-#v^HnIo#@NO6%al`UVY;v+>|7z#8J@3 jZ?7;y2qAe)= z^Hg7i5K7zbWNrW~^191Tmo4g$9K3Rf+(4>?J^5LpHG3z7kbgeQmNs&=<_O8NWoOpx z0C%blG&X$6rg=#KGGk6$cn?@}1iAB+6JIhn0Qoph95X#7by>Zt8S0(Gk_G?(006fV z|3`MImlt1C<-k&)G^U}&@qu!|v#C^RdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZa zD+Ins1FW=b*?(K6C`t+HWY12)AppsaGM(9zRI#RX+_i*N3oBpu2(iM`X~tg3xB=G> zZ<dds_Kt=KYqDWkt)#Y zO~ts`&kR20000mljYCaJM+Aouva)YS$`JOe;s`o8LsvZI;}T8HC0)C z$7-xha*^{4`qTG4H5{w<(iYgT>Y|*BJnsm48GB_zOVpCi``9-CuXlao)&QJJ7JjT6 zTG>bIzZ))cz5@4}zL$_0e8o+8QuWb=JKh5ZI8}ZD000000000000000fNl8$uwK}u UJl>+D01E&B07*qoM6N<$f`zI1sQ>@~ delta 513 zcmV+c0{;E01e*kqB!A*bL_t(|ob8!WjsqbGK;6yW#QPt~yX?oL#(*$X9c`2MzNVG| z1QknD0ssI20Qhi9DW#OtUi6vwt$n?`aI9#V0SA7ETs7I5Az>@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf DBY^qb diff --git a/test-integration/snapshots/decodeMessage/nanox.46.png b/test-integration/snapshots/decodeMessage/nanox.46.png index 389c244b04442e80358f7291847758d515e7dc33..0966b381351991acb6db707ea26cd67901f222f9 100644 GIT binary patch delta 429 zcmV;e0aE_l1IGi9B!7-cL_t(|obB3eZo?o9fMGW6Cfxr>zRP}~S{5HxnoJmX@AIo= zYoInE!A&Uu00000003}r zrprOz=$CW}&=70TQ%Ap)@)bRRJH}NgY4l6FGob0hoj3ZqrGLBS2LJ#7VvP6A@jGEV zrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{MlXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2j zz@EJNy4JcnsmH>#9yV|tu)QCbfN@GboTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K! zx+2@_VU`<80Dk}g0JtUQ_kgw|UlrZ1w3OLninhg899IWiHSQF)6CO*=S~cr};y(v> zv2;2;pwsU*Kl{5>-Pd-WJD-Mf_5c1v)&u(eZWEb+&N$O;jGnI#tDwi0o8qgX&iD6A z`P0Ap(X<~qq|A538PMkDm1}01U5fRyR~8?8z-hl&N+$Xfyf1zU`sYXh000000NCgk Xr}ijk!ZS_E00000NkvXXu0mjfHyzMd delta 450 zcmV;z0X_c51Kb0UB!8nxL_t(|obB3CZo?o9fMHhcCfxr>+@%j_2my8&lz`L!dzc8R zD1(H=rp^HX00000;9LCc?!dSZLMnUjH}+(P$qC4ZK4)`g!#{d~Bal_tD)cVJL4 z(B{V7st`iH{^*A$SiJ+VjdYn?y!@TrJD?bAi$fpTdkb>BhJPO78G#r8006MT{y3nB zs_uEC4EE`LEyI9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348 zHz>7vn{)4gN#`swI;-jE9^U)&mzO6`fC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSG zHe&(+04w!p+<)|JLHLu`OEs4%jmykL^Os)w*%LMYhn}CdDfyqygpYJ;tZ;dD%xoam zOgcI_*ok?~<}elYp9+_H+SwSIeIOE6lEwvT8)RmCqz-Ov<(b!}BIY-q>K2NcH080- z+z;sNiT;^In`rk1V)=vARm*5yFEwJ~y6$&hGOk!9(mSD4Uwhu@yQLGbX#I%=X0fhd}2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1j3HwN(HB delta 953 zcmV;q14jIn1I`DKBYy*xNklue%d*ll4SS4%$-o`Zubc`qS15SAP$)fORz5%duvSr9DIK zVXfw1IQp&ukZ->Ul6cuCoorhdQ5~V9ae7VRpNJGO^AD{3mP+;Q_`BjlKie~pKT|rXv!sSkId&7 z5@4+~Mp_cF$`(E(YN2DOycWeTO3=;m8}d!UBTVIjAb*#YqY(!FaY2R9FnEx3cR9IN z$aSrDc%8AJMAsYLVwDCChdTx zX`0VP{Wf$@J;xJ{)Q$MT*27gl|9N=qE%Wi_-Kea2(lS`WW8u# zSKZZDN`vZL$FXw)YKIa1Thc z#7&sG=Ung4%)TR*#J!cNQ;@MA%d4mB9`f&00000NkvXXu0mjfE#}?L diff --git a/test-integration/snapshots/decodeMessage/nanox.48.png b/test-integration/snapshots/decodeMessage/nanox.48.png index d420a8095ad96ec20fc49ce4c6087c1554578e21..69ea1320dab303f5042d49f9f7c140fc45e3aa31 100644 GIT binary patch delta 374 zcmV-+0g3*|1CaxeB!5^*L_t(|obB6P5`r)cM$ziHlkR^>-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g0X(5q5uE@ delta 430 zcmV;f0a5;u1IPoAB!7=dL_t(|obA|cl7k=&fMK??H{t$A;x7GRht2RAkX1w9=U1x{ zA^~)C4gdfExZIEY6GBK%d+(2f-urG_`bdppYx1D7yM7}>(%CI5Ku z<7xR@Y2uPIF78gw&f+M`#2PV4{O@S@`4p&iSzJ9y_sNBg_n)mYjz#gOT>=t0?!`YKrEr8pl28IjZ zwx~f`0CV@VK@I*`zZ2W}o6g?+cQo7C?|~ZJj~d*M8Ych%000000000000000006M* Y4UtDn^vK|WUH||907*qoM6N<$f@h4I4gMboXiN$!6n?$V1$2;m_P*oJidw@Oi9 zo6+ItH~;_u0002^Pn1$hDXXL4*(bKoLf_XAoadSEE61sYpE%QPpGzs{dDcbOKG%}k zq${bFl~!#XYKOMcW9uxmRvF&sB^RSIYTYrbzp}zFk*dR@ve9p=v zs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T?+DTv>m+UEJ6O_@<;cnjsE0%TummHWY`$~wdMSb?8)fa!tDCz00sMD>t`@M_)q?WX zP)d?YnyH&c2}a5>TPNXdF=p(1UVj9=otLShGf4Lm0Dl1ZTB35mJ_qjnN3@6wa5$1E zl;hFYb!hzAQiOh8qSt*^-k~?I>$zL(w2-xYtJ*5T@5@tZ(_Z*U4OQyQ#NbHa4q(^I zOdoF5&;;B)22OzT8Dz#FwVyTz5gx;(2zU7~*?zRg)Fe#RN2xQk@Kz12CHnF-jvX7= zo09MV`!Fb!nLrI)3?={o0000000000000000000G$RF`e7^6}S4xIo1002ovPDHLk FV1kL_t(|ob8)ia>F1DMQNuy@&1?Oz4XJ=43&hq81Zm&&sVHq zA)YeVNlJteLI@#*Oy^5npXZrh9>*~;moO;Gs}pnlOb>dI z=hciDT>x@5Xt!A4rT#{}rxn6YsWxIiLfe(Xxb4AjAR0yfj@25BjtA02V7%Zt{(5#PAb6`+R{tYdlF$bSh8#+-=e9^liQ1GKR!m4H>u zAxa0;LR-o@U0gauN)azvYPU|GhL8>&#s0Dck zzBW}7tbeN0Wsuu}R0YUZiPUizs8&vJ3lez{!=u^Z<=Q5M9mH_`FU?)EgHDK1Zo>xP zLcbb2tl#)oJ>caLhar9jxeb;g5)c_Kk%oBC3BPp9Ah*vWDm|F53HzPLy8SFQbkIEQ zaV!5Nxt8#RSvq0t>6Q>eh`}2ln?LI*XhVWe!c7x+o?!U~tQ9PW!Yybq&)b4<9`Q?= zcOHPvyZ+)~1JEN_l6lQ@-F?zbcX>%jAoOazW24E z1P~M_v=jgU004lu^QE3!Yx1$y`o>@e9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^ zd(Cb`soWFVKUw>B>%H`CuHC4taz-8qTWcz?UVdW9fqw!N^?#4z<=Slmu7VB4jcFK6 zMol_Zuh`|3$<8B}5Uj4}T1xyApmOAh<+#O3P zqp#M*AWwV}FOnL@$??|1Z{3H7XGs;nVrLR+{Gh%*?1VCyiMsVxzg;64wVtDRjjq9| z$Md+8H7hyyBldDanD0d^UNRn&jce}z0r8dzUYrf;I7W?1Oan*fE5nsBpFk0 zX4fdx&f1Ddx_a!fZ4~jENj)LOH=?G8!O;HT|b0000004(PpExN9&{+e@M6^urSstKkpWDUY=3Fk+;a7e$~$vM9+=9JQZ zqg}l$*cnGBV`H3irc;SsZMT_XPy3pUhZWvocD)I((_^{5le z+>(}W6Sg=2(w)s9OM#xb9ZL;yLT7qCHf7>BCAYD43sR_C#)DX7Z(rUJ%p(O0ZJ}@(G{{RBEAmG6@08@{M0001X za#ie(C8gex)fwc2^Kb~Ab3m%$Wx1@#-WX?vjUWfY=6A*Sy(d&41jGNyAyP=<^Wn~ z5p27z789j|QlTwXo!)%a36LUgLF$Aq-bf=IDq4Nba1u_28C2JOPYOMM(o1@J)TLlc z!cRgUbvuswpOu8|I0ezbNL~lj(9JyAf@&a$0sz35vho3DQeE4h!CX&4$i04CPeF?I znPhpS`+pJ#dwWxFV{cJ9E$`*ca66H%06D6UT0~R7TDicjov?$LJ(?mMMb-Ouya%zu zkp8!F%}zQe2D*(IfCBx2EOYPpcRkqcEe=Ec%ySzv0CxRPmqjfMd7uejx@D5v_YsvI z*q;gg&coe)ks3N_o;uw!|B~EAc*2xU7-zZ#09pXR^T8+QFM0|(lgN|s8s4W_egNAw z%Xwf6+RXd5AUm&kW#*Fy;P9?5ylenGnk86==N}V`K@#4~L276$&@2G}0G!S*Y1H&` TkXTP-00000NkvXXu0mjfU#VJz diff --git a/test-integration/snapshots/decodeMessage/nanox.54.png b/test-integration/snapshots/decodeMessage/nanox.54.png index 9fbc447c72dd7395262af62672e5d0b2156bb7ad..8a50d7e0aefb037bc7c64b380116e1dd54e9430f 100644 GIT binary patch delta 320 zcmV-G0l)sr0^0(RB!41FL_t(|obB3S4uc>JhGDksCf@%@y~}=>5Qb5q|>!0059uY84ek%M53z zmLi7n@@_znYWby_5^oo0beC& z>}ft`Z#*9W006_9s@{2wiI}r+6EQQZzB_MzhMvw9J}H#8eOvFW{zcYdPL^ssD)B1AdX1up%a)8->!_$PMM)m=Z8BYy#oNkly0cklD7 zWow`|A;C>4000000001RgNTSo^eEo&9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd& zfTqhq-sqQf3D6L0&{Idhl=2llfIG%jC~5Rdx-+2Z!kstzxqqd*7 zJEj|3s;(5#-k!WQ6On_4_i!_nbT4Mdd}t{`UTjO(ZtHQY*S2MR8tU7~N`C+V006ip=J$ZMBVQHWuC$cdV~V!LRvcFcTs7_#wi6yp&000LjJ)qO?Hb48jRNdEho;#n0a`pfIMAifP{caPPfX+D6ZH%6;538WZmYd?Mq0aaB zOZn5k`q8u>Ii$>Y#2L`$=9Oz^nO%zYvsV@$d%$VGSSL#Q6TB~e3Hs+q00000007wN Y7pL|pXTmd0$^ZZW07*qoM6N<$g7s<8F8}}l delta 282 zcmV+#0p)P_FbGGjOqzw!B=3C$ zTZABHWG&-t8vpM89sWCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs| zfi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~Ct!$m#nA8S?SeMj(0@g|$3YAL01~Wt4j9f^ zeUBdzH}3cQH)lV^)bCSnZ<&>VP8!#*SbS%9;D3e}FZ=EOS#)$4OTaK4wbpK*m)2CZ z8u~UQAejUtTW$^5r}d$wU!VLXVzv^fS_1$qNHvses-a6$4NayR%9BYzG6_hw+!~-7 g3IG5A0KCKxIuqTc{*GFmj{pDw07*qoM6N<$f+>`LjsO4v diff --git a/test-integration/snapshots/decodeMessage/nanox.56.png b/test-integration/snapshots/decodeMessage/nanox.56.png index 5a9a698b9ef0161df686d9e7c0eefcda79141330..cbdc0a716eee4c7c2031ff28ccd9dba647040582 100644 GIT binary patch delta 363 zcmV-x0hIpW1BL^TB!5jwL_t(|obB3MZo)7Sh2d$%PQ3pmc`tpKHgbIdCsmm_(f_>w z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_g00N_+gDW&Mo1Jxt@UEP6i_qVzOx5?`|=WGysDErB`V>?-=5&3H_a4Fk z007vGUhO&ai(~sByVk_L)j(Et)~TEJ*oaMB+Bfre3yo~VsuWoDHMMe(dZT0ttP>kQsENsLUV?O{EV*nO=_92{FF977%<}u0f wn)A)=e4S5Sbnb!Z0{{R300000006)o{~f`i2>4P8yZ`_I07*qoM6N<$g29;GV*mgE diff --git a/test-integration/snapshots/decodeMessage/nanox.57.png b/test-integration/snapshots/decodeMessage/nanox.57.png index 0f9f76e5234f7bad79c8181475231c36c5d43b8d..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqjn1eF7jB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVe)= z^Hg7i5K7zbWNrW~^191Tmo4g$9K3Rf+(4>?J^5LpHG3z7kbgeQmNs&=<_O8NWoOpx z0C%blG&X$6rg=#KGGk6$cn?@}1iAB+6JIhn0Qoph95X#7by>Zt8S0(Gk_G?(006fV z|3`MImlt1C<-k&)G^U}&@qu!|v#C^RdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZa zD+Ins1FW=b*?(K6C`t+HWY12)AppsaGM(9zRI#RX+_i*N3oBpu2(iM`X~tg3xB=G> zZ<dds_Kt=KYqDWkt)#Y zO~ts`&kR20000mljYCaJM+Aouva)YS$`JOe;s`o8LsvZI;}T8HC0)C z$7-xha*^{4`qTG4H5{w<(iYgT>Y|*BJnsm48GB_zOVpCi``9-CuXlao)&QJJ7JjT6 zTG>bIzZ))cz5@4}zL$_0e8o+8QuWb=JKh5ZI8}ZD000000000000000fNl8$uwK}u UJl>+D01E&B07*qoM6N<$f_E(Wq5uE@ diff --git a/test-integration/snapshots/decodeMessage/nanox.58.png b/test-integration/snapshots/decodeMessage/nanox.58.png deleted file mode 100644 index 0966b381351991acb6db707ea26cd67901f222f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|x z_cxB@49N+IQy){D2E7Sbvmd9sxKhIV?g1Q>Bw8--szL~H{jnD%sGb41P3$TBL)Bf06aqY)i?5hj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l> z#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$7mX5B({c1hsLi6cIgF9V`_KvK_+?NF zwbl@OUrDKH41NXG=K(hFy-L--+6W&0W<)sMJi| v4gH5M*mJ&wjlYcP{(}qv0000006;fiMI<1a&S$^_00000NkvXXu0mjfOmnI0 diff --git a/test-integration/snapshots/decodeMessage/nanox.61.png b/test-integration/snapshots/decodeMessage/nanox.61.png deleted file mode 100644 index a1a25bcc339c3581703c9debb8715b97f6567df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0ctg`YUnZJ$di=Xuse*FM*h+N3L~m6cX)9cqWR(qro^wB_#nMi^ze z`dNRri?Qu<_w%rgMO%m3p}zFk*dR@ve9p=vs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T z?+DTv>m+UEJ6O_@<;cnjsE0&W$n+ao4Wl0{C9w^7O>gXg7Vc+N|H*NshdU#M#?c;C*f@|X6$@ke+0dq zm#LvMNcR!|0Qg#>a=<np(bsio{Mk~3eqEy1eOBI~H?QltTkN!u zwS24ED#7o|Q)$y)_(%;^>deI8NZ<}&*UL;FZq?8P+&uF{jhRF%YhdyU<8thF#8vT5@o0TTKc6VSEE`LEyI z9T4RgX)5cxF?oGa84u%MrKzu@+yTuCR?348Hz>7vn{)4gN#`swI;-jE9^U)&mzO6` zfC-zIp!9gmYf`y?8M%Bo=QZcw7RFdv?weSGHe&(+04w!p-1KZg_>Fgi3Mp}QA&#zt5);Lp?s#N1poj500000M|%T5o`r)6 S;rT`Y0000ue%d*ll4SS z4%$-o`Zubc`qS15R}Zs*bu`+`v1W~>Jwxqbt>$1j`mOstfDJGS}$d3Ds55mAs(8KhCOln<8jdCpF zy&N`j4tos4ym`x^gyahNKuTur`@81KD_~{Ynx<*);7hBJNgH}hgee_XZs%3vcVJD3 zd#Vc>Gn!MaP4BGLv5hkaQXuL`+Mo^_(%=h8lSpZ39<^yt4ykN%sKjed!s$gx_chFBHsco2*d zs3@NGb45i+ewbBzq%}loid^mTo1d%Wgr)U3xgeMzGg=;FA0{l;tvEzEGkKfn4J(H%B}Ev6Pmx0^|Y94j`~E-GsGGseD-7-H%O| zplUeDG*RU#-T_uS?Jdhff69L*?SQ6fn$Jc3HgrpUj#)0m$RKUM54g0AmS2jigJ};p zA*OXSxG@)0h0MJe>7YVg*L^TDrs+#e-T`*LGcn_W(~Vx}67LK(y7}-;_=f(5CKX)4 z*xi*q%2%RQS}*u$h&l+e8GK~DXkS;|)mKV`>RidtJW9<9n897Vk=(Uhd~(-;lI2Po z4dRpd4lwe9a1R_3QuVg?4OVauNVCLEn7Zd&@6XJ>BbLOym8nyZu^;4)eL*d0-1MYz w3}u^kl}VK>YS!8;5rRIMc0kiKP1C%@59`24J0h0pp8x;=07*qoM6N<$f-Gs>$^ZZW diff --git a/test-integration/snapshots/decodeMessage/nanox.64.png b/test-integration/snapshots/decodeMessage/nanox.64.png deleted file mode 100644 index d420a8095ad96ec20fc49ce4c6087c1554578e21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{U`ba4!+nDh2V?xbb~o`%G2 zo6R5obAP1wH?jTf2gwPc&i9{(uNG8dEGgjwYT9w9|BtYfhhO#k{^onX^P+!w^d@D0 zTCiz%Yh%H?kckYqK=_68xo`2qFeE%u3 zqBJtb*7N(x*4`gAYbHOinZNMIqnlBU*~fQVK8gD~A*k4J|1F&rvNB$N@|vGBd+H4D zbxcqpzi%b$(}?FO^R^yXW$g#pn0Wp7dIGR^HPzE`ivctpD3p z{_haX%uq5lyrt_AW%17Yo06~cFY)CI@2crP%&0PEEqGMNw|M&Xd6HYz-yW)&WX_uU zZ|h#|xOwK2j_)WvKdG{qb+?c5Ue%e;dwte5=x@oob??uEnonF6MR^Pj{kOL3c3baw zyItY$^q%8JF%7(K_iySRkX!uzjab5q!#5{K>Neb7%GSpHVA~4ED2C$in;m)oMeG;8 v{d4xYdwNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN diff --git a/test-integration/snapshots/decodeMessage/nanox.67.png b/test-integration/snapshots/decodeMessage/nanox.67.png deleted file mode 100644 index e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD diff --git a/test-integration/snapshots/decodeMessage/nanox.68.png b/test-integration/snapshots/decodeMessage/nanox.68.png deleted file mode 100644 index 56eff5485e79dd0f3771be67cb4e65b087e49838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W diff --git a/test-integration/snapshots/decodeMessage/nanox.69.png b/test-integration/snapshots/decodeMessage/nanox.69.png deleted file mode 100644 index 8a50d7e0aefb037bc7c64b380116e1dd54e9430f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) diff --git a/test-integration/snapshots/decodeMessage/nanox.70.png b/test-integration/snapshots/decodeMessage/nanox.70.png deleted file mode 100644 index 0966b381351991acb6db707ea26cd67901f222f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohEm^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= diff --git a/test-integration/snapshots/decodeMessage/nanox.72.png b/test-integration/snapshots/decodeMessage/nanox.72.png deleted file mode 100644 index a7a8740548d2608032872a36bbf128b89b69847d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m&pvDyFt diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.04.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.04.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..109df4905cfd28cdbdc0bc27ee13772656b0e551 100644 GIT binary patch delta 345 zcmV-f0jB=j1M~urB!4?eL_t(|ob8#x5`-WKhHGbg{|D~S9z4VtAf*Yb|95E2F=hNk zk(LDj0KlxQ-UbL9`&nMMLQA~?cmfqbsu_Z>w*fZN?5F3tonoYN@&MLpGTGoOR*pTN zJNn9&^~$IY6x9Rhq8@tLe!LA(X)^W6nWCx~)dLz5b?OsQ1%F_->}NX?J+VPolw&*$ zvCn{EkhPC`6K;k5M*TK{1A%D>xd%=LH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@ zF`AEL$II?P(zWOsu1EolabaEus!5j`dy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`z zgkXx) r1_9Eg$c8#IdN#C3oOCGw0CeXE`1QRa9@ih900000NkvXXu0mjf3J|2^ delta 449 zcmV;y0Y3ip0^0+SB!8kwL_t(|ob8y)j>8}fMU!gs{~tVyc7Z0!_?2r1LMq*(E-E0l z!3Kkug%Cmrxy1YT-*0aOzXc^1n?N&9}Lz$I0t+q%?EL>-Y8XW-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ# zVf|9TXNvbNnGAg}ANpV>*6OdtkHv#U_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&J zAaxR?D-fP4!+#a_vepvUe`@NIMcLaQVq)L4|8e;R3>*=p-~*~0mAmntqT@_`E#n z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f;lR*7$BtytN(Xs%rRyB zMUj>T006+OtlkC)9Q#>bw?a$30eAuxK&lynueSj<((I?_x}9RAa`FJyX)@X1D^`v@ zpF8@>mi5Z04iwb`=%OBa*?znYP-!yt$(f?67}WzB5_RemQGW$sx9n#-5qIjB#OJ2dYVz8hev?Yemv5v0l*Yi*5AEnr{`8YAi9+A{D_p zfrMo1tl>fTTvL#u({<R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf!qdpK diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.07.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.07.png index f26fb07e66f049995a83eb93b725e472eda6d16c..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;160^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1m49f`|YB delta 329 zcmV-P0k;0a0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m9 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.12.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.12.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-c1IhxBB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`A4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY!;J*O? diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.14.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.14.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-Q1IhxBB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m&pvDyFt diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.15.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.15.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?V1FQm&BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f+A9aegFUf delta 450 zcmV;z0X_b#0^0+SBYy#+NklzC*V`yy zq%Xc#0txuAb#tv95n(+E>@%0!`-2O?8&3n=bV)%@lAkV8a(`q^-^YvC?9RH`J76R; z9FSed(d#aB2_FpBJ~#(_Bh3eKuihwCZr=gN>0OyaoG=2(hynXP=w&VGN!P5vBj^?$ zcVYcfz-Nm0Etw2`FdzD0Cf4e&#gD~q$?1fDu2Tj_OjLz*MDm2l116uA7WzPwEuDW1q>V!q~HUp9F@EAo}%MSeJ$f1 zP^h}!rV{|)w;A9+7ICi}x0jfKVsW@|(-WRO@gGkuMO=s}msVUGRPGnPfjc9kM-I@+^vNSuGe%rj%v_gR sI9=jD7CYlR?y1czml8qV!Z diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.16.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.16.png index 076a821e03587e469d3c6332c0b098513e95630d..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-!0?GoAB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1k}=f^Gl+ diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.17.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.17.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}E1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX`ufEm* delta 387 zcmV-}0et?d1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lAcvAX~O diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.18.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.18.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..076a821e03587e469d3c6332c0b098513e95630d 100644 GIT binary patch delta 295 zcmV+?0oeZA1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1lzSf`9-3 delta 449 zcmV;y0Y3i10^0+SB!8kwL_t(|ob8y)j>8}fMU!gs{~tVyc7Z0!_?2r1LMq*(E-E0l z!3Kkug%Cmrxy1YT-*0aOzXc^1n?N&9}Lz$I0t+q%?EL>-Y8XW-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ# zVf|9TXNvbNnGAg}ANpV>*6OdtkHv#U_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&J zAaxR?D-fP4!+#a_vepvUe`@NIMcLaQVq)L4|8e;R3>*=p-~*~0mAmntqT@_`E#n#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`A1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf`5DO7 diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.20.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.20.png index f26fb07e66f049995a83eb93b725e472eda6d16c..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?z0;~d%BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$ffNM6y$b!0001BO#X>W>Y)CHtmFUy002ovPDHLkV1ntouGatn diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.21.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.21.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}E1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX`ufEm* delta 387 zcmV-}0et?d1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lAcvAX~O diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.22.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.22.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..076a821e03587e469d3c6332c0b098513e95630d 100644 GIT binary patch delta 295 zcmV+?0oeZA1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1lzSf`9-3 delta 449 zcmV;y0Y3i10^0+SB!8kwL_t(|ob8y)j>8}fMU!gs{~tVyc7Z0!_?2r1LMq*(E-E0l z!3Kkug%Cmrxy1YT-*0aOzXc^1n?N&9}Lz$I0t+q%?EL>-Y8XW-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ# zVf|9TXNvbNnGAg}ANpV>*6OdtkHv#U_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&J zAaxR?D-fP4!+#a_vepvUe`@NIMcLaQVq)L4|8e;R3>*=p-~*~0mAmntqT@_`E#n#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`A4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY!;J*O? diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.24.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.24.png index 076a821e03587e469d3c6332c0b098513e95630d..109df4905cfd28cdbdc0bc27ee13772656b0e551 100644 GIT binary patch delta 345 zcmV-f0jB=K0`vlqB!4?eL_t(|ob8#x5`-WKhHGbg{|D~S9z4VtAf*Yb|95E2F=hNk zk(LDj0KlxQ-UbL9`&nMMLQA~?cmfqbsu_Z>w*fZN?5F3tonoYN@&MLpGTGoOR*pTN zJNn9&^~$IY6x9Rhq8@tLe!LA(X)^W6nWCx~)dLz5b?OsQ1%F_->}NX?J+VPolw&*$ zvCn{EkhPC`6K;k5M*TK{1A%D>xd%=LH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@ zF`AEL$II?P(zWOsu1EolabaEus!5j`dy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`z zgkXx) r1_9Eg$c8#IdN#C3oOCGw0CeXE`1QRa9@ih900000NkvXXu0mjf=J=$_ delta 295 zcmV+?0oeZZ0>T22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1mxsf|vjR diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.25.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.25.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}E1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTX`ufEm* delta 387 zcmV-}0et?d1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1lAcvAX~O diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.26.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.26.png deleted file mode 100644 index 72de546cdf7565cc31ee9d5206ca15b692f74217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 475 zcmV<10VMv3P)zC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.27.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.27.png deleted file mode 100644 index 8b56d1dac90a9e754792a30512db3633f78fdf45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.31.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.31.png deleted file mode 100644 index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.33.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.33.png deleted file mode 100644 index 109df4905cfd28cdbdc0bc27ee13772656b0e551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL{LP)lR*7$BtytN(Xs%rRyBMUj>T006+OtlkC)9Q#>bw?a$30eAux zK&lynueSj<((I?_x}9RAa`FJyX)@X1D^`v@pF8@>mi5Z04iwb`=%OBa*?znYP-!yt z$(f?67}WzB5_RemQ3YVP>}NX?J+VPolw&*$vCn{EkhPC`6K;k5M*TK{1A%D>xd%=L zH1MST>`P%rAD!P$*mdcxItpU@#c7ivpTN}@F`AEL$II?P(zWOsu1EolabaEus!5j` zdy{x;Mba#>UeN1{ZS=~TZxxejEHTp}6~Q`zgkE9( diff --git a/test-integration/snapshots/signTransactionCommandsDH/nanos.34.png b/test-integration/snapshots/signTransactionCommandsDH/nanos.34.png deleted file mode 100644 index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m&pvDyFt diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.04.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.04.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?V1FQm&BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f+A9aegFUf delta 450 zcmV;z0X_b#0^0+SBYy#+NklzC*V`yy zq%Xc#0txuAb#tv95n(+E>@%0!`-2O?8&3n=bV)%@lAkV8a(`q^-^YvC?9RH`J76R; z9FSed(d#aB2_FpBJ~#(_Bh3eKuihwCZr=gN>0OyaoG=2(hynXP=w&VGN!P5vBj^?$ zcVYcfz-Nm0Etw2`FdzD0Cf4e&#gD~q$?1fDu2Tj_OjLz*MDm2l116uA7WzPwEuDW1q>V!q~HUp9F@EAo}%MSeJ$f1 zP^h}!rV{|)w;A9+7ICi}x0jfKVsW@|(-WRO@gGkuMO=s}msVUGRPGnPfjc9kM-I@+^vNSuGe%rj%v_gR sI9=jD7CYlR?y1czml8qV!Z diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.05.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.05.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAn1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf!qdpK diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.06.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.06.png index f26fb07e66f049995a83eb93b725e472eda6d16c..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;160^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#Fxe4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1m49f`|YB delta 329 zcmV-P0k;0a0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m9 diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.09.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.09.png index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-c1IhxBB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`A4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY!;J*O? diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.10.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.10.png index 076a821e03587e469d3c6332c0b098513e95630d..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}o0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYoV7~bP delta 295 zcmV+?0oeYk1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1jzNf=>Vd diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.11.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.11.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..076a821e03587e469d3c6332c0b098513e95630d 100644 GIT binary patch delta 295 zcmV+?0oeYY1HuB3B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1jJrfT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mUFvC;ql diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.12.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.12.png index 72de546cdf7565cc31ee9d5206ca15b692f74217..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq;21IhxBB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`A8}fMU!gs{~tVyc7Z0!_?2r1LMq*(E-E0l z!3Kkug%Cmrxy1YT-*0aOzXc^1n?N&9}Lz$I0t+q%?EL>-Y8XW-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ# zVf|9TXNvbNnGAg}ANpV>*6OdtkHv#U_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&J zAaxR?D-fP4!+#a_vepvUe`@NIMcLaQVq)L4|8e;R3>*=p-~*~0mAmntqT@_`E#n%WC!*&VWj+DqG2G_5kj{hjnKd!wy(H zv@5YX1^MvxA*2WRhOXN1kro2#-%f+1P=63r!b1I_zz6ez4`xyl){B=uzqDcFTXt<# zW{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n##e=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=(q4Sq;BwC~}&wKdU1ONa4000c;1J2Bg UJpcju5&!@I07*qoM6N<$g7)Erf&c&j diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.15.png deleted file mode 100644 index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)U_yvZgr!v1Mc zA-k&7*C+@k%7_KqF2&~r6rjAMcw#QCPMQS~yWH>76d;g;uQw4~$u*E8cIiDGn{Yjs z2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7 zNN&>!CbzC*V`yyq%Xc#0txuAb#tv95n(+E>@%0!`-2O? z8&3n=bV)%@lAkV8a%4^4$BWqP&brwn?N&9}Lz$I0t+q%?EL>-Y8XW z-vP(zU716iFapVl0sB7aWi9DR*Q~%J=oTJ#Vf|9TXNvbNnGAg}ANpV>*6OdtkHv#U z_v-fe8rMd8WAt4Rmn`H258c*f&cz&N>dm&JAaxR?D-fP4!xi?j))Lo$YU+|j+1npt zV&Am?arp%d91*181F9UAyYZf)<4k=m;~h|VNoo&yl0~onu$J^pn*(EXJAB||98frR zy(9suJB_J0bC}z`2f6DU|GjT RH+TR5002ovPDHLkV1jUy(n|mU diff --git a/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png b/test-integration/snapshots/signTransactionCommandsDHAndCountedSections/nanos.17.png deleted file mode 100644 index a0f9b734c15529d0d47fac9e4f36a34aeee88c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehI#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m&pvDyFt diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.07.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.07.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4u1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1gHWyjcJM delta 429 zcmV;e0aE^{1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfo&?Wi diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.08.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.08.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D+1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f)# BrojLJ delta 399 zcmV;A0dW5Q0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1jF=ypI3? diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.09.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.09.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.10.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.10.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f(f;PX8-^I delta 299 zcmV+`0o4Ai0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mo)g9QKp diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.12.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfkJ!kS diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.13.png index f26fb07e66f049995a83eb93b725e472eda6d16c..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1hrwf};Qc delta 329 zcmV-P0k;0S0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m<+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f(dP?>i_@% delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.18.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.18.png index 06140342c291c111e9c068e5607f9a041bc53592..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?710@DMKB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf|1Z=~ delta 287 zcmV+)0pR}A1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1g~tf|CFM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.19.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7$0@DMKB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjf-<#LO delta 350 zcmV-k0ipiW1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf8qU;U diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.21.png index ecf1f5058ac2679bd73a34a5317002137bcec097..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4)1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1g88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfSA*Ae diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.22.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6Dx1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1oSs BrnUe8 delta 387 zcmV-}0et@c0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1ggivJL)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfz1+`t diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.24.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDGg1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2rxx0ssI2 delta 399 zcmV;A0dW4s0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1g3QyjB1J diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.25.png index 119eb22fc2111523375a127e32bc66252e40bfbb..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?&0;~d%BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f=0K3pa1{> delta 356 zcmV-q0h|7;0{#M!BYy!!Nkl~5 z_mR}4sknMts1y7IM4$OXd1E_8NiIW3P1Xr;v2z88AC&_s34cRAHnFa%@t&K4CcJ@5 z;vg8y^HnV&#v^mww!eQ1u%Cb+E|gg)dM%Uv1w#_z^Gn;u8~Ir2n!RF9DOALS z8K#6ETh5P}t6=zw3#I8oJXX(kkL|T!}=s%{H;}> zbQ!9OVMJ838eMuT94&TsD4Ndjxh~t#*a3;kFvWILDi_~Q?!HlH*lr6QPXLIKTa44Q ze9f+m_6`6^8mAyKW}((a(?G>_)3g8p0001hdb|Lenh4sAjtpP`0000Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.27.png index fadc23a161829705363042782e217be337d6b7af..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAt0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2hCG0RR91 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.28.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.28.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0X1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfBkIWS diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.29.png index f26fb07e66f049995a83eb93b725e472eda6d16c..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ delta 350 zcmV-k0iph?1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeL_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1iV#f-V36 delta 366 zcmV-!0g?W~0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ<+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f(Egu=>Px# delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfN0`)l delta 329 zcmV-P0k;0r1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfSv=Qv delta 400 zcmV;B0dM}(1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY^f4>U= diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.34.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.34.png index 076a821e03587e469d3c6332c0b098513e95630d..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-!0?GoAB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1k}=f^Gl+ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.35.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW5L0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1i@Yyovw- delta 350 zcmV-k0iph>1Nj1wB!56jL_t(|ob8#*4ul{KMR79z{|CF6S&$e)3l?di;yo)N<#mA~ zB?JHf0Kgr;L*EieiJDfFT}AZo><+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f(Q?&>Hq)$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.36.png index 9e446398db817809613c38824b4bcf70fdbecf9f..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6ER1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1h=D Brt1Iz delta 441 zcmV;q0Y?7*0@DMKB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfbYj$$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.37.png index ecf1f5058ac2679bd73a34a5317002137bcec097..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%71HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfct6*O diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.38.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.38.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDGV1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g1MlA_W%F@ delta 387 zcmV-}0et?&0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1mh-vDE+o diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.39.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?B1FQm&BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f(+_{Y5)KL delta 430 zcmV;f0a5;}0>=Z8BYy#oNkl4OCf|1LQe7j`g&R+*cMcF=-|eDRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>D zUiwiPDB#tOXV=<{85YUFKGWU37hD7{oKA2vBo3WL9w91gtbdx`>WjG<&hfNYKqfl^ zuVdz5+gncV-OZ17o0!7|_;1l(i(1&{Kh1&?VgN zhxJDRuPME@WHXGxei(zDSl&ODn~AH6{;JDGp}uM^{o!d5Q&u;b8Y4=~R)~17JLiuq zk|A+_GLu|Wdw z?Nfb8I^5jXV7MU`fYpGP&Q7Ygj#|x3L;7gJn5s=OR|31AT!T zvxD7dKuvfB=DBndt;BgbLHyhqpf_K0*_tIf?Vgl?Y$pk1(fhOuJhwU>EFpvtLJ0Zh Y4I0*J1N|t5rT_o{07*qoM6N<$f}`foX8-^I diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.40.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Wx1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ delta 399 zcmV;A0dW3_1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1l;Fyc+-j diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.41.png index 119eb22fc2111523375a127e32bc66252e40bfbb..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBR0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f$m BroaFI diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.42.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0V0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYt5Wf5X delta 298 zcmV+_0oDGh1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2$MH0{{R3 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.44.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..06140342c291c111e9c068e5607f9a041bc53592 100644 GIT binary patch delta 287 zcmV+)0pR|>1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gHAf`0%2 delta 421 zcmV;W0b2gL0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf-pRaWek@2fLVAkQhP>7HOg4Ju4yQb%7!!1ONa4z#YFs z-x5fPnpTuuMfC6N4z!So9+TT1en;5$+=k|)ncxDt16cL5Z+WI0KC?T(ajxjNx|hbQ z3tC?Mbw|Pw8RytH4bWIb2Bp`M@~lDrYQte2(9Qf6lW)n+%_>;QJL^bCMi^Kx0KpGF3L+-3sk z?hbttWM!$pl1`NBMA&E}mhS=9(flc|1=@{{I)rJQvNRH!S&D-Oa-KIiC1G!A*=NUD nSzdhgbNM9sCNKd20PtS^PBYO2T-U;*00000NkvXXu0mjfAkd{f delta 341 zcmV-b0jmD_0{H@vEq`GXgCGcoZMXja5AMVEp*y2cB#Xp+pWE#=Bw-SgECc`m0HZRs zc7X6(w$Ibt&W~ZC0eFWY1>e>Vh~#o2%BNYV4xN4t+SNx4?&938{(>6d5bZr}x`Eyv&L{7WLxZGlhQ@RkfaLrJ zM$Hal{P-hC!oF3R`x?Y0IAxKa=J=4u!BG!()tWccc zip5ix%gV*yQcjCm0AgOtejn05Ia+P8;_}BaZbu*flX?Ini)P_@un5a)99}2o#TAru n62Vs37h$t42mk;80ANi1iA(CB{)VjN00000NkvXXu0mjf{=us! diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.46.png index b42d7b08612d408956ed509afd4d555a52e6af02..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?6b1JeVLB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjftbWuW delta 366 zcmV-!0g?XG1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQOV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.47.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.47.png index d1eac39e479dd964eb87fa54d56480cf7e8bf195..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?6)1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfRm#_N delta 398 zcmV;90dfA*1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`ADlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1nv7ygUE^ delta 400 zcmV;B0dM}P1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYC-@f4h diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.50.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.50.png index 06140342c291c111e9c068e5607f9a041bc53592..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6E20{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1gon BrqKWZ delta 287 zcmV+)0pR}r0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1iueg1rC$ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.51.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.51.png index f6f4aeaaab9a2b581ed0187deea1319daa46cafc..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%j0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq<+Y$i5`>N9)3sI_S}Z%q?zCXx&v7Cvu}B(8$Po; zz;UkVxVo3ds|#9P_YvgX^<4^ z8zB-F>YIW&m=ES)CY-Qa(e(CjoRio~Hrk%ysEk6Z9#Ko|_m~#dn^vi(T*<(Tm?Tb_ z#WhPY&NP{Z?dnU6t-Q2fsboD@yrG_;9+JEfxvZC^$x>!#0M%wU+w1^#vGfdpRr7LL zsh>s$e%xjP=vVFzeG+74slSqx>O|ORBbM(0*3tYauLatTjyi;CoU$|$npuj226CP^ wIVE9lY1wDTSy^6u^>g_o`6e&{008h_{!TN|1YFm`qW}N^07*qoM6N<$f+7m2{Qv*} diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.52.png index 9e446398db817809613c38824b4bcf70fdbecf9f..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG~1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g7;E`EC2ui delta 441 zcmV;q0Y?7C0@DMKB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf5;4?U diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.53.png index ecf1f5058ac2679bd73a34a5317002137bcec097..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?N1FQm&BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f*Hbsb^rhX delta 442 zcmV;r0Y(0-0@DMKBYy#!Nklg#+@%U;7x;tc=oK>^E1JF6Nje+>EEq_KYcp=IZix?hgqudoA zv$+5mi9EQ`7!juy5=~5JuSnB!obCV|v@OGphG&C{lFON+ZSyWcNUcKUTgCls1O#9= zr?!xkcT{j>gm%~L-ZGZ^s6v}{PA}ifFyd@n@qa}-LycF2U**;L(d3KXrj7X$w!83J|EnG3+o-!*#Fe7VsaKJZgszIa z_7--#?7o{ZyY`^jsp(x9#KKDu-wPVVy^ZQv(2Yj4_&Ng}0LNZiP#cwxM5m(rRlxnH zR4!qj8W`puAul16u1{yT?Q{+*LE^>b-bTeJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQHq)$ delta 387 zcmV-}0et?61D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1jUHv6=t? diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.55.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAv1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAn+a delta 429 zcmV;e0aE^`1IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfoLA3d diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.56.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0B1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1h#+ymbHo diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.57.png index 119eb22fc2111523375a127e32bc66252e40bfbb..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~P0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZxAip&L delta 355 zcmV-p0i6D-1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f;^ BrosRK diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.58.png deleted file mode 100644 index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmV-D0mA-?P)o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqVa58knKDV$z*K=54@xO2E-~CO0P1Eizk0h8r+&_7B?t8 z!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5*$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7& zlW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!KM*|Fggn8C!L6x$Gai-G`1^@s60Dv1# XNEwN9-65}=00000NkvXXu0mjfL*s=o diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.60.png deleted file mode 100644 index 8b56d1dac90a9e754792a30512db3633f78fdf45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png b/test-integration/snapshots/signTransactionNewfundsreq/nanos.63.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIbxAOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@A zJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q%#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;B zs!Ni?(7OlxVrKMbaSZ@~<4!y^c9kXV=)Is~Dzuy#ZKXUbwOXnmrGvT8_QIAtYb?Ea zKwVeCZ82H{$c-wbB7*hO1B%?|p;Ty2PPEsG%KifY0000000{F2mty+PHKymQ00000 LNkvXXu0mjf&gZG0 delta 462 zcmV;<0WtoF1Ly;gB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000qI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1h{7$*TYW diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.08.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.08.png index 581549e868bdb86416b96fba88d84e02da20f718..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKsa1HA)~B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1lpu&b|Nu delta 429 zcmV;e0aE_G1IGi9B!7-cL_t(|obA|cZo?o9fMKuNO}PJ&dYAo(#1O`gVXU3m`~0d> zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjfw;IoA diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.09.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.09.png index 8be056788bad1cdf3dbbc255c0ea4d4cd3b05775..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 100644 GIT binary patch delta 350 zcmV-k0ipiH1o#4wBYy!uNkl%f6Omo!C6`Oz1eFBPDD~5ifHwp?2Lmy&|iGLUX008g;mPtn%FTANf zcl>O--^jwYyX~7atvb~jnt*T+$NF_jJYo1c*LlY3H4rEw~gN=S4Fn!eVG((?&7-K#F^;=wDsqxlDS^uebwdQ)NU&cAKTK#j^f(olnQ)Lp6ckwIbV8Jd( w%Yq5e`V*Gvf*QkmYQYr%000000Kkj<0oI$$+84`~{r~^~07*qoM6N<$f;8)(!~g&Q delta 556 zcmV+{0@MBY0>lK6BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a000093Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j delta 419 zcmV;U0bKt60=)x}B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1fv2&h!8P diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..4bd0b0eaa958bff396380e4c9b2122d3b82439bb 100644 GIT binary patch delta 388 zcmV-~0ek-V0-pnrB!6Z}L_t(|obB0La>F1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmdNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjf{WqYU diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.12.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.12.png index 48f9d3149732977f189da4d5d8e028526afed243..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 436 zcmV;l0Zab=0?q@FB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000u delta 355 zcmV-p0i6EM1O5V#B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jqLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1hk8!|wn9 delta 931 zcmV;U16=&62e}83B!7TOL_t(|ob8)ilH4!|MM)|<@&1?Oz2rkRE(O6AAY{8coR6t) zwFKw^HrPW{6h%=KMNt&D^9%oco@f8{IF5i0yO7qCb?6(#4p`2mJ!X89(2pH$!0Om= z#&4{+32M-=lrF;aXF_6fR#qQ;W%9+H0HcWL&x%>caWIvv#eXY-nL7$$o%@N28i8<8 zJ2qZi$Egh%yR@rk{~_g| zkm51M7|;lYpa3b?0Ix=Ip_wIGw-{bg`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e! z*P;aDAsWrYihsOAXcoT5b}`C@xAs2*?8o{A150>y2zmoq>C3v1uO;!Os3?l!vv5~K z`x{44=JXbA9>h2!uMlH3bS_tGvHS%3ypTm}K@tGCuN2Y4&I|iI7A&>Sq#QI+4k?Z} zJ)xpo+~m_S4H!ux+E%`s~WQfzy!{rgFpGdfi22 zz5!WUT@zS;0GBIgACHwH`ryt2y{ofJP8f?=U>G2N5gyCvOgAlf&m&Ptn-PoV?TJ&& z!cFJn3$d@ScPHK)58s7xr2-3Ddyq*u7NuKKSgF;2l3M*IiLCzF5mSQ)+U1}Bq6yc2 znzm2TOn(gvBx4>BsH_@$+S3KQ>Rf645K;K~Q}~PB;4i%!+UT*-Etsx=i_%hYB&zFH7D%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F z+kd_Rn#EHO3YOEu3k16SUk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f;4C2Y5)KL delta 472 zcmV;}0Vn?01M&lqB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f}j`K*8l(j delta 500 zcmVF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.17.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.17.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 353 zcmV-n0iOP;2m1n$BYy!xNklI)5 zXw;AaM!=>7000000D!mnTU~+k%&e4i&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>w zpylGO%FKNJ=^si^9RXOT)y);Vf6^TRyI3oRexo-FN=!q8cz?!13;+NCfMZTMGkD{j z^?HZHjh#nE_J4H+nhqDY^@o>wJ#1#B(0>}5TKk=y3+hbOzdne#BVbV2$PQB7j`niS zx)~;J1E_cHK|xbc&e>0d`W^fwO$7h|fXV8uxBkDZo;2@_yAbP`vhEGiia{4*-mm+e ztxZtBtlP@luUhUl#xy=0_2KTa!@~H6{2c+Omb8lYr`Iw#Z#=iKwJ+Gvqu?Tsd`<<92o!r0000004DnaBxTXN6Z+k)00000NkvXXu0mjfp53Rb delta 916 zcmV;F18e;I0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00008}fKv8BiJ7NDzVlVR%30b^K2n3tn^VOg< zrREi!);RzG00000e2bsm6&M#nh_Ai(8*B1}$p(<2mn=4ey#|QUm*FlJn(({30)vu3 zn~S?uAp|-9v=2?NIs&jwt(#ly{?6_QNMda<^cQ<~L5|x{C4bJ?hyefq01)~&w|2L| zdR;MXME01V|Lv~84aNMA_dbLWcf$FT88*x#@)6L;zQx!5g?ebrhQ=O!_3qu(Sxe~@ zbbQ<+r43M=!H=Y_0pyD6#2PE7qw9pY2q!1Ya{vGUpws+cMJUO=BpZm~nk2Wy2E3np zsr^uH-Nh$*Z+|1!lc!AbnzbCKJd|m>c2_N4yf$9*xSQGHwNsJk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g5q}LI{*Lx diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.19.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.19.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;En1DgbpB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$g0}J5F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNe$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVOV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.21.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.21.png index 8e0d2a3791e60716616ea03122987f407606d08e..bb9b991d2f96be203b28e3f09c19b4eddae45773 100644 GIT binary patch delta 365 zcmV-z0h0dv0*C{UB!5pyL_t(|obB3S5`rKQhGA;DiT6L!-lZQl%nmA|nafA-^P?#g za~45aObGx000000|KbsS0_T}o{yt4p;F)|wvH^VPJ;i3wYk(YmAMVvc3D4*gIH?G< zT-;TenIC`ZKP9O40EF4P%oQ*Hq}v0ESSyBpruP(-cns~t7=IHn0000WK)^g8bxAOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@A zJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q%#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;B zs!Ni?(7OlxVrKMbaSZ@~<4!y^c9kXV=)Is~Dzuy#ZKXUbwOXnmrGvT8_QIAtYb?Ea zKwVeCZ82H{$c-wbB7*hO1B%?|p;Ty2PPEsG%KifY0000000{F2mty+PHKymQ00000 LNkvXXu0mjf=#r_i delta 352 zcmV-m0iXVe1N#DyB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a00001)lNmP5Bk~c@$iBtb{e^mH%!bAuef93$)mcmF z6m)#tBc%;coWYNzt^wqV>cko=r=#nHxCkdF%X0t#0HD+SUqvX%y(Alm;hH43#Rj~e zd#U|UZr#NvdVg;t)|019@|v|Ar#zHtyLMMCUc5G5^SGPY;jiowd#1t9=n3aD39gK_lZM$*)2K000000Du?$1JC+1 Ul(dvc2LJ#707*qoM6N<$g1uzV5C8xG diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png index 865f0bcdabb24dd323cbc9201ff39708dea0134e..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKr@1ib^0B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1j9w&XWKD delta 513 zcmV+c0{;EI1DgbpB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjf`h1|9 delta 514 zcmV+d0{#8?0-OYpB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNe93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jS7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI2cH9wBYy#ANklPxx-I7@sMJ$3a(Gz1A0e~;h5cqu4wg<@flDLV;NQZU97o4n#1go&EC3>@In`>zFZlA>+Fo)E^vFics;%AbF}MfTeV|T4= z@%HkR>-K9qdf7c-)S3SB1|Nl*cVX`YE9tqi9VL^JJ&l{3*s_%Wh~3G~0q{P(0RR91 j000000000006+>qJOeFe500F=00000NkvXXu0mjf@-n+c delta 955 zcmV;s14R6v1JDPMBYy*zNklqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1l~~$%Oy_ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.27.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.27.png index 581549e868bdb86416b96fba88d84e02da20f718..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 436 zcmV;l0ZabJ1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjf)0fYA diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png index 8be056788bad1cdf3dbbc255c0ea4d4cd3b05775..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-m1gQs*BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g4hD%H2?qr delta 419 zcmV;U0bKsr1HA)~B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1mod&d&e< diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 450 zcmV;z0X_cs0^9?TB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f>!w2KL7v# delta 349 zcmV-j0iyog1NZ`vB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfP;a2x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.31.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.31.png index 48f9d3149732977f189da4d5d8e028526afed243..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqkl0+j=hB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j0 z0xcJJRqh_=pY^E()e(SgX5Cz|`yaX^poz6&=nK77(7`e^iGOEo!~g&Q00bV?l9M<7 zXT9EGnAmw_WPf&7U~0Iz?O(j~`(byl2kWO{YL@R@T+q){>+6%qI|5Eh8`+ao)6tQc z>CP~D8$i8lpOkb8GPAf4T6gf5G!*~_5UDxz6U>h7(yU0u}Q*aW27HzXPXMa^Z# zl5)`GILl_OUS-yw4xd1Z^n=+qhqKo*vy|uJ##AF9X(}QbW}Yu~-c%892sFU(zZjR= zAoEm{HygUv%;vhXkAN8H{zteRl#*FD@1OAT761SM000005A+K~@Xu(A+~M#50000< KMNUMnLSTZvp{pSP delta 932 zcmV;V16%xt1Gxu~BYy*cNkl+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X00008}fKv8BiJ7NDzVlVR%30b^K2n3tn^VOg< zrREi!);RzG00000e2bsm6&M#nh_Ai(8*B1}$p(<2mn=4ey#|QUm*FlJn(({30)vu3 zn~S?uAp|-9v=2?NIs&jwt(#ly{?6_QNMda<^cQ<~L5|x{C4bJ?hyefq01)~&w|2L| zdR;MXME01V|Lv~84aNMA_dbLWcf$FT88*x#@)6L;zQx!5g?ebrhQ=O!_3qu(Sxe~@ zbbQ<+r43M=!H=Y_0pyD6#2PE7qw9pY2q!1Ya{vGUpws+cMJUO=BpZm~nk2Wy2E3np zsr^uH-Nh$*Z+|1!lc!AbnzbCKJd|m>c2_N4yf$9*xSQGHwNsJ$1M&lqB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O00008}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000OUo@_5g(0y37?X|D@XkidZX#ex~;nlz0s7#D5qQF#rGnAV9!8AmsVo z%$O^D+?F7Vhq|dxXZq z`#Vic4;cIsJEDsrs0Vqly7_-48z2w*7se~9Q^qtv%S#OY*4h%C%G(mBt7FrJD`K&W zYpP3JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000|%Q*hnUzb{nib+{KS?b?v;+ zAJd)7#jq9EmbA|Ft8=TVSf$Ro@&$IS!O_RZCm&p2&cHQ8F|;Zqd49B_iT**N{s$`#9%#QupTi0 p0000000000000000001RPk#&Tc`e{iGe7_U002ovPDHLkV1np<<30cY diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.38.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.38.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKsv1HA)~B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1m+F&eH$@ delta 450 zcmV;z0X_b`1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$g7Ea(1poj5 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.39.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.39.png index a7a8740548d2608032872a36bbf128b89b69847d..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 100644 GIT binary patch delta 349 zcmV-j0iynu1NZ`vB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjf@0FmF delta 378 zcmV-=0fqkf0+j=hB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVn+a diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.40.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.40.png index ada3168c73944065f395a93add9a391f4f56b259..48f9d3149732977f189da4d5d8e028526afed243 100644 GIT binary patch delta 355 zcmV-p0i6DZ1O5V#B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j(yq7*iimcoQsH*tD|2;tj zC~_{780I(t000000Pq%HyDM;?yVqkg+gOvokZgb$`be=E^ctW>KZbi)DB*i|1#W5r zEf;rH?jGl#^{E8a5rA!G-CVKzAG#x;iM3+r3%ym)!7?<7XMb$O000001Rm6qlQ;fn zz20G%*m-1Re|A@3YPh-WU%d4DVRx?w>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)?}X!pFoQAgV{HSv)3}Sl;`5cR3jj1Dk2(Yo-cLYR1t3oG{Eq`7?;{0 z^Hh^J8@kra=DM;qU+e002ov JPDHLkV1gFzt6%^C diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.41.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.41.png index ff8a2bbd23908360c9469609a3dfb1da10aa9566..4bd0b0eaa958bff396380e4c9b2122d3b82439bb 100644 GIT binary patch delta 388 zcmV-~0ek+#1D^wsB!6Z}L_t(|obB0La>F1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmd1H%K5B!7xYL_t(|obB6Nj>8}fKv8BiJ7NDzVlVR%30b^K2n3tn^VOg< zrREi!);RzG00000e2bsm6&M#nh_Ai(8*B1}$p(<2mn=4ey#|QUm*FlJn(({30)vu3 zn~S?uAp|-9v=2?NIs&jwt(#ly{?6_QNMda<^cQ<~L5|x{C4bJ?hyefq01)~&w|2L| zdR;MXME01V|Lv~84aNMA_dbLWcf$FT88*x#@)6L;zQx!5g?ebrhQ=O!_3qu(Sxe~@ zbbQ<+r43M=!H=Y_0pyD6#2PE7qw9pY2q!1Ya{vGUpws+cMJUO=BpZm~nk2Wy2E3np zsr^uH-Nh$*Z+|1!lc!AbnzbCKJd|m>c2_N4yf$9*xSQGHwNsJMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ00008}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000z&ttUa(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8 zV3Nks;rt$zoO7Lj^xF_bodK|o(J+rV{8QW+(D*u{>rdjn1%D-8L*InY*oXlD0001N zV16I)%xieF=Q@rf=UlpzPi6H+wVpP$)U`As`LR^49kDJ3qn2f-OU+n>DFBjYT8svu zJU@B(L`6>D(S+7jCcD|r0cadr$Dn&rek{GThL~f?1Xg{ex!fZ zg?1VBvX|~JyKTO7`y6M-jl3n*E?sw1p3Ys2>>TwwQGDq8RpfFl=qBzms$)V|gy`<= zOIQQosI@JUQSFiF{u!h=-FQy9Y7ssIV;LIu7M9ZJbh>P(uqOp|7cO@hRcfWOi%ZAJ zF5YDkzQmrLqwFdyun*YGs(nDRO-T;X000000000!lV3xdwRWwS^vnPN002ovPDHLk FV1gR3_7MO8 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png index aa4cc2ae93cd274977fc604eea56ff141e05fd2d..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!g1K0zQB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f+G9lU;qFB delta 462 zcmV;<0WtpA1Ly;gB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI8pCjbBd diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.45.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.45.png index 997c215666cfd3520e8883ff295febd7b1f18045..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 451 zcmV;!0X+WD2iyaYBYy#-NklF_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?VxqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1k~h$-)2t diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.46.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.46.png index 581549e868bdb86416b96fba88d84e02da20f718..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqj@1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVhtNNdN!< delta 429 zcmV;e0aE^z1IGi9B!7-cL_t(|obA|cZo?o9fMKuNO}PJ&dYAo(#1O`gVXU3m`~0d> zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjfbP~@% diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.47.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.47.png index 8be056788bad1cdf3dbbc255c0ea4d4cd3b05775..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 353 zcmV-n0iOQE1p5MzBYy!xNklI)5 zXw;AaM!=>7000000D!mnTU~+k%&e4i&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>w zpylGO%FKNJ=^si^9RXOT)y);Vf6^TRyI3oRexo-FN=!q8cz?!13;+NCfMZTMGkD{j z^?HZHjh#nE_J4H+nhqDY^@o>wJ#1#B(0>}5TKk=y3+hbOzdne#BVbV2$PQB7j`niS zx)~;J1E_cHK|xbc&e>0d`W^fwO$7h|fXV8uxBkDZo;2@_yAbP`vhEGiia{4*-mm+e ztxZtBtlP@luUhUl#xy=0_2KTa!@~H6{2c+Omb8lYr`Iw#Z#=iKwJ+Gvqu?Tsd`<<92o!r0000004DnaBxTXN6Z+k)00000NkvXXu0mjfzxb!a delta 556 zcmV+{0@MBb0>lK6BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a00008}fKv8BiJ7NDzVlVR%30b^K2n3tn^VOg< zrREi!);RzG00000e2bsm6&M#nh_Ai(8*B1}$p(<2mn=4ey#|QUm*FlJn(({30)vu3 zn~S?uAp|-9v=2?NIs&jwt(#ly{?6_QNMda<^cQ<~L5|x{C4bJ?hyefq01)~&w|2L| zdR;MXME01V|Lv~84aNMA_dbLWcf$FT88*x#@)6L;zQx!5g?ebrhQ=O!_3qu(Sxe~@ zbbQ<+r43M=!H=Y_0pyD6#2PE7qw9pY2q!1Ya{vGUpws+cMJUO=BpZm~nk2Wy2E3np zsr^uH-Nh$*Z+|1!lc!AbnzbCKJd|m>c2_N4yf$9*xSQGHwNsJkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1lV`&bj~q diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.49.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.49.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;E@0-FSoB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjf`5&N~ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.50.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.50.png index 48f9d3149732977f189da4d5d8e028526afed243..c2bb4e70b0121619d4f70d19c75de6027dbd03ec 100644 GIT binary patch delta 514 zcmV+d0{#8|0-OYpB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNe93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j2Z#fZBYy!;NklOUo@_5g(0y37?X|D@XkidZX#ex~;nlz0s7#D5qQF#rGnAV9!8AmsVo z%$O^D+?F7Vhq|dxXZq z`#Vic4;cIsJEDsrs0Vqly7_-48z2w*7se~9Q^qtv%S#OY*4h%C%G(mBt7FrJD`K&W zYpP3+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000>004g7hw;Dby4pW;&VdH}K}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnKU*T@$oV)hAlGzAdUw>tgu5x=v;D9# zQ9O%gDsz!7C}7JoV75hdpu3)os;N9RXS2I`1#D#G%$ZLAcc-a2D^nQmVKNd>dtcYA zTxg5)T8-eGL4UG)c0;q5B(ZnPO-u$+H@aQVlE*UgvG~C71UYvLI>D}K%k&@GGRFY` zZ*l$9mDkU0c@kd`+2!NZGsV&PdMcmhmyRNwjHA%5j(T?H`MLWt{{J^avAzf*gk=TamfO`a_uqThnn&p5-{;Tye2 zbO!OfK0MLs{d+b>|4xkl{m8-n$ie-{0RR91000000000000000fWPS*hys&^{aXx9 P00000NkvXXu0mjfLc;5L diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png index ac035785ab270750e21ac3a27b538062c3c97cd3..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKr$1ib^0B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1iUp&V~R0 delta 500 zcmVF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfJz1d4 delta 436 zcmV;l0Zab)0?q@FB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000(~L}hq*&sVk8 zk{L>2+T#EK00000z`wY8H(;EZo!cP<$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSO zT-;TeSvvl-KT1%&0^p|B%@w=uSnc@Y z&x;9u_e1~y09_cP@m55!l3FXT^0vhHH7Y;Xk6O#Obyvc}w0ixbwV-{#&YJaHw*v(000000OOu6P0vlwDIz@p0000uT delta 916 zcmV;F18e;L0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000F1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmdk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f}_6U7XSbN diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.57.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.57.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 436 zcmV;l0Zabe1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)3@{761SM diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.58.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.58.png index a7a8740548d2608032872a36bbf128b89b69847d..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-11E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00000fhdk2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h8JwJ-nx diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.59.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.59.png index 8e0d2a3791e60716616ea03122987f407606d08e..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!z0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$fIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000sX diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png index ff8a2bbd23908360c9469609a3dfb1da10aa9566..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 450 zcmV;z0X_c11Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$g8P8l3jhEB delta 425 zcmV;a0apIp1H%K5B!7xYL_t(|obB6Nj>8}fKv8BiJ7NDzVlVR%30b^K2n3tn^VOg< zrREi!);RzG00000e2bsm6&M#nh_Ai(8*B1}$p(<2mn=4ey#|QUm*FlJn(({30)vu3 zn~S?uAp|-9v=2?NIs&jwt(#ly{?6_QNMda<^cQ<~L5|x{C4bJ?hyefq01)~&w|2L| zdR;MXME01V|Lv~84aNMA_dbLWcf$FT88*x#@)6L;zQx!5g?ebrhQ=O!_3qu(Sxe~@ zbbQ<+r43M=!H=Y_0pyD6#2PE7qw9pY2q!1Ya{vGUpws+cMJUO=BpZm~nk2Wy2E3np zsr^uH-Nh$*Z+|1!lc!AbnzbCKJd|m>c2_N4yf$9*xSQGHwNsJ$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZz&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000P)QhvVk@??pAs4)9)YoqX|}50G4T8<`ysi z!|n>m#@gc02lk$V4jw}{@s5oc0001BoV*=v#Sc#NU*F~4zE8ff!g-;HxK|q8K)rjD z^?jn!>JWSHopa$(_!~Zk48p9W1+zS@_b_F;kkYD6F0!NQmqwXbJ=&SSCxcL=vqeR> z)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3l{^P>i*xQhmfi=P4rr#lb8KkM3Wzu1 zGEpv)-Wb#IJ-rDFbyk&?o0v`j008K1^0c=}Hx^iU=JT7@|1M}K;#lr$dcu=JbFIwP z7Rx-t{JKEMzek=47P(~a_BV~%_-sfsG z)Jljd^m8126oEP)qI1 z@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B=3|U6_~$r|Sqy(W@i$5LKc}urJDNRo zzC!t|CupnhsBY*?U8R5Z%xcnvVuhf})E>P)ZNdtajAuvRw1M(vSK-7>cKy-e@~!~dnc*1X(DX5tu1iCsoU=p`KGaQ%CF6ieI+&L10a1$afM-&5eOVXsZz+tZP17{{^O6c^+7ccUrKBdC43Vygq3y`b z4d`7^jEUxyq-yMw{FbX9Y!{1QzQu13O-3pb*ivc?wZvnUE<7Y^qhlz&6ZvmRteZWv z&;OnyA>6}KE{J7X8I3UPTMH-zhQSl0yUWRSA=glIK*Hf{B&DI_s)qKJ6{7DRbWy0L zUwEP~ngePte$hB9Nn1&$NQa0Uxn~bh-kjvPRuT$IRipe?;h8;v248mBvQJRVnNbMJ zEDTCiyQ#uchZWAYMPa-uL!l!xSpS+z%6MUYd9OdRYDdK&zPn!F?k2*`Od_Qb51vSp-c3c)oA9!2k{O3&6-qj z1w(gN^p|!C7D=txzlx|6K&!ETQ7hQiR5#mFX{#&mP zN{R;YMQjHsc|mp$3<;^~?fVAHxd)`#;wB8;bFKH!%)Zl?#C{DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.66.png deleted file mode 100644 index 8be056788bad1cdf3dbbc255c0ea4d4cd3b05775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.68.png deleted file mode 100644 index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.72.png deleted file mode 100644 index ac035785ab270750e21ac3a27b538062c3c97cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.75.png deleted file mode 100644 index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m&pvDyFt diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.08.png b/test-integration/snapshots/signTransactionRecordobt/nanos.08.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..fd1722a748129222182e9b6f6681a9d30ad48194 100644 GIT binary patch delta 406 zcmV;H0crln1F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f;xe? A{r~^~ delta 429 zcmV;e0aE_31IGi9B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfslU%_ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.09.png b/test-integration/snapshots/signTransactionRecordobt/nanos.09.png index fd1722a748129222182e9b6f6681a9d30ad48194..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4X1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1o0Lyg~o~ delta 406 zcmV;H0crlJ1F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f(q@p A-~a#s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.10.png b/test-integration/snapshots/signTransactionRecordobt/nanos.10.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6D+1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f)# BrojLJ delta 399 zcmV;A0dW5Q0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1jF=ypI3? diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.11.png b/test-integration/snapshots/signTransactionRecordobt/nanos.11.png index 119eb22fc2111523375a127e32bc66252e40bfbb..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%o0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1g#9 Brqloc diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.12.png b/test-integration/snapshots/signTransactionRecordobt/nanos.12.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG!0>uK5B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g4~UR6#xJL delta 290 zcmV+-0p0$^0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=~v3jil delta 299 zcmV+`0o4AY0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mFrg8Kjf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.14.png b/test-integration/snapshots/signTransactionRecordobt/nanos.14.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<0N~Gg0owtf_$7FZu>b%7 M07*qoM6N<$f*KEcegFUf diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.15.png b/test-integration/snapshots/signTransactionRecordobt/nanos.15.png index c0236f40e1f682660f35f989589a0948eac7ab57..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 273 zcmV+s0q*{m0;~d%B!BZsL_t(|ob8s&4ul{KMV(~){||QIEKHb&hgPV(JSWBl!fk5{ zWmy0K;H`WNH1||mKF0rhsn2I({x8fTYr7i^{rRt zEIN7Ht%JP3dTva~b!Za@-yH4VCkIyCJJlQZfQix8^s5fy%J3%v0000000000n)3rv XL$K1sL@ew8015yANkvXXu0mjf)q;XJ delta 250 zcmV>IKx?Z!d4t{v0o_4`;|{wx&Xp3z;2xKXf?gj#f{Wx~dm2s6^0i@ccaI z?w&0H?sAm&f$LI87xe;GM*_r1fLOd5kT2_Qq;N&p4z? z=%1u3utfh<h($ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.16.png b/test-integration/snapshots/signTransactionRecordobt/nanos.16.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?W{1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQu%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfkJ!kS diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.17.png b/test-integration/snapshots/signTransactionRecordobt/nanos.17.png index f26fb07e66f049995a83eb93b725e472eda6d16c..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBM0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAB+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYBPrl#) delta 398 zcmV;90dfAS1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1hrwf};Qc delta 329 zcmV-P0k;0S0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f?Lj>=l}o! delta 400 zcmV;B0dM~00;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZK5WgG% diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.22.png b/test-integration/snapshots/signTransactionRecordobt/nanos.22.png index 06140342c291c111e9c068e5607f9a041bc53592..f7df1097c3796613f32224cd0d0c406596909b83 100644 GIT binary patch delta 344 zcmV-e0jK`D0`mfpB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1iJSg0cVr diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.23.png b/test-integration/snapshots/signTransactionRecordobt/nanos.23.png index 959a70fad0ab7c7609d498e1816667519a983348..9e446398db817809613c38824b4bcf70fdbecf9f 100644 GIT binary patch delta 441 zcmV;q0Y?7i0@DMKB!8MoL_t(|ob8#*vcn(MNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfNm0~$ delta 330 zcmV-Q0k!_q1LXpcB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f{>`65dZ)H diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.24.png b/test-integration/snapshots/signTransactionRecordobt/nanos.24.png index f7df1097c3796613f32224cd0d0c406596909b83..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?7w0@DMKB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjf)kW97 delta 344 zcmV-e0jK`c1M>oqB!4f`n8`8)U5g2mLP09IHJ7 z(xnsxK@jZ9!&>3@LzKU*wNo>)c4|*@HOUC-aOJ##Mt-vzwK0kCGS(+jJTEoK=SnGC zeqB9QzUJ%v30d733E&GtGrpa&iNreR05bF$j|A{yPv_=7mw&|$I>jRa(|5m0makX9 zJl!;x1^TAHKM9OIfCej~CvxCPE3iU0^!zD?pR;apGPdE0000#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf8qU;U diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.26.png b/test-integration/snapshots/signTransactionRecordobt/nanos.26.png index ecf1f5058ac2679bd73a34a5317002137bcec097..fd1722a748129222182e9b6f6681a9d30ad48194 100644 GIT binary patch delta 406 zcmV;H0crlz1F!>-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f=!9J A3IG5A delta 441 zcmV;q0Y?6?1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfW0Kc= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.27.png b/test-integration/snapshots/signTransactionRecordobt/nanos.27.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4F1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1n0$yf6R& delta 387 zcmV-}0et?c1D*qrB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1l5?vAO^N diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.28.png b/test-integration/snapshots/signTransactionRecordobt/nanos.28.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6EF1O5V#B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1hO3 Brr!Vn delta 429 zcmV;e0aE_{0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjfD%j7s diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.29.png b/test-integration/snapshots/signTransactionRecordobt/nanos.29.png index fd1722a748129222182e9b6f6681a9d30ad48194..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$v1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f+-NV A^8f$< diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.30.png b/test-integration/snapshots/signTransactionRecordobt/nanos.30.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDGg1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2rxx0ssI2 delta 399 zcmV;A0dW4s0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1g3QyjB1J diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.31.png b/test-integration/snapshots/signTransactionRecordobt/nanos.31.png index 119eb22fc2111523375a127e32bc66252e40bfbb..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&p?0-^$tBYyztNklNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%;vh~5 z_mR}4sknMts1y7IM4$OXd1E_8NiIW3P1Xr;v2z88AC&_s34cRAHnFa%@t&K4CcJ@5 z;vg8y^HnV&#v^mww!eQ1u%Cb+E|gg)dM%Uv1w#_z^Gn;u8~Ir2n!RF9DOALS z8K#6ETh5P}t6=zw3#I8oJXX(kkL|T!}=s%{H;}> zbQ!9OVMJ838eMuT94&TsD4Ndjxh~t#*a3;kFvWILDi_~Q?!HlH*lr6QPXLIKTa44Q ze9f+m_6`6^8mAyKW}((a(?G>_)3g8p0001hdb|Lenh4sAjtpP`0000A5& diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.32.png b/test-integration/snapshots/signTransactionRecordobt/nanos.32.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1np# BcBTLT delta 291 zcmV+;0o?wU0=)u|BYyz|Nklo5G z5s6>5+zS4+s|IDIYP4sJ`9|5IBt8QgQ7O$DPOS#O6$M1hqkk-iv_tJxhc#qpfInXg zP(I_vLKR%Z>+H6)p*kvqJklR~!HU0001>#2;?$iBbo!yWRi*002ovPDHLkV1i~8f2sfg diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.33.png b/test-integration/snapshots/signTransactionRecordobt/nanos.33.png index fadc23a161829705363042782e217be337d6b7af..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?90;~d%BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f(f;PX8-^I delta 299 zcmV+`0o4Ai0>uK5BYy!5Nkls!0001h8%{_WiF4f{ubTh>002ovPDHLkV1mo)g9QKp diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.34.png b/test-integration/snapshots/signTransactionRecordobt/nanos.34.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 367 zcmV-#0g(Qp0*M2VBYy!(^bU?%60&Z9AMXSKk5XD9G9=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#^0FK>f$*kQC|_)VNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=N*m`mR diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.35.png b/test-integration/snapshots/signTransactionRecordobt/nanos.35.png index c0236f40e1f682660f35f989589a0948eac7ab57..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 399 zcmV;A0dW470;mI!BYy#JNkl?3;%h4x(i>&+7iw%Yd zq%8z?KE5Sc0qXqX{l%q5LRV|(Y618pu6hh#y(hqL{b3(ZSAWc4F#wab_1@P9_2KEN z0NMH85hT}kcWSuE{6q$b0V}|tA=h#m83?!jNtq`sJ(oxO(n&BKj0O_}$W#o@u>?

Ag|UPjXORE@Lw1*fByo2u*XuHWCqoC>di zTK1K-0P^3M0&2;rg1G$Vsfet!rO>%e`corTn3#h6ARI(FfN*TMU_D*D5VxYho4bwZ tX;enPzov=1Q0}ZLpfjcb!!YLO3*+@TcC{fEO#lD@00>D%PDHLkV1iT7!bkuB delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1m@v Bc9H-9 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.36.png b/test-integration/snapshots/signTransactionRecordobt/nanos.36.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0X1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjfBkIWS diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.37.png b/test-integration/snapshots/signTransactionRecordobt/nanos.37.png index f26fb07e66f049995a83eb93b725e472eda6d16c..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM~K0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZpP`@w$ delta 350 zcmV-k0iph?1Nj1wB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeL_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1iV#f-V36 delta 366 zcmV-!0g?W~0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f>}DA<^TWy delta 398 zcmV;90dfB20;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfN0`)l delta 329 zcmV-P0k;0r1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfSv=Qv delta 400 zcmV;B0dM}(1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY^f4>U= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.42.png b/test-integration/snapshots/signTransactionRecordobt/nanos.42.png index 076a821e03587e469d3c6332c0b098513e95630d..577884a258cc1c78a00f5365c26f6fe3313a59d9 100644 GIT binary patch delta 303 zcmV+~0nq-!0?GoAB!3Y}L_t(|ob8#*5`!QNMPsM_{|CF!1v8Z4WvDa{de1m6A`qHu zKvE(A0095Wrr`5D692oLQ!!uGNd;KL(F5Mv6Ck2?PDJ~*_u5pS21~ey2B|$8CzERN zTse==6)ox0(s#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`AT22B!3A>L_t(|ob8!G5`!QNMWIvfe_$7O!3?H>q(DUi^WV78D2P7^ zN^}kY001z@d0bnvR5k?vLUpIc?Rd`~fQ%0XWAZ^dOT7|}=W*@my#bM8uv4RwAH^xl zYW5h;fJ&??Tghwo0Pettb!QmE4p=<2E3rBS`SA52qzCwhu7BF_kro2#-%f+1P=63r z!b1I_zz6ez4`xyl){B=uzqDcFTXt<#W{RXewB}z&zCNGg@*RZ?m`ENeY&k{`S-n## ze=1D?hXspX<8*S#Q)y`FC1z_ez6T{?QOgyCwa4x7!F#e4=( tq4Sq;BwC~}&mepF*#rOp0000C<^#^mi#-4V`4RvC002ovPDHLkV1k}=f^Gl+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.43.png b/test-integration/snapshots/signTransactionRecordobt/nanos.43.png index 959a70fad0ab7c7609d498e1816667519a983348..fd1722a748129222182e9b6f6681a9d30ad48194 100644 GIT binary patch delta 406 zcmV;H0crl_0^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f@pxb A8vp?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$f@6xF?f?J) diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.44.png b/test-integration/snapshots/signTransactionRecordobt/nanos.44.png index 9e446398db817809613c38824b4bcf70fdbecf9f..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4)1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1gMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjfY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1h=D Brt1Iz delta 441 zcmV;q0Y?7*0@DMKB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjf=s4HO diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.46.png b/test-integration/snapshots/signTransactionRecordobt/nanos.46.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$d1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqvH$=8 delta 387 zcmV-}0et?w0-ghqB!6W|L_t(|ob8#*62l+}MNOyu{}1k>T_km!fCN<3*n1Y87I_$m zWkNy#0000Q@Ohh81(UcWyVX$d!Oh{Lm7{C6*YPFYeH3a8SLEs9l}+*I9k$o8w14hD zcLkv;so_Z{3aJT=o|ELf$tE+x{%KGlyQ76d;g;uQw4~$u*E8cIiDGn{Yjs2|YnO$9xPr0kH{Fp=^>i#x%c|O<3^BLY;Rl z=kzzu(jfcIF{BjPcS4m|WZxCkU_7Y7NN&>!CbBUTFS)Quwavq{$08f!%=3P2~0)=61G zxaFvxhTdV~7{YI#)_JNw6(>L#7Um=o>#R|5RiKu;gjASHtZo61(4xn2s~0jWGSe$b hKiKy_008j!d;v2P9-$~1dj9|b002ovPDHLkV1m7ZvCRMg diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.47.png b/test-integration/snapshots/signTransactionRecordobt/nanos.47.png index 16287b7a0e1f103432c3b8da6542f7ac9601cc11..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG;1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g6Ud=AOHXW delta 429 zcmV;e0aE_O0>=Z8B!7-cL_t(|ob8y)uEQVO1Ln_Tt77>BL z*gS$uA%qY@PVxWxdRiga7F2fV;KqDb04={A!tRh^;C>kg0PpBp@Bih>o0GSF37RkUq)7`xnTm&ziPH;0M4xL3FAu4OEnt$Hvi@6!j@w8V!COZPK z>c?!qi@rn*l6y}+1AdVjgYj3rP`q5e0zQX#W(?y4W1x%}(AGhewIq_zQ-NF1CEV_Z z^+y4(DZRF2GmOE07=xWy-anR`iK~kKs>?;8zG^Q0;b{?5RyUa%BTCFxhljxA%qY@2>Ip> X8rEt9{V0Z}00000NkvXXu0mjf%S6wA diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.48.png b/test-integration/snapshots/signTransactionRecordobt/nanos.48.png index fd1722a748129222182e9b6f6681a9d30ad48194..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&o}1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=$5PF#a delta 407 zcmV;I0cifB0kAD}C^b&6#H-YP0Ld0N{J=KOMi+uLjC6upR~lc)W*H5*Vrq z{ca=#(d!mHCv~Ab7*$w_C6k`S%R7Pp!0i#VTPH6^jDtT>1An3ho+yug-QSn%_$oH4 zMJalvuu&GBI{e%KXyrn;| zli!O3&C1>jVxnuK&Osv?aRC&)HbonC8l0R-%w~YRFiY5|Vw_sg<2wz7Z=>?{hiz0s z^H=Elk6RciKg)?&2RLK44ggv2{)6rx1VP}=2QI!K#t`Q-b!Gqn002ovPDHLkV1obe BxY+;z diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.49.png b/test-integration/snapshots/signTransactionRecordobt/nanos.49.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..c0236f40e1f682660f35f989589a0948eac7ab57 100644 GIT binary patch delta 251 zcmVoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1m`r Bc9Q@A delta 400 zcmV;B0dM}60;vO#BYy#KNkl3vqVAx$;Eeeu}p+BxkIl7wiRB> z;qHE!x~02i3vDGI$eD!M4YkE-Y?@OCdT*Aw-}HyJ($UDNMSo=m^jU92kO9O-W)37; z2rCw(6e$ze7(oC~FHc2=IgohZVQb;^Mpb;Ij*@&&hKUOW{w%z@LbLCz`8Y*7r#(zKV?6 zZ79BiF3>tZ)_>&jb%c!WK5`7`yq#dG{faTr)$*9Z@6^ykY zCKfX47{m_90-&h1smrLt;CNogCIjSwnMg*J;ZcGv-)1PSGAiFnw~R{6=}*lqzPpkK uyXm4J#5uqjn{xojYWFj$e-H$LJ74*wMl6|0PJ;jd00{s|MNUMnLSTZ+ySyj> diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.50.png b/test-integration/snapshots/signTransactionRecordobt/nanos.50.png index 119eb22fc2111523375a127e32bc66252e40bfbb..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy?&0;~d%BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$f=0K3pa1{> delta 356 zcmV-q0h|7;0{#M!BYy!!Nkl~5 z_mR}4sknMts1y7IM4$OXd1E_8NiIW3P1Xr;v2z88AC&_s34cRAHnFa%@t&K4CcJ@5 z;vg8y^HnV&#v^mww!eQ1u%Cb+E|gg)dM%Uv1w#_z^Gn;u8~Ir2n!RF9DOALS z8K#6ETh5P}t6=zw3#I8oJXX(kkL|T!}=s%{H;}> zbQ!9OVMJ838eMuT94&TsD4Ndjxh~t#*a3;kFvWILDi_~Q?!HlH*lr6QPXLIKTa44Q ze9f+m_6`6^8mAyKW}((a(?G>_)3g8p0001hdb|Lenh4sAjtpP`0000Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.52.png b/test-integration/snapshots/signTransactionRecordobt/nanos.52.png index fadc23a161829705363042782e217be337d6b7af..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAt0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2hCG0RR91 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.53.png b/test-integration/snapshots/signTransactionRecordobt/nanos.53.png index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 330 zcmV-Q0k!_30^|aaBYy!aNklWIivaPwH_s2>jV1y1r z1f-jNx=sD)Er1!#^b#MijzNfkI7Ms?SXE@~c;&R6^^%bXxFhU3+ cgpe_L0d_{Z-M|ODNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%>Vsd~%+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.54.png b/test-integration/snapshots/signTransactionRecordobt/nanos.54.png index c0236f40e1f682660f35f989589a0948eac7ab57..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 401 zcmV;C0dD@50;&U$BYy#LNkl%?El@*$@Khua)Wk_QOP&n_ETOD5zi5lsjst)i-9CS1DmGv;Fc+bI3!7LbVXD?FcK%XG&dP1%Rxgqg6| zedezP-Xf}}x_^VVCR%howI2iXfR>b}r4JX*DIXnn%;K}DV{I)XZ;b;zfR`D#(BFnB z6Gv`s){Nlh-=X*bHDL(y@g?KIoOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1m}n Bc9Z}B diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.55.png b/test-integration/snapshots/signTransactionRecordobt/nanos.55.png index 8b56d1dac90a9e754792a30512db3633f78fdf45..06140342c291c111e9c068e5607f9a041bc53592 100644 GIT binary patch delta 287 zcmV+)0pR|>1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1gHAf`0%2 delta 421 zcmV;W0b2gL0>1;0B!7lUL_t(|ob8y=ZUi9+MV+Sm{~z3k?!zX=0bvjkZF5gHn~X9j zAnH&G0000G$?wnYH>u%KQfVA|-8a?a;AS`sv-?F4fPJ7%-v3G+t?O2MqDWCuG}y(i z7j3D+Z&atUth0V%j9hDoDqO7b$_9S8r-4vFCTp|2M1ua z-^o}c23e!$o&hKGiGki5z5kRY8Ne-RCq0?k`bn#Jr=67~R`b9j46<2sDqssr;h%is z?ZW*%Pn3YoAO`zE3{KHWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;s zB5zdH=9VJJdVkRuiy~Zv0-Utyy36qKv$mTSNjdGyfFj)3_$uK4%2-`thaRc%F#{}m z^haqREdv~(o~+qMZBwz^-F*E=t!l^th{~@a19+PIh|&{+YJPetqTSrPg?OXzkRCS{ zwaUZ{j32^Ev9or$eX(U1k}M*-IjNF@CD{FoNUXx>SsnynGY9|x;P3MW#zbH##8J1Y P00000NkvXXu0mjf-pR?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$g1}p!HUIzs delta 350 zcmV-k0ipio0{H@vB!56jL_t(|ob8!m6N4ZKhHbb0{}1lN_MtnYP$Y}Qe4pFxHY8yZ zk}L!O005&hwRV8;Tei>B+|G|-p#gY@AqC&o4v6G(BFd*((n*f4lJy;Vw&S;KuPC9T zTv*i6%+M5P88F^0`DyLI=s3%Oi^NU8pGXg6{*!tDBa3F?d9Vn} wY8+lC<;4}0a}vQ;*cV~5EeHSr003Z2{)tQKp#FxeMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjftbWuW delta 366 zcmV-!0g?XG1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQOV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.58.png b/test-integration/snapshots/signTransactionRecordobt/nanos.58.png index d1eac39e479dd964eb87fa54d56480cf7e8bf195..ecf1f5058ac2679bd73a34a5317002137bcec097 100644 GIT binary patch delta 441 zcmV;q0Y?6)1JeVLB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfRm#_N delta 398 zcmV;90dfA*1E>R#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kA#~Qi%$XKqJKXzUP?)+BtW{mwn(>D zPIRh``8o~x`Z@ML;5u8h;!xwfDmI*1rZXU_i+8`ADlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m-B!72FL_t(|ob8!G5`!=ZMX^)we_$7O;Y>^uf+Rp_ro8E*Dt<8- zY<>ZPAP9n>oAbCozWQiD+R03h2&47g$TP6WhOaLlpewj_ie&-bDk?X5TH6li0o(p{ z^x8~e=q9b7Vv6rA1!fp}EzZs^%?j-T6t|k!0R2**D8Ft?ihnpn2j|_a-U*`QWd*2< zFK@WCz6EJm>nUrGtN>`P_0!EfaX3tl-y2oC1=U=S6-*q>0eWY!9tH(?yoXd07^({W zZX^WJ>lQsHb)h^MRal87lb*!OJAwbe?GdzFCoe~ggFjINf1(DSD35;K-Cb4G;JnY-j>8hZRxAqsC+-p#04lkbaWH2sYe_AgaSvrr9ZHf z--`sz%H9iNqHCkhK_eM)0TjJ9MH_V*oSaF_W`MjfOW3GloLbQ1I}L?zqw@8KZB#<@ zSLphWTNo)n%ZXSAIAgXB09o(;gYF*$LEz2@F1{ef=MOV=W&i*H07*qoM6N<$f((PW A;Q#;t delta 400 zcmV;B0dM}W1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYN&%WpY diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.61.png b/test-integration/snapshots/signTransactionRecordobt/nanos.61.png index 06140342c291c111e9c068e5607f9a041bc53592..c1b2ff762680fbd4ad552d638f7b8087ff3d154e 100644 GIT binary patch delta 399 zcmV;A0dW4h0;vO#B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1favyh{K8 delta 287 zcmV+)0pR|r1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1oXvf@uH% diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.62.png b/test-integration/snapshots/signTransactionRecordobt/nanos.62.png index 959a70fad0ab7c7609d498e1816667519a983348..119eb22fc2111523375a127e32bc66252e40bfbb 100644 GIT binary patch delta 355 zcmV-p0i6Ej0{#M!B!5LoL_t(|ob8y)62l+}MMY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1iyE Bru+Z^ delta 330 zcmV-Q0k!`A0_6gbB!4VPL_t(|ob8#x5`-WKhHYni{|EL^2WMQy2q_`W{lDo@4xxd< zKp_AC006_WMSDr0CD~N4>?}tA_Fljh3ZtjTWer;l%Ua4DN9Z7^a6AF5^^1G`;4pl8 zFMuQO=(M}1X4DWgyWKORI)IJfGcuk7Xhsbr$I@_=1acBCgny~bTbX^|jSZ}C&IOag z`c9|}3+uZAAM^)4=!r`v*y8VU;>iv1zOQ(o)6%Ziq_f?!jPrNh3NfK8Ny{jWfS^2_ z6kl|N_VtS9l2C86Q^-mL9IHaP0m-%`t8WSS_afNn|m* zud{Ff8!`H}VngKFt07J!rc_eH?tj1^^zJ?INy5j(Sd3KLmM!iS((>71RmOKg2><{9 c006kc4r{C8nf92-JOBUy07*qoM6N<$g2v6CI{*Lx diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.63.png b/test-integration/snapshots/signTransactionRecordobt/nanos.63.png index 9e446398db817809613c38824b4bcf70fdbecf9f..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%71HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqMNt%IxG9f%lcGPydC z0bs%b;E-*hrQvg$cngJZTx~0pO{U2S*bE2&DG_4~#0&mnB7dR>#UjSHvQh4uvV?WQ z0pMBSG-zYmMufz4j=4+_7$EN(zz1#noZbXgq>SWEu?3*ScWiV5E&Yl`qaDBOZ0mvluF&yL!^(;yo{8 zk@nN23&TQ9>865dKf8e1ucz zfr%tYTmlHvr?cC3CdZYa>Bm#V--G16QZ9VzIIix%KQgI1Xv_2G%jcgeVjxRU;Q)CK jXt9l1KhcV!D8T#!o8TKQ2x4k600000NkvXXu0mjf1ZmV$ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.64.png b/test-integration/snapshots/signTransactionRecordobt/nanos.64.png index ecf1f5058ac2679bd73a34a5317002137bcec097..fadc23a161829705363042782e217be337d6b7af 100644 GIT binary patch delta 298 zcmV+_0oDG~1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g7;E`EC2ui delta 441 zcmV;q0Y?7C0@DMKB!8MoL_t(|ob8$24#F@9g{#r`e_${4qH#7oz}g;gnett2{Q&}$ zW~`JXNs{DWxvXz}J{mE1-jsbURnhbDQHQg*y&ddcXDz9F86m)p+TA)LE(V%pR2phV z3|s(^?pSCExGlq6{*DLn_-Y5bJ7k)iRkOVV&^fe?f%vd3Mt?7OA<7hs7#?V&+!Y_Q zxd0f6Jh;&q5vLXsO-yI6NYiqh?f@LLEyIn5XM>88%bBBX^DaS1twQBn#r>jrkI`yYO27s~zOqsJmLkm7>h4SCNo}u8O<% z7IwSrzMC<-_Mq9R>0KDa!b=d}3mU||jp|s?jYhQiIs+X5$6i}d8G3OM#Ww!s@QcLsxnx(gpYx*&S&|mAP6f#$rxeZ j0fjq~`4cTkk|drNfWIjxJWry)00000NkvXXu0mjfh6mS> diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.65.png b/test-integration/snapshots/signTransactionRecordobt/nanos.65.png index 7c579f5ef126a25a4a5b6bf7715b13e1c46c540a..d14326b48f5be74d8ba18e3b9d35bc6029820ae3 100644 GIT binary patch delta 264 zcmV+j0r&o%1EKNDq-HB|xDf@=|6_ydqg^ z8{hHt|-oS~nZIQF!tvo#(T z&u2p!g+tjIjU! O002ovPDHLkU;%=jfO>}j delta 388 zcmV-~0ek+U0-ghqBYy#9NklU_yvZgr!v1McA-k&7*C+@k%7_KqE`P=61QejWqQ=x2^&fSY+Q7)L=ZQ!ANe?2`0G%+HPZ#i&8OguTG)!Znp+bH4{hr zT%#FJ3gL3fY<)zk!>*nr>4Ud*w>_{9Dg8#I4I@?x?bMAT^s`CU)*5R?Dhfa+j@C(8 zLAd3po`&9G;uykjpVoP*KNTlH7#8Lv5$mi`a8;m|yM$DjN~~@HkIBn7 iNk7>4KL7ym_j~~}6CR-`8G8Q!0000oOR+W-KoO6mpF+;1;$)BYSUuMcO)XSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m( z=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p8jvsRZlrKU*bcTTfpnd1nrad6=h{k${?84B zl<1$NE3icWROCR994O6Q3Hq00J8|}*C11d|rf!9{KRVuxSoYzDYn!kY8hm-4-7nSc z-1!edoNquIy&y3XAVvbjLKb1$5M8kq3IG7`{~nCwdp^mEe767q002ovPDHLkV1n~I BcCi2e delta 430 zcmV;f0a5;z0>=Z8BYy#oNkl4OCf|1LQe7j`g&R+*cMcF=-|eDRsb!(9m4LAVc>ol2LSKrTJQhm%A1q7w@|>D zUiwiPDB#tOXV=<{85YUFKGWU37hD7{oKA2vBo3WL9w91gtbdx`>WjG<&hfNYKqfl^ zuVdz5+gncV-OZ17o0!7|_;1l(i(1&{Kh1&?VgN zhxJDRuPME@WHXGxei(zDSl&ODn~AH6{;JDGp}uM^{o!d5Q&u;b8Y4=~R)~17JLiuq zk|A+_GLu|Wdw z?Nfb8I^5jXV7MU`fYpGP&Q7Ygj#|x3L;7gJn5s=OR|31AT!T zvxD7dKuvfB=DBndt;BgbLHyhqpf_K0*_tIf?Vgl?Y$pk1(fhOuJhwU>EFpvtLJ0Zh Y4I0*J1N|t5rT_o{07*qoM6N<$f`0PPQ2+n{ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.67.png b/test-integration/snapshots/signTransactionRecordobt/nanos.67.png index fd1722a748129222182e9b6f6681a9d30ad48194..152ad82fa4496d5fc26a291c49b7a47e5c61e759 100644 GIT binary patch delta 274 zcmV+t0qy><1FQm&BYyz%Nkl z3uRdV0N|~B3^evl=&c5VL*SxrAF@oqK!!5ZqD#uW`j#wClG+opYEI@vzaAsU+bcS+ z7{l7ssHH?S4m4)p{*N1xU&F!6IU0owS^c2Wf#OYRv;+F8h<_~dPNd?%pE-g?q)`p^ zkpOq-kF}F5yfsRI=1wMCtH$-{@6!!O~1z$R0RR91000000Gjgy YQbVxP#6&FY01E&B07*qoM6N<$g7iItQvd(} delta 407 zcmV;I0cifL0kAD}C^b&6#H-YP0Ld0N{J=KOMi+uLjC6upR~lc)W*H5*Vrq z{ca=#(d!mHCv~Ab7*$w_C6k`S%R7Pp!0i#VTPH6^jDtT>1An3ho+yug-QSn%_$oH4 zMJalvuu&GBI{e%KXyrn;| zli!O3&C1>jVxnuK&Osv?aRC&)HbonC8l0R-%w~YRFiY5|Vw_sg<2wz7Z=>?{hiz0s z^H=Elk6RciKg)?&2RLK44ggv2{)6rx1VP}=2QI!K#t`Q-b!Gqn002ovPDHLkV1f_i BxZ?l- diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.68.png b/test-integration/snapshots/signTransactionRecordobt/nanos.68.png index c1b2ff762680fbd4ad552d638f7b8087ff3d154e..b42d7b08612d408956ed509afd4d555a52e6af02 100644 GIT binary patch delta 366 zcmV-!0g?Wx1BnBWB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ delta 399 zcmV;A0dW3_1E~X$B!6&8L_t(|ob8y=7K0!NhS|<~{|D}(U38AKL_z_{#dmhGOoc=! ze}Etef*@#PTYtYhSV23aMy8WQH+p^ta@%%(@U6%fXzyGbVitgpe2O2rL$3w46<*8X z?tYoNrMqPdZ6zPbnS|L5wZ&;{no|dQZ$!MPeq0~ka*x>YvJ@pRecAP>>CP37RO#%^H>S(09<;XLIQBe`n;vj z3TG13)~V*CDwKCdXPAS@+#Su^+kt1`vkR@y$#W4);ZMZCpNN4cnyX*d_em?hij3NA zD87O&&^kZX<$n!>lW#16;;ps2N}%c#TPcwWaQ1LT33NJf?6QGzbtW+<&PD&I=Cj7rSuPt7g9yOIaH t>7pRSIlvj4a{$O{_cN-05CnlcU-_j*ESX78g8%>k00>D%PDHLkV1l;Fyc+-j diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.69.png b/test-integration/snapshots/signTransactionRecordobt/nanos.69.png index 119eb22fc2111523375a127e32bc66252e40bfbb..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfBR0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAY5qh1um z1R?+c0Km+7jJ9At`t8Z3)J<=!v-RqBJD=78D(!9m{N47jgWtlRgL&xN*{(mIFrn!8 zk<_KBxO!Ts6Z`~3pZP<1V>?AjE<;F7)(LR2a|MVWl>;dWLw`Otv97A|o|}Ruyn##N zAQ;Q@RV^XLBXiugzkdtk-(=0OpMW4PlvyZxEtCBPLlWZiOWVgA`B>?iy<$!&RK$cC zri33`&X1X^VEBp*1`M~g1v4y4Wy1`HE)0Ay9{6A+|9cahN2I!t(Nbu``XpZbtyQ3O z8LEn5L{zgHdR!|UEp~P&n$GaKF5A%90g1{m#dcFF7vE0qzENk`ZVMex0Em%WjMKAx z&90304gg6Sryw$Bq1HvyK*e>_v;Y7A004k`ya1b;2-=K}3}65N002ovPDHLkV1f$m BroaFI diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.70.png b/test-integration/snapshots/signTransactionRecordobt/nanos.70.png index 5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0V0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jq4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYt5Wf5X delta 298 zcmV+_0oDGh1H}T6B!3J^L_t(|ob8yw62l+}M3YYQ{~z2#b8wnk1*?t%l6|LSq{ZwK zGO}#|008dFE|=>4`ptZlA`7cCkk6<_VncV#SmZN)cxom7ay@)rgK=RdVXVa58knKDV$z*K= z54@xO2E-~CO0P1Eizk0h8r+&_7B?t8!$AGvG)M~dCs8FV)Sn7G&<7r9LJ7-EL#<5* z$w?|VUi~{JQo)*}Z4@Ry`K`e>nBS7&lW;c%3yt5B_DQ%N69?4stYbjj;vIS5u>~!K wM*|Fggn8C!K_iv2hH<9T4+a1L004j+PDmMvbKN1Yn*aa+07*qoM6N<$g2$MH0{{R3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.72.png b/test-integration/snapshots/signTransactionRecordobt/nanos.72.png deleted file mode 100644 index d14326b48f5be74d8ba18e3b9d35bc6029820ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)NDq-HB|xDf@=|6_ydqg^8{hHt|-oS~nZIQF!tvo#(T0N~Gg0owtf_$7FZu>b%707*qoM6N<$g7>w31poj5 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.73.png b/test-integration/snapshots/signTransactionRecordobt/nanos.73.png deleted file mode 100644 index c0236f40e1f682660f35f989589a0948eac7ab57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOpUP)oOR+W-KoO6mpF+;1;$)BYSUuMcO) zXSSw7lM9(0c|UYG=#ExTmb$7JFsMY(Zt(m(=kA^@0q$~?_JQkCNEh`2R!0KFNPt+p z8jvsRZlrKU*bcTTft_udY7y_}+DeH2&kcl>=%1u3utfh<H zWp*V`yU!Ud8dXB-B2Et|6-`T5NI^7>$=Q;sB5zdH=9VJJdeIk)B3y(5oV4h=%kc5D zwwo47Iql1UBHY;cD&YUhSY2U<9;xv$11x&(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput diff --git a/test-integration/snapshots/signTransactionRecordobt/nanos.77.png b/test-integration/snapshots/signTransactionRecordobt/nanos.77.png deleted file mode 100644 index d1eac39e479dd964eb87fa54d56480cf7e8bf195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIbxAOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@A zJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q%#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;B zs!Ni?(7OlxVrKMbaSZ@~<4!y^c9kXV=)Is~Dzuy#ZKXUbwOXnmrGvT8_QIAtYb?Ea zKwVeCZ82H{$c-wbB7*hO1B%?|p;Ty2PPEsG%KifY0000000{F2mty+PHKymQ00000 LNkvXXu0mjf&gZG0 delta 462 zcmV;<0WtoF1Ly;gB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkIx$1y(?3`CQwutZB%0 zK*bHwn*Q2zslg<68|mI>?KMb&oR&0xH9d6oI|?V|q7@O~z`DcwxeRuI^*ExfDh%ED z-IGNTaNRKjUAq-qq@eEPDUu#Jw7sI&uTiM4cQ0xks(;VpzKp;5Ji$8PW)`gj!nJ7q zm)Rcx01P;;=)iAzeEE7K&zgj@E5nT&#LL(&0?I3x;tkI3IRTR}000000000000000 e006+l`4t5Tt>A2GsY9s%0000qI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1f-R$(sNG diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.09.png b/test-integration/snapshots/signTransactionRecordobt/nanox.09.png index 581549e868bdb86416b96fba88d84e02da20f718..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 100644 GIT binary patch delta 556 zcmV+{0@MA+1H=T7BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000&wZRMs5P%UqVEzf}29*1k)jl>EYibO_YLbssS>zB{(bn3|;e^pz1 zp%}LEQ%x5@nt#b$7BXnVn@lkI)Ofm=h2Rvddsl6)ljs=P_bfSrb0Dg=0Z7bs)Joj6W^NAvh#05BD^(Ais&RBiPTY#w#XMb7N0>~*fNL&Cp zq6U2d(#_|98hpz>licG^J^J+D(Q=Re4AkKLsKNVD11A6g0000000000000000023C Y0SIwO0ap^L>;M1&07*qoM6N<$g2v3xaR2}S diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.10.png b/test-integration/snapshots/signTransactionRecordobt/nanox.10.png index 2a064b241615e17cc5298d080fb2ec96970e2d8d..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKsH1ib^0B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1kl^&a40c delta 539 zcmV+$0_6R@1GEH?B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s%f6Omo!C6`Oz1eFBPDD~5ifHwp?2Lmy&|iGLUX008g;mPtn%FTANf zcl>O--^jwYyX~7atvb~jnt*T+$NF_jJYo1c*LlY3H4rEw~gN=S4Fn!eVG((?&7-K#F^;=wDsqxlDS^uebwdQ)NU&cAKTK#j^f(olnQ)Lp6ckwIbV8Jd( w%Yq5e`V*Gvf*QkmYQYr%000000Kkj<0oI$$+84`~{r~^~07*qoM6N<$f;8)(!~g&Q delta 556 zcmV+{0@MBY0>lK6BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a000093Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j delta 419 zcmV;U0bKt60=)x}B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1fv2&h!8P diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.13.png b/test-integration/snapshots/signTransactionRecordobt/nanox.13.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..bce54a4bf1c69a042390afe1eb4c15a59fc0ddd1 100644 GIT binary patch delta 318 zcmV-E0m1(G0@(tPB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f^qbalmGw# delta 349 zcmV-j0iyod0{8-uB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfO8lVK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.14.png b/test-integration/snapshots/signTransactionRecordobt/nanox.14.png index 48f9d3149732977f189da4d5d8e028526afed243..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 100644 GIT binary patch delta 306 zcmeyzbe3s?O1+4ui(^Q|oVT|U`3@=Yv?ZF{Yxym|viu`Er(&tk9JROY?>`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jF1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmdL6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f&`MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1hk8!|wn9 delta 931 zcmV;U16=&62e}83B!7TOL_t(|ob8)ilH4!|MM)|<@&1?Oz2rkRE(O6AAY{8coR6t) zwFKw^HrPW{6h%=KMNt&D^9%oco@f8{IF5i0yO7qCb?6(#4p`2mJ!X89(2pH$!0Om= z#&4{+32M-=lrF;aXF_6fR#qQ;W%9+H0HcWL&x%>caWIvv#eXY-nL7$$o%@N28i8<8 zJ2qZi$Egh%yR@rk{~_g| zkm51M7|;lYpa3b?0Ix=Ip_wIGw-{bg`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e! z*P;aDAsWrYihsOAXcoT5b}`C@xAs2*?8o{A150>y2zmoq>C3v1uO;!Os3?l!vv5~K z`x{44=JXbA9>h2!uMlH3bS_tGvHS%3ypTm}K@tGCuN2Y4&I|iI7A&>Sq#QI+4k?Z} zJ)xpo+~m_S4H!ux+E%`s~WQfzy!{rgFpGdfi22 zz5!WUT@zS;0GBIgACHwH`ryt2y{ofJP8f?=U>G2N5gyCvOgAlf&m&Ptn-PoV?TJ&& z!cFJn3$d@ScPHK)58s7xr2-3Ddyq*u7NuKKSgF;2l3M*IiLCzF5mSQ)+U1}Bq6yc2 znzm2TOn(gvBx4>BsH_@$+S3KQ>Rf645K;K~Q}~PB;4i%!+UT*-Etsx=i_%hYB&zFH7D%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F z+kd_Rn#EHO3YOEu3k16SUk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f;4C2Y5)KL delta 472 zcmV;}0Vn?01M&lqB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f}j`K*8l(j delta 500 zcmVF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.21.png b/test-integration/snapshots/signTransactionRecordobt/nanox.21.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 353 zcmV-n0iOP;2m1n$BYy!xNklI)5 zXw;AaM!=>7000000D!mnTU~+k%&e4i&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>w zpylGO%FKNJ=^si^9RXOT)y);Vf6^TRyI3oRexo-FN=!q8cz?!13;+NCfMZTMGkD{j z^?HZHjh#nE_J4H+nhqDY^@o>wJ#1#B(0>}5TKk=y3+hbOzdne#BVbV2$PQB7j`niS zx)~;J1E_cHK|xbc&e>0d`W^fwO$7h|fXV8uxBkDZo;2@_yAbP`vhEGiia{4*-mm+e ztxZtBtlP@luUhUl#xy=0_2KTa!@~H6{2c+Omb8lYr`Iw#Z#=iKwJ+Gvqu?Tsd`<<92o!r0000004DnaBxTXN6Z+k)00000NkvXXu0mjfp53Rb delta 916 zcmV;F18e;I0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00008}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g1zA5CIA2c diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.23.png b/test-integration/snapshots/signTransactionRecordobt/nanox.23.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..c1a66c3d2ded9643857fbf02844d87151322b5e1 100644 GIT binary patch delta 402 zcmV;D0d4-=1FQp(B!6>BL_t(|obB6Nj>8}fKv7zCC)xj!*h@c<5W;|>Jg^P-e2mgO znv4xeFlq<@000000NBMx`vR_uG3MptI25ns4wnfiLtpZk27d|2(J#Z@Tya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDO zJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx0v><*HK!-NF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$g3}V&^Z)<= diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.24.png b/test-integration/snapshots/signTransactionRecordobt/nanox.24.png index a7a8740548d2608032872a36bbf128b89b69847d..865f0bcdabb24dd323cbc9201ff39708dea0134e 100644 GIT binary patch delta 513 zcmV+c0{;D#1DgbpB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZ$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVF1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNet<8 delta 352 zcmV-m0iXVy1p5MzB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000bxAOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@A zJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q%#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;B zs!Ni?(7OlxVrKMbaSZ@~<4!y^c9kXV=)Is~Dzuy#ZKXUbwOXnmrGvT8_QIAtYb?Ea zKwVeCZ82H{$c-wbB7*hO1B%?|p;Ty2PPEsG%KifY0000000{F2mty+PHKymQ00000 LNkvXXu0mjfd^M?M delta 404 zcmV;F0c-w<1Fi#*B!6{DL_t(|obB5|j>8}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&sBL_t(|obB6Nj>8}fKv7zCC)xj!*h@c<5W;|>Jg^P-e2mgO znv4xeFlq<@000000NBMx`vR_uG3MptI25ns4wnfiLtpZk27d|2(J#Z@Tya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDO zJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx0v><*HK!-N17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000^72ZuUN$mctLdc4OL=|ijvX=R^(lwjWWa8;0gzPFqL+r% z7Rr-5DstlXrt(-~GO^h{09A=7W6(U17aG#^V6%wHsXQomp>qohXagX#VA7z4uPsEV zna)b8mxIxx;7ZtzvyRPRg3A_azXV*%2ti|_Ku(DAjqu%!4 z{ASfMGu+{|*fo45a!Ji=aFgS+ZygLQ?2Wk4X#SJPCwsJ@NepFF!-75#qMIMz#UKEN zTAR6ys*gnTpCH-k`hCic58*2?8sqdmY@*WX#kVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1jEq&XfQE delta 514 zcmV+d0{#8H1DphqB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfV9TK9 delta 462 zcmV;<0Wtpg0_X#fB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI(~L}hq*&sVk8 zk{L>2+T#EK00000z`wY8H(;EZo!cP<$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSO zT-;TeSvvl-KT1%&0^p|B%@w=uSnc@Y z&x;9u_e1~y09_cP@m55!l3FXT^0vhHH7Y;Xk6O#Obyvc}w0ixbwV-{#&YJaHw*v(000000OOu6P0vlwDIz@p0000qI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1gOc$>RV3 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.32.png b/test-integration/snapshots/signTransactionRecordobt/nanox.32.png index 581549e868bdb86416b96fba88d84e02da20f718..bce54a4bf1c69a042390afe1eb4c15a59fc0ddd1 100644 GIT binary patch delta 318 zcmV-E0m1&q1K9$QB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f;Ll-WB>pF delta 429 zcmV;e0aE_i0>=Z8B!7-cL_t(|obA|cZo?o9fMKuNO}PJ&dYAo(#1O`gVXU3m`~0d> zV?GQ?6cGRb0N~|5>aXYX+5J~axh|GcZWBc!yDpsIVYc>SaA3Mgq?MDcwzabPJ+>Jx zkNT^WQvYjz2gRE#&ws7EUA?!vXSm8;7gkIc|2fsSuD{h^{D1V+Fdgsg*)CX*$B)-d zh6$~~Ti0)gp*`+H>{DiK0qf$d;2hfVOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ) zdA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w;hil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z z7`F0LO&36#$$wlHGHAn_OfdP>c)FK`;1sNTS8cA7=os1eEIF1_k1e}RCs{cG|I@B* z%l0>IyrTjDev9>OE8`tJ_gj$ji6V={1vp^!C2s-FSbfP`fT<5>e_7T7$SE~QTmU(u z27Lk2&F6p`e9JzQ+~ZF@`t;w?a*zHD)ZqQ7!TV7I044wc00000000000000006BdD X2ysXOR}!l100000NkvXXu0mjfz diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.33.png b/test-integration/snapshots/signTransactionRecordobt/nanox.33.png index 2a064b241615e17cc5298d080fb2ec96970e2d8d..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 100644 GIT binary patch delta 306 zcmdnOa+Ya=O1+4ui(^Q|oVT|U`3@=Yv?ZF{Yxym|viu`Er(&tk9JROY?>`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&sPxx-I7@sMJ$3a(Gz1A0e~;h5cqu4wg<@flDLV;NQZU97o4n#1go&EC3>@In`>zFZlA>+Fo)E^vFics;%AbF}MfTeV|T4= z@%HkR>-K9qdf7c-)S3SB1|Nl*cVX`YE9tqi9VL^JJ&l{3*s_%Wh~3G~0q{P(0RR91 j000000000006+>qJOeFe500F=00000NkvXXu0mjf+iJTu delta 556 zcmV+{0@MAU1H=T7BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000kVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1m1E&cy%# diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.36.png b/test-integration/snapshots/signTransactionRecordobt/nanox.36.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e;F0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00002lxVzBYy!uNkl%f6Omo!C6`Oz1eFBPDD~5ifHwp?2Lmy&|iGLUX008g;mPtn%FTANf zcl>O--^jwYyX~7atvb~jnt*T+$NF_jJYo1c*LlY3H4rEw~gN=S4Fn!eVG((?&7-K#F^;=wDsqxlDS^uebwdQ)NU&cAKTK#j^f(olnQ)Lp6ckwIbV8Jd( w%Yq5e`V*Gvf*QkmYQYr%000000Kkj<0oI$$+84`~{r~^~07*qoM6N<$f)p5_tN;K2 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.37.png b/test-integration/snapshots/signTransactionRecordobt/nanox.37.png index 48f9d3149732977f189da4d5d8e028526afed243..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!$0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f=80$bpQYW delta 355 zcmV-p0i6EW1O5V#B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*^X@AOHXW delta 318 zcmV-E0m1&<1K9$QB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f>3FYc>n+a diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.39.png b/test-integration/snapshots/signTransactionRecordobt/nanox.39.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 378 zcmV-=0fqj}0+j=hB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#0 z0xcJJRqh_=pY^E()e(SgX5Cz|`yaX^poz6&=nK77(7`e^iGOEo!~g&Q00bV?l9M<7 zXT9EGnAmw_WPf&7U~0Iz?O(j~`(byl2kWO{YL@R@T+q){>+6%qI|5Eh8`+ao)6tQc z>CP~D8$i8lpOkb8GPAf4T6gf5G!*~_5UDxz6U>h7(yU0u}Q*aW27HzXPXMa^Z# zl5)`GILl_OUS-yw4xd1Z^n=+qhqKo*vy|uJ##AF9X(}QbW}Yu~-c%892sFU(zZjR= zAoEm{HygUv%;vhXkAN8H{zteRl#*FD@1OAT761SM000005A+K~@Xu(A+~M#50000< KMNUMnLSTZvp{pSP delta 932 zcmV;V16%xt1Gxu~BYy*cNkl+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X00008}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000h1M&lqB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O00008}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZF1DMQNuu$^DPSUApkpqe_5*$^p6Wty%{p z`~?D(qyzu}000000000mLC!hnym}M^e6AjVC$XeIcuoLL^H*APvrtg=Q@9mypyZCLet&Gj9r*zO0002iV9(84 z+=S(@9)GLKIdAul@4r&5y~Ih^8?692FOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xP zQav?2kPp+3j>o??qQ$?Zop&N%?d$#SYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NN zHvi1oxdZEcqkjNgo=naxKXHaBZoCw<{jr*EuJT4J;D7R{0JO6|001cNss-JYj@M@S zJF2#i+Jx^wo?>Mg%Ij$BQwyq1jbf!tHIo(1cC#VxJr6Hks~0Q_iZYAA2rf&-R|OoPXN?w7sppy z={19@W54$~BgI~$pHASm3A=o`QMAxwR(hW^(m8nd%9779)XqDV5Q-CDwQN|cJsfRc q+++J)*ESLW00000000002*5Y}+=qHSo>FlD0000F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000OUo@_5g(0y37?X|D@XkidZX#ex~;nlz0s7#D5qQF#rGnAV9!8AmsVo z%$O^D+?F7Vhq|dxXZq z`#Vic4;cIsJEDsrs0Vqly7_-48z2w*7se~9Q^qtv%S#OY*4h%C%G(mBt7FrJD`K&W zYpP3JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s1lR+RB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g31x&EdT%j diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.46.png b/test-integration/snapshots/signTransactionRecordobt/nanox.46.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 100644 GIT binary patch delta 556 zcmV+{0@MB61H=T7BYy%5Nkl17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000F_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?VxkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1iyG&Wr#6 delta 378 zcmV-=0fqj(1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVNMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjf+ajQZ delta 363 zcmV-x0hIpu0)_*SB!5jwL_t(|obB6NZiFxlg<)ECC*J>(yq7*iimcoQsH*tD|2;tj zC~_{780I(t000000Pq%HyDM;?yVqkg+gOvokZgb$`be=E^ctW>KZbi)DB*i|1#W5r zEf;rH?jGl#^{E8a5rA!G-CVKzAG#x;iM3+r3%ym)!7?<7XMb$O000001Rm6qlQ;fn zz20G%*m-1Re|A@3YPh-WU%d4DVRx?w>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)?}X!pFoQAgV{HSv)3}Sl;`5cR3jj1Dk2(Yo-cLYR1t3oG{Eq`7?;{0 z^Hh^J8@kra=DM;qU+e002ov JPDHLkV1f>8t6Bg6 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.49.png b/test-integration/snapshots/signTransactionRecordobt/nanox.49.png index 2a61cedadad92f3be64d4dbd7983be4a009f333a..48f9d3149732977f189da4d5d8e028526afed243 100644 GIT binary patch delta 355 zcmV-p0i6D>1O5V#B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j8}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f&l1{IRF3v delta 513 zcmV+c0{;Ek0-FSoB!A*bL_t(|ob8)Ij>8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZ`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNes3fF8}}l diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.52.png b/test-integration/snapshots/signTransactionRecordobt/nanox.52.png index aa4cc2ae93cd274977fc604eea56ff141e05fd2d..4bd0b0eaa958bff396380e4c9b2122d3b82439bb 100644 GIT binary patch delta 388 zcmV-~0ek-F1D^wsB!6Z}L_t(|obB0La>F1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmdS7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkIMTL0002^RlV$$j(_hW9+okF0E-)cYoVRYh|K`<7&VA>>R&3@|JGW*}-RR zx)L7mD$Dhs3$Lz(TiqU8K&mmVHkPHM?_NkiQ9!GG{1L4xJU5fWk@ma~c{Twf|8wW1 zO8*GsBL`=aym?nWn1H$ZFj9-oj@-FYT}^;3>(z(0qAn9T5svW|X7wz$%)~apx6La6 f000000D#gT7i(Y+M7ViI00000NkvXXu0mjfOwY~7 delta 955 zcmV;s14R7J1JDPMBYy*zNklqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1jCI$+Q3f diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.54.png b/test-integration/snapshots/signTransactionRecordobt/nanox.54.png index 581549e868bdb86416b96fba88d84e02da20f718..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-p1E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000&wZRMs5P%UqVEzf}29*1k)jl>EYibO_YLbssS>zB{(bn3|;e^pz1 zp%}LEQ%x5@nt#b$7BXnVn@lkI)Ofm=h2Rvddsl6)ljs=P_bfSrb0Dg=0Z7bs)Joj6W^NAvh#05BD^(Ais&RBiPTY#w#XMb7N0>~*fNL&Cp zq6U2d(#_|98hpz>licG^J^J+D(Q=Re4AkKLsKNVD11A6g0000000000000000023C Y0SIwO0ap^L>;M1&07*qoM6N<$f}VNLSpWb4 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.55.png b/test-integration/snapshots/signTransactionRecordobt/nanox.55.png index 2a064b241615e17cc5298d080fb2ec96970e2d8d..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YUz>1lR+RB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g31x&EdT%j delta 539 zcmV+$0_6SJ1GEH?B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&sF_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?Vx17_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1iyG&Wr#6 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.58.png b/test-integration/snapshots/signTransactionRecordobt/nanox.58.png index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 352 zcmV-m0iXW(0{a4xB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000XL* delta 349 zcmV-j0iyo<0{8-uB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfc~+qK diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.59.png b/test-integration/snapshots/signTransactionRecordobt/nanox.59.png index 48f9d3149732977f189da4d5d8e028526afed243..2a61cedadad92f3be64d4dbd7983be4a009f333a 100644 GIT binary patch delta 404 zcmV;F0c-yL08}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA00001O5V#B!5LoL_t(|obB3C4#FT1MbT>93Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+j8}fMVV1=!u^lLU1kvpAq<3K6Y9=;tCTe0 z*v1K;HUt0w00000008(e{G2vmos?2OjxipzM1#u!l&&xF7zTd<$lfpA-E4Hh?`Z=T zsT}Rj?_NnMmGx)*(FI;-034&2<{r~O_?-cjuRXf{!rxm^;D0srL->w`7ytkO0KfrM z>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A z%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9 z&Q{W?Nk3-K0Dsvywr|p#n<|n?@|xIYUxFl86$)sUEw%*UHnVa_!fI5?9v1qU$$dFQ z@2rEw^1EZT8?RfEFpJZ@asU9hLDqK{6~FhpuIDWYyagR+*GhP-#rIUOvQZL6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f&l1{IRF3v diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.61.png b/test-integration/snapshots/signTransactionRecordobt/nanox.61.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..c2bb4e70b0121619d4f70d19c75de6027dbd03ec 100644 GIT binary patch delta 514 zcmV+d0{#8X0-OYpB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNes3fF8}}l delta 306 zcmbQka+Ya=O1+4ui(^Q|oVT|U`3@=Yv?ZF{Yxym|viu`Er(&tk9JROY?>`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#2Z#fZBYy!;NklOUo@_5g(0y37?X|D@XkidZX#ex~;nlz0s7#D5qQF#rGnAV9!8AmsVo z%$O^D+?F7Vhq|dxXZq z`#Vic4;cIsJEDsrs0Vqly7_-48z2w*7se~9Q^qtv%S#OY*4h%C%G(mBt7FrJD`K&W zYpP3+}xCv^|u#_&s^JhY0a#mI!d}Z>*odBbV=+BB-$8j)~tbfHTftfoBVV(Pli5h`$ zQ9CwXT*s*m7~}x~R$S!5IE~RkwGQGC>ViXS$FYT?{)dA{@&=G@Wngc>5WBRiXa6DP zppfD*#u(5DhM)i`*8s0ZaiN(dTDKTpQTZN_2-q{@cG~ZqT*r25iCqrbfXn*JXGdRK zJlCQG;~^T&!+(mrLueMh$96Hwg}3%U0_?~71p`ZXbqIO`S?SBVkgp~2rl=^2;U5I2NT_Qdp_gf0A1LCyA{7*%4EN2ioPI|Dp-k zewwyV(SJ-03nXJ65U8vgd)m_lyXstN{SZ<3`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A z7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+vQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3 zeAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc#e1H7l)!x|tNRmx*EI0Odb-g=dIRVw; z8rj8;rZTsC))9B{^?75x8~QM{0Yy<1g&$TF6f1>V2V9uc3Y?beCT?UMM1w~y;t*`o zcE)*vn|-lGY@eFIm;61i3vz{#P+fAhFob(HbLk4ZD_N2 zC4bw#0psdh=yPL>geya4S@D(CakoyPCyQ4+@sk!wUqu{9p&( z^>NGnTy{^vn;Cp$2>K?T`5&=IxW|1hPaT1Zq9}@ji0CgJ0BO_5PzW9X0000F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&sn1o8urB!9U{L_t(|obB0BQp6w(fMImJ3HLuz@8Sb943dxyfwfrw?`cIE zC;_@lQvv`00Dj$v@xSZ3+COv7fd>3RO3ki9Tc}pB5i$-v@b-VMU z@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTFZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4o zJd0*3bCE45V9PULwncTIyPk}ysXR4jv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$ zXp8e&jo_R?vVVJaL$jA8v3JW&Oa@Umx?Rtb$1?J<_`vW4Id=;>!LDh`^dH(X#{mFu zasAYl*UxQv5?>J6<>S;d#nJeBDxc<;jv}0lqtLF7dUoddx%)Ey|23Mw>i*MRs7`aE zd{2*eIBNx{Jg=6@nVNmjcGS36&-o?nIoAxoQ+uE1BvBwuo-H4u--6c9IK$fE8@)$# z2JyT;Jkja>dp1V@PK^Hj$ie-{!Trbq0000000000000000001hzv&x@0+WUPTMSMB O000017_XLqLG;whO4q>ZY8OPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0ZyQo{~Xk3wtmPbGb-U_St!L69- z0N0O*rmEmC`EHR7oZJxs)0Kh@V`JDaXE9haK--x9&i=(P!)}q!*>$i|IQnOSW z<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I&ylWB8P7PNM5#Ppk5g^ZBs>e5* uzY17{0VMzc000000000000000Ud}gTZ2B=UR59}a0000V*el%xaz0000000000FhR~a=e&9p1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS z6fOVhQTK$yL$LayhV6#wA^;5VNaG>OltABoM!X5bm00000)?m-g zTik@@upWP_$~kZMj_IWLZBVhe3*t*BT%JtMEI)CEDQ>(JwEeM~Zm#l1E8u_fr~tIHKL7wI?y3ddl#bVC z`8%q%kJ^OqK%Qb{8OrNu>r)G=O^sruOf{1g&33aP?>!GMU8^5J-m&sLi*a^*jasp+ zil`!J`h8QC8g-WB+D2rre%GqKS1>#Sa5+sb<+DGzZEp7}dLK2?aNX|Wf=>X{YZu2? zTj@1}s$;+RIU~hhqn}RTwh6m@xly#xV^(^fGtxPD_sWvbG1SgGl@N*(U$tylt34cT rU)*E+UDq}e000000000000_W0{oIFoJ)Tl=00000NkvXXu0mjfLNDs~ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.65.png b/test-integration/snapshots/signTransactionRecordobt/nanox.65.png index 34e5ceab69c61f6e41008ccfe72708b5eb164f9c..53a92bd8e3a256f4a1c8afb8eb128d55818ffe26 100644 GIT binary patch delta 419 zcmV;U0bKsh1HA)~B!7fSL_t(|obB3Ml7k=+Kv6O^J7NDzVlVSyg`sR9yrIoKUxtb{ zX+Q;H3;+NC0002K#cOv3+BxU^v9)$%O?s$ofH3tTjm@C10etqubVmzS_}N{7Mz=(( z%ez+2x$ypz|EPl25rAz{-CSe$H+o0FE!P@Tf6@0AWOxld#D6m;VgLXDfGTkVDpCdb*)JH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}G zR^>F|lWd;q5r1&&7ln7B=wsQ`zhI;S$?K=mCky4dsmJWq=L!Si-^mHmx+VD-GynkL z(d2)&+Dh<2=Ec8u6)3+9HPEot(5TeXrY~8rXnOc`eQpC}R)$S1o2ljEj~DlI)Wg#) zts4P|nm!SG{F+@SX2P4zy#<-dyU^@K(_0k(wUQD502}}S0002G{Q-abe~95ZDct}7 N002ovPDHLkV1m1E&cy%# delta 436 zcmV;l0Zab91I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ00002lxVzBYy!uNkl%f6Omo!C6`Oz1eFBPDD~5ifHwp?2Lmy&|iGLUX008g;mPtn%FTANf zcl>O--^jwYyX~7atvb~jnt*T+$NF_jJYo1c*LlY3H4rEw~gN=S4Fn!eVG((?&7-K#F^;=wDsqxlDS^uebwdQ)NU&cAKTK#j^f(olnQ)Lp6ckwIbV8Jd( w%Yq5e`V*Gvf*QkmYQYr%000000Kkj<0oI$$+84`~{r~^~07*qoM6N<$f)p5_tN;K2 delta 916 zcmV;F18e;F0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh000093Hx8t?8Og~hEPC6Wq5ecSGCoW z8A@T=;{X5v0002MzqolfV4Rtq+aUzUmV81o0cq${ifPbGz#08C+{G^?+`StxC=0Y) z+*O%bI{vgjN>IH5;HK8i6}$hTdj({%Rt$ZlHw!wLhAv`{g?|_T007`%-Z~&#JvCk5vQjEC2WPmO0OX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*( zOV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx) ziwS=BL;wH)7+jk<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f=80$bpQYW diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.68.png b/test-integration/snapshots/signTransactionRecordobt/nanox.68.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..bce54a4bf1c69a042390afe1eb4c15a59fc0ddd1 100644 GIT binary patch delta 318 zcmV-E0m1&<1K9$QB!3`DL_t(|obB3C4#FS|fZ=MqN$-E8-o=MSLV%&LMcVEEp1`Rg zg^p1b0RR91006*UJXQ~2o|&b#sxBPK5g{ia4}C7;G{l>L6#YEh%@;#>t{%XoBGBRD z9+jEp_n&?@gs2&SW%ibN#N{t>GoXld#L#czJp~Dmp-x=mAb$n`001oD^c)bkynF@q zLAPINh+BscpBZ3g%^zDtL{-0b(`Qqgd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8k ze)ug%cjBe0L($yc?=uhlPQdAW&Vk2UQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^ zp?+&Ydr`BGQ#Za1J^eNQdj>SSPWa6LIlF#IHFQ9|ZBh*d00000003~v8zO4$fU^LZ QS^xk507*qoM6N<$f>3FYc>n+a delta 450 zcmV;z0X_cN0^9?TB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*^X@AOHXW diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.69.png b/test-integration/snapshots/signTransactionRecordobt/nanox.69.png index a7a8740548d2608032872a36bbf128b89b69847d..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 100644 GIT binary patch delta 306 zcmbQre3of~O1+4ui(^Q|oVT|U`3@=Yv?ZF{Yxym|viu`Er(&tk9JROY?>`^T$q>7g z$D_5B0Sq3*-&tf`Fn8wH$5Gh{{`(YXHW+?UK5Ftpb%A?5&-cW|E!8FLdPR-Xx_4_C zOCO*AIhb>mKf|FjdBsO>?|)&(sCTVvVg8pi$JWdYp=zD_BS1477$mPV=FPqO{72e0 zi~H~Q&xz#$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVF1DKvAXBop}FC(q8(()I$*vBqw3y-t(2Q zjgW=GkB9&O0000006>7Ms_O169KLoZ@JhK#U)*N^&gvh>u{RT!WCJi-VUku~(hWe- zj6vS&OS%C#OMDhRb@fH$u{(hXy9y<(zNDK0MN{s))z2;6BY!^t006LueQu7t3D;5n z`Abls6smf)XrF%rdPk4pnB9i1X!Vit8Bh;n8CCmTthqp%!|ajG-qDuP$&_8)G@A6f zF}tBw8g^?kcg}IDJ_$yX(Mu^KQfNLKmyPTp57t?2O(naC^LXJ-zF5wCjqP96yO;cdcyk z_VSeL_G>$O**##?nf~$yABCECVebSh>AA8UC6kgpjhmdIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ00008}fKv6pCO}PJ&xXUaeA&U@)5~wl#ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##95 z6108XvqcA>x`J?X4|&L_(G=Td9_0_ z+mk-stb>@6m4B4SsFngs<>BJ+CGW_*UXff<&fC={^h#{#3CL0jRDRwi8ot{dS3KDb`rYtzo|h{6g-2hAEryd1EZ@ y+@>v`45zX!UrpA=^kSbA0000JSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000pu^Ds delta 514 zcmV+d0{#7|2b%^72ZuUN$mctLdc4OL=|ijvX=R^(lwjWWa8;0gzPFqL+r% z7Rr-5DstlXrt(-~GO^h{09A=7W6(U17aG#^V6%wHsXQomp>qohXagX#VA7z4uPsEV zna)b8mxIxx;7ZtzvyRPRg3A_azXV*%2ti|_Ku(DAjqu%!4 z{ASfMGu+{|*fo45a!Ji=aFgS+ZygLQ?2Wk4X#SJPCwsJ@NepFF!-75#qMIMz#UKEN zTAR6ys*gnTpCH-k`hCic58*2?8sqdmY@*WX#k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f}la;6#xJL delta 514 zcmV+d0{#8i1DphqB!A;cL_t(|ob8)Ia>F1DMQNuu@%@j)UApj;VGzg;5++LDTiG~( zMgn0zPD%g(00000008h`_}Xp2JUQobeH_O|ODu#8K<)aPh+&8qfa3ky-QB_veD5}3 zlE%^D{2rB@bDe+m+Ym&Z0kDnHFpoI=Q`{NQ_&TENPvX4=C4XK+--OTDhyefq003-Y zejo76Yk0HgI*udfT)LA_W%Wk2o;J1AwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`Q zKY92>MNZ$*gw|CiyV=eGXdGI{pnFk%EWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B z(7MCfE7JCMe1FyeS*TkkD=MB{l$2cNoZU9(6eKybP(rXA;2(g?F;zm6{-PpF?oiiy zweB4|yIqW)zV+~mdtCJZQI90y7C{fn0RZ3vnco9t{L!af&s)M<&}NqGgmo2uq<__g zb{X}um+mjSZN7B-9B0Rkyd~8xU3XKS&RvY`9Q8X<=zIHB?$m<57^AAeL%8JNeF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f;^epFaQ7m delta 462 zcmV;<0WtpE1Ly;gB!90-L_t(|obB3Mj)Wi(Kv8?rJ7NDzVlVSSLI{r%N(IWk=VLOB zyaZ{b?Bf6c00000z_0kM?tq^6KK}2VTiBB;Oin;L^eKzeU~dBA=%>S7O*G+ebqAEP zfi^epR(bE!?;rW2307ACmT6t)7BBz9?h44p+Tzd$_MUJWSHopa$(_!~Zk48p9W1+zS@_b_F; zkkYD6F0!NQmqwXbJ=&SSCxcL=vqeR>)gD;^3Z17ESIlXtET^KyIoJCx6L1s@zrTo3 zl{^P>i*xQhmVe#{oDOKFymM@5%?gM&;WAM!lHM58@jbl>3w2hNm7ADO0002!ZSu6Y zNjDZ)c;@q)*8eVODB@V|YkI0fhe02bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1jCAwO0TD delta 955 zcmV;s14R6l1JDPMBYy*zNklqI1@Hh@rmZv6Cp;Tt2!G})6XcJE>MH*~NZP3-B z=3|U6_~$r|Sqy(W@i$5LKc}urJDNRozC!t|CupnhsBY*?U4Ny2^~`G0gkpuD%G4gc zK5fDZl#FLb-?V}9Wmn;X}Y>{ug9q-r@lqP!sp^7-M@m4$8nYNUnfqQgwY<7xHf@ zjHpf1H2d?C3TWCA9uuXcCYubAu85)S$jlAsT~LgP=9Hvr?34VKs~>C^i(tORZx2mI zDiYXIY7Di+W0fvEBx<8$D7_Q;Z%M41J+sgMo+BaL!+%mPh-F$CjWFz63n&DJ!4ssr z%gJ>i*HCjn!r^QrrJ>`hhW3>eqVFDbQK+V0c%mL!l!xSpS+z%6MUdo#1B}hL`XX0z9j$v002ovPDHLkV1kvs$$J0* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.76.png b/test-integration/snapshots/signTransactionRecordobt/nanox.76.png deleted file mode 100644 index 581549e868bdb86416b96fba88d84e02da20f718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP){DiK0qf$d;2hfV zOs#%9g?27Z{Q6`>WON`xC!kdu-!5@vo5VZ)dA4qq*G8hd_7BZ%<)#ZzEpLY{&w$w; zhil!9#0ndVL`Gslx1iSRm(TBX>d7B}Ra<+Z7`F0LO&36#$y^pPXv3RKF!|JYx|fCE z6s&t!ZLX8(7}@tMIhIq8ExS!8Svdj!)2?mH_BU<3qXGbai}h_Q;~hNrTafdKB8$WY zIAHZ9ZvoC&eaTyZsSjs=S=Iu`DK$u306C%teF4(V=YSe~%RZCb<4-;M^xx5PkNynQ x;Qgq<`%wb`0000000000000000000veE|q@NC8(8s_Xy&002ovPDHLkV1kkZ(NF*Y diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.77.png b/test-integration/snapshots/signTransactionRecordobt/nanox.77.png deleted file mode 100644 index 2a064b241615e17cc5298d080fb2ec96970e2d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)bz7|tK=8Pf3&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeM zeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjw zrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-JKNP(P|G=4Qb zboDz5C*`6Q5#YeO!}_@lc7XLbqOB?n-T2*;MGfo;AR%B1H!dv{g>Gv000a)uITI!UqLss#X{_)yE7_EW+j@9 z(vMt8t>ntKrC3-V77e!8%f1mXTvhv6;x6`bKp1!9EbH9#Dt!5RBhQ+Ivn#`m8^p`l zE&|FcnBoo2?l}RIFaQ7m00000000000002M!}$dXt>A2GsY9s%0000& diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.78.png b/test-integration/snapshots/signTransactionRecordobt/nanox.78.png deleted file mode 100644 index 8be056788bad1cdf3dbbc255c0ea4d4cd3b05775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.80.png b/test-integration/snapshots/signTransactionRecordobt/nanox.80.png deleted file mode 100644 index d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.83.png b/test-integration/snapshots/signTransactionRecordobt/nanox.83.png deleted file mode 100644 index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.84.png b/test-integration/snapshots/signTransactionRecordobt/nanox.84.png deleted file mode 100644 index 3b9365b95359459d5c7c29e0c895ab4dbc4a1404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmV;q14jIbP)+}xCv^|u#_&s^JhY0a#mI!d}Z>* zodBbV=+BB-$8j)~ti>yVnL7$$o%@N28i8<8J2qZi$Egh%yR@rk{~_g|km51M7|;lYpa3b?0Ix=Ip_wIGw-{bg z`5ur6*fZmH+V7oQ$98IoT@KoS%lgY_M_*e!*P;aDAsWrYio8Q;7QV-JG0KIv_CEsb z$NB{WOL%n%dIMSM%es)SCGn=HD2n2~-@`~>>E zkVR`j5&*cb6w$-Z3;R44EVa(095hi5DULWjp`u&d{pudjC}-W(6#g>j_<3tD@SNjMgz zTT)o5)qj#&{U?d6{@D>zg9qB>pZ}r>*M6F|Pti;b3nXJ65U8vgd)m_lyXstN{SZ<3 z`BV6d-QX|18`|iz5}XH$Wu@tBbUO-A7W2eOSuE*A?ahQQWyX?=_S}PU4mIZ~Ss7+v zQbsu%rVX&~Co_Vn&n+-4K5|Ma9Icn3eAj?=Qp%I~q0P-K&Sh^k)Kaucaf?`W%sWc# zeEi_m-q`*~l1*|fH}-dRy*pz$0oCFf*~N~gGPiry5qI(Rd1JjB`Y^QtMNt%mA666; zD}`DIT$t1foR;b)Ze$%qgGVjm5Ny(R#(9F9eX&JspROrh>*-Etsx=i_%hYB&zFH7D z%M$5{2}pLt_ObDXTxm=;LFf5xXtQ`F+r9zg>Rae@V~d0#YeMrrm!#k9;|GJ0Snar2iO~tyXSC96)|-8n;UAd^Yg-uegB=IL z9>004g7hw;Dby4pW;&VdH} zK}yZ8LR+X-u;bL$W1TM%>b0Y2c8hHU>CRd?}EhQtc-s5c{CJqipXnK zU*T@$oV)hAlGzAdUuBT4a(h>5i$-v@b-VMU@|WGP4Oc+G$`YxZ_aGPOsDgS)YIcTF zZq$$8OiF3IXo{T)NaI~1kQ?I?f3#Y&{jf4oJd0*3bCE45V9PULwncTIyPk}ysXR4j zv%7f(Y-HrjnNI(Ar>QwBQyA`HG7?aGU)QW$Xp8e&jo_R?vU_$zvzH{Xcgsyo22nS< zUC)xoGV-zb!0-e)cMCefu4&8kAKEg<0RV4t{nVA$&uw`UUl7^lHT{)M*mKX{{6_o{m8-n$N>NV o0000000000000000D!;g8;Amvh5cI$P5=M^07*qoM6N<$f(oYX0ssI2 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.86.png b/test-integration/snapshots/signTransactionRecordobt/nanox.86.png deleted file mode 100644 index ac035785ab270750e21ac3a27b538062c3c97cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)V*el%xaz0000000000FhR~a=e&9p z1AML?fG4q}KX^_6PW4}}*V>T`5i9_;3=>rS6fOVhQTK$yL$Layh zV6#wA^;5VNaG>OltA1?49r*zO0002iV9(84+=S(@9)GLKIdAul@4r&5y~Ih^8?692 zFOF$q3vFtxsAjgM`n2}M@m)GO*TF`$AT=xPQav?2kPp+3j>o??qQ$?Zop&N%?d$#S zYqYg!WQ-vZm#1JgfQ?qb-`Q?+GuZHl2|&NNHvi1oxdZEcqX1lKa6*Jk-UsuBp!3#v_xVx>$q zlNHT&vmx(24=-J-A3)x*@;r-ic6^Omv8;-yB53-3QVS6k^dgQ{b{_cMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.89.png b/test-integration/snapshots/signTransactionRecordobt/nanox.89.png deleted file mode 100644 index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Sat, 26 Nov 2022 12:42:21 +0100 Subject: [PATCH 64/83] Modify string in decrypt --- Makefile | 2 +- src/decodeDH.c | 2 +- .../snapshots/decodeMessage/nanos.02.png | Bin 339 -> 282 bytes .../snapshots/decodeMessage/nanos.46.png | Bin 339 -> 282 bytes .../snapshots/decodeMessage/nanox.02.png | Bin 401 -> 346 bytes .../snapshots/decodeMessage/nanox.48.png | Bin 401 -> 346 bytes 6 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9949f1dd..8900be28 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ APPVERSION_M = 1 APPVERSION_N = 0 -APPVERSION_P = 3 +APPVERSION_P = 4 NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" diff --git a/src/decodeDH.c b/src/decodeDH.c index b906b172..c157f205 100644 --- a/src/decodeDH.c +++ b/src/decodeDH.c @@ -91,7 +91,7 @@ static void decodeNewfundsreqMemo_ui_runStep() { UI_STEP_BEGIN(ctx->ui_step, this_fn); UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1) { - ui_displayPaginatedText("Decode shared", "secret", this_fn); + ui_displayPaginatedText("Decrypt content", "", this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE2) { ui_displayPaginatedText("Interpreting", "the message as Request funds", this_fn); diff --git a/test-integration/snapshots/decodeMessage/nanos.02.png b/test-integration/snapshots/decodeMessage/nanos.02.png index 18da61d22727989bf2700ab24c4a2b91d5876544..4a84ea79b19febddeb4fa290f1fc0a9d4cba8c13 100644 GIT binary patch delta 255 zcmV20091#$1tUR`xbr=Qw9|x0b+QmFMG9d0lY>D^+@5SvdAs@Wb(S%xBAm)iC0l) z!coU>N3A8I3BZ$91$1u8VgKcp!UcsJC`gm| zgJDdG0001hW}HWKwYBWX*r z9eB8Ta%J0BsoH&h0rHfiSd{l9n~@7BA*H&KxxQS5@^Lz`$o9D@P`^19l0yAXn1qG; zT|o}UgB*+mC&5VmTGHWPJ{`d38Ab(FO-=dNN&Sdidkl+XZ>h?mrD-}1zRkEQSVOH! z#EBJW%$fk%)H1B99_y5vxx1n3G&L`CqeED&SD81R000000AL(1)}q4+|HrW=00000 LNkvXXu0mjfc3zNk diff --git a/test-integration/snapshots/decodeMessage/nanos.46.png b/test-integration/snapshots/decodeMessage/nanos.46.png index 18da61d22727989bf2700ab24c4a2b91d5876544..4a84ea79b19febddeb4fa290f1fc0a9d4cba8c13 100644 GIT binary patch delta 255 zcmV20091#$1tUR`xbr=Qw9|x0b+QmFMG9d0lY>D^+@5SvdAs@Wb(S%xBAm)iC0l) z!coU>N3A8I3BZ$91$1u8VgKcp!UcsJC`gm| zgJDdG0001hW}HWKwYBWX*r z9eB8Ta%J0BsoH&h0rHfiSd{l9n~@7BA*H&KxxQS5@^Lz`$o9D@P`^19l0yAXn1qG; zT|o}UgB*+mC&5VmTGHWPJ{`d38Ab(FO-=dNN&Sdidkl+XZ>h?mrD-}1zRkEQSVOH! z#EBJW%$fk%)H1B99_y5vxx1n3G&L`CqeED&SD81R000000AL(1)}q4+|HrW=00000 LNkvXXu0mjfc3zNk diff --git a/test-integration/snapshots/decodeMessage/nanox.02.png b/test-integration/snapshots/decodeMessage/nanox.02.png index 69ea1320dab303f5042d49f9f7c140fc45e3aa31..d2f0dd6732095ec340cf121f8399dba68b647931 100644 GIT binary patch delta 319 zcmbQpe2ZyGv!0vT!-arE)4F9x_qy;V<}6*%v+i3Dt^iDQdU^KHR&bu-rWnDZ(nG?QJ<{H1~gU2AV+qBZr={W z`MJ;XnUkB#U8H9mNDo=i_9@fzR#5bXSvQ~VUZ}b!?Xiw^z~ddg8CwUF8YqzokPfKR`Em^oRr?5@; zKikA@DT(z~UOmq&{$Jase#)$W*PIY}&%DQu#Rs-EOF{ez_3iwhOuJQYC%b>%D-06x MboFyt=akR{0HxHFkN^Mx delta 374 zcmV-+0g3+F0+9odB!5^*L_t(|obB6P5`r)cM$ziHlkR^>-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g348=vj6}9 diff --git a/test-integration/snapshots/decodeMessage/nanox.48.png b/test-integration/snapshots/decodeMessage/nanox.48.png index 69ea1320dab303f5042d49f9f7c140fc45e3aa31..d2f0dd6732095ec340cf121f8399dba68b647931 100644 GIT binary patch delta 319 zcmbQpe2ZyGv!0vT!-arE)4F9x_qy;V<}6*%v+i3Dt^iDQdU^KHR&bu-rWnDZ(nG?QJ<{H1~gU2AV+qBZr={W z`MJ;XnUkB#U8H9mNDo=i_9@fzR#5bXSvQ~VUZ}b!?Xiw^z~ddg8CwUF8YqzokPfKR`Em^oRr?5@; zKikA@DT(z~UOmq&{$Jase#)$W*PIY}&%DQu#Rs-EOF{ez_3iwhOuJQYC%b>%D-06x MboFyt=akR{0HxHFkN^Mx delta 374 zcmV-+0g3+F0+9odB!5^*L_t(|obB6P5`r)cM$ziHlkR^>-HQ**FttCSKq>w3o+m*J zofIMjbq)Xk00000|KfG`0FDbGtgpTIH;&{C$q9&4A5)wLy$M*eAE&#xQo{T00UVSh zS}yOZLI`pFu@@z%o&mT`?J!q7{GIL@kmOo1^$WeLAjf6sB!8Z9BL)Bf06aqY)i?5h zj|>j@=^Jj5bn3ZFGF&nNHTh$cWR3l>#SYcD3s<^@-W-Nfuc_81GhXD2#cehtG{!u$ z7mX5B({c1hsLi6cIgF9V`_KvK_+?NFwbl@OUrDKH41NXG=K(hFy-L--HdQZ00000002NYUqvJ! Un$Bmy0{{R307*qoM6N<$g348=vj6}9 From 86760e807f0f4490a610f94244362dcdf40bfed3 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 19 Dec 2022 17:40:28 +0100 Subject: [PATCH 65/83] Extend addnft and remnft token_id parameter Splits the mapping into multiple screens --- Makefile | 2 +- ledgerjs-fio/package.json | 2 +- .../transactionTemplates/commands.ts | 25 ----------- .../transactionTemplates/template_addnft.ts | 37 ++++++++++------ .../transactionTemplates/template_remnft.ts | 37 ++++++++++------ src/signTransactionIntegrity.c | 36 +++++++-------- src/signTransactionParse.c | 41 ------------------ src/signTransactionParse.h | 1 - test-integration/signTransactionAddnft.js | 6 +-- test-integration/signTransactionRemnft.js | 6 +-- .../signTransactionAddnft/nanos.05.png | Bin 396 -> 268 bytes .../signTransactionAddnft/nanos.06.png | Bin 393 -> 317 bytes .../signTransactionAddnft/nanos.07.png | Bin 424 -> 338 bytes .../signTransactionAddnft/nanos.08.png | Bin 356 -> 339 bytes .../signTransactionAddnft/nanos.09.png | Bin 426 -> 393 bytes .../signTransactionAddnft/nanos.10.png | Bin 314 -> 424 bytes .../signTransactionAddnft/nanos.11.png | Bin 325 -> 356 bytes .../signTransactionAddnft/nanos.12.png | Bin 453 -> 426 bytes .../signTransactionAddnft/nanos.13.png | Bin 396 -> 314 bytes .../signTransactionAddnft/nanos.14.png | Bin 419 -> 325 bytes .../signTransactionAddnft/nanos.15.png | Bin 393 -> 453 bytes .../signTransactionAddnft/nanos.16.png | Bin 424 -> 268 bytes .../signTransactionAddnft/nanos.17.png | Bin 356 -> 317 bytes .../signTransactionAddnft/nanos.18.png | Bin 426 -> 338 bytes .../signTransactionAddnft/nanos.19.png | Bin 314 -> 339 bytes .../signTransactionAddnft/nanos.20.png | Bin 325 -> 275 bytes .../signTransactionAddnft/nanos.21.png | Bin 453 -> 324 bytes .../signTransactionAddnft/nanos.22.png | Bin 396 -> 354 bytes .../signTransactionAddnft/nanos.23.png | Bin 419 -> 345 bytes .../signTransactionAddnft/nanos.24.png | Bin 412 -> 393 bytes .../signTransactionAddnft/nanos.25.png | Bin 393 -> 424 bytes .../signTransactionAddnft/nanos.26.png | Bin 424 -> 356 bytes .../signTransactionAddnft/nanos.27.png | Bin 356 -> 426 bytes .../signTransactionAddnft/nanos.28.png | Bin 426 -> 314 bytes .../signTransactionAddnft/nanos.29.png | Bin 0 -> 325 bytes .../signTransactionAddnft/nanos.30.png | Bin 0 -> 453 bytes .../signTransactionAddnft/nanos.31.png | Bin 0 -> 268 bytes .../signTransactionAddnft/nanos.32.png | Bin 0 -> 317 bytes .../signTransactionAddnft/nanos.33.png | Bin 0 -> 338 bytes .../signTransactionAddnft/nanos.34.png | Bin 0 -> 339 bytes .../signTransactionAddnft/nanos.35.png | Bin 0 -> 275 bytes .../signTransactionAddnft/nanos.36.png | Bin 0 -> 324 bytes .../signTransactionAddnft/nanos.37.png | Bin 0 -> 354 bytes .../signTransactionAddnft/nanos.38.png | Bin 0 -> 345 bytes .../signTransactionAddnft/nanos.39.png | Bin 0 -> 269 bytes .../signTransactionAddnft/nanos.40.png | Bin 0 -> 322 bytes .../signTransactionAddnft/nanos.41.png | Bin 0 -> 342 bytes .../signTransactionAddnft/nanos.42.png | Bin 0 -> 345 bytes .../signTransactionAddnft/nanos.43.png | Bin 0 -> 393 bytes .../signTransactionAddnft/nanos.44.png | Bin 0 -> 424 bytes .../signTransactionAddnft/nanos.45.png | Bin 0 -> 356 bytes .../signTransactionAddnft/nanos.46.png | Bin 0 -> 426 bytes .../signTransactionAddnft/nanox.06.png | Bin 543 -> 329 bytes .../signTransactionAddnft/nanox.07.png | Bin 462 -> 376 bytes .../signTransactionAddnft/nanox.08.png | Bin 937 -> 391 bytes .../signTransactionAddnft/nanox.09.png | Bin 472 -> 403 bytes .../signTransactionAddnft/nanox.10.png | Bin 476 -> 462 bytes .../signTransactionAddnft/nanox.11.png | Bin 405 -> 937 bytes .../signTransactionAddnft/nanox.12.png | Bin 379 -> 472 bytes .../signTransactionAddnft/nanox.13.png | Bin 397 -> 476 bytes .../signTransactionAddnft/nanox.14.png | Bin 950 -> 405 bytes .../signTransactionAddnft/nanox.15.png | Bin 409 -> 379 bytes .../signTransactionAddnft/nanox.16.png | Bin 543 -> 397 bytes .../signTransactionAddnft/nanox.17.png | Bin 596 -> 950 bytes .../signTransactionAddnft/nanox.18.png | Bin 462 -> 409 bytes .../signTransactionAddnft/nanox.19.png | Bin 937 -> 329 bytes .../signTransactionAddnft/nanox.20.png | Bin 472 -> 376 bytes .../signTransactionAddnft/nanox.21.png | Bin 476 -> 391 bytes .../signTransactionAddnft/nanox.22.png | Bin 405 -> 403 bytes .../signTransactionAddnft/nanox.23.png | Bin 379 -> 341 bytes .../signTransactionAddnft/nanox.24.png | Bin 397 -> 387 bytes .../signTransactionAddnft/nanox.25.png | Bin 950 -> 425 bytes .../signTransactionAddnft/nanox.26.png | Bin 409 -> 407 bytes .../signTransactionAddnft/nanox.27.png | Bin 543 -> 462 bytes .../signTransactionAddnft/nanox.28.png | Bin 596 -> 937 bytes .../signTransactionAddnft/nanox.29.png | Bin 793 -> 472 bytes .../signTransactionAddnft/nanox.30.png | Bin 663 -> 476 bytes .../signTransactionAddnft/nanox.31.png | Bin 462 -> 405 bytes .../signTransactionAddnft/nanox.32.png | Bin 937 -> 379 bytes .../signTransactionAddnft/nanox.33.png | Bin 472 -> 397 bytes .../signTransactionAddnft/nanox.34.png | Bin 476 -> 950 bytes .../signTransactionAddnft/nanox.35.png | Bin 405 -> 409 bytes .../signTransactionAddnft/nanox.36.png | Bin 0 -> 329 bytes .../signTransactionAddnft/nanox.37.png | Bin 0 -> 376 bytes .../signTransactionAddnft/nanox.38.png | Bin 0 -> 391 bytes .../signTransactionAddnft/nanox.39.png | Bin 0 -> 403 bytes .../signTransactionAddnft/nanox.40.png | Bin 0 -> 341 bytes .../signTransactionAddnft/nanox.41.png | Bin 0 -> 387 bytes .../signTransactionAddnft/nanox.42.png | Bin 0 -> 425 bytes .../signTransactionAddnft/nanox.43.png | Bin 0 -> 407 bytes .../signTransactionAddnft/nanox.44.png | Bin 0 -> 336 bytes .../signTransactionAddnft/nanox.45.png | Bin 0 -> 384 bytes .../signTransactionAddnft/nanox.46.png | Bin 0 -> 843 bytes .../signTransactionAddnft/nanox.47.png | Bin 0 -> 525 bytes .../signTransactionAddnft/nanox.48.png | Bin 0 -> 404 bytes .../signTransactionAddnft/nanox.49.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanox.50.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanox.51.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanox.52.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanox.53.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanos.05.png | Bin 396 -> 268 bytes .../signTransactionRemnft/nanos.06.png | Bin 393 -> 317 bytes .../signTransactionRemnft/nanos.07.png | Bin 424 -> 338 bytes .../signTransactionRemnft/nanos.08.png | Bin 356 -> 339 bytes .../signTransactionRemnft/nanos.09.png | Bin 426 -> 393 bytes .../signTransactionRemnft/nanos.10.png | Bin 314 -> 424 bytes .../signTransactionRemnft/nanos.11.png | Bin 368 -> 356 bytes .../signTransactionRemnft/nanos.12.png | Bin 453 -> 426 bytes .../signTransactionRemnft/nanos.13.png | Bin 396 -> 314 bytes .../signTransactionRemnft/nanos.14.png | Bin 419 -> 368 bytes .../signTransactionRemnft/nanos.15.png | Bin 393 -> 453 bytes .../signTransactionRemnft/nanos.16.png | Bin 424 -> 268 bytes .../signTransactionRemnft/nanos.17.png | Bin 356 -> 317 bytes .../signTransactionRemnft/nanos.18.png | Bin 426 -> 338 bytes .../signTransactionRemnft/nanos.19.png | Bin 314 -> 339 bytes .../signTransactionRemnft/nanos.20.png | Bin 368 -> 275 bytes .../signTransactionRemnft/nanos.21.png | Bin 453 -> 324 bytes .../signTransactionRemnft/nanos.22.png | Bin 396 -> 354 bytes .../signTransactionRemnft/nanos.23.png | Bin 419 -> 345 bytes .../signTransactionRemnft/nanos.24.png | Bin 412 -> 393 bytes .../signTransactionRemnft/nanos.25.png | Bin 393 -> 424 bytes .../signTransactionRemnft/nanos.26.png | Bin 424 -> 356 bytes .../signTransactionRemnft/nanos.27.png | Bin 356 -> 426 bytes .../signTransactionRemnft/nanos.28.png | Bin 426 -> 314 bytes .../signTransactionRemnft/nanos.29.png | Bin 0 -> 368 bytes .../signTransactionRemnft/nanos.30.png | Bin 0 -> 453 bytes .../signTransactionRemnft/nanos.31.png | Bin 0 -> 268 bytes .../signTransactionRemnft/nanos.32.png | Bin 0 -> 317 bytes .../signTransactionRemnft/nanos.33.png | Bin 0 -> 338 bytes .../signTransactionRemnft/nanos.34.png | Bin 0 -> 339 bytes .../signTransactionRemnft/nanos.35.png | Bin 0 -> 275 bytes .../signTransactionRemnft/nanos.36.png | Bin 0 -> 324 bytes .../signTransactionRemnft/nanos.37.png | Bin 0 -> 354 bytes .../signTransactionRemnft/nanos.38.png | Bin 0 -> 345 bytes .../signTransactionRemnft/nanos.39.png | Bin 0 -> 269 bytes .../signTransactionRemnft/nanos.40.png | Bin 0 -> 322 bytes .../signTransactionRemnft/nanos.41.png | Bin 0 -> 346 bytes .../signTransactionRemnft/nanos.42.png | Bin 0 -> 345 bytes .../signTransactionRemnft/nanos.43.png | Bin 0 -> 393 bytes .../signTransactionRemnft/nanos.44.png | Bin 0 -> 424 bytes .../signTransactionRemnft/nanos.45.png | Bin 0 -> 356 bytes .../signTransactionRemnft/nanos.46.png | Bin 0 -> 426 bytes .../signTransactionRemnft/nanox.06.png | Bin 543 -> 329 bytes .../signTransactionRemnft/nanox.07.png | Bin 462 -> 376 bytes .../signTransactionRemnft/nanox.08.png | Bin 937 -> 391 bytes .../signTransactionRemnft/nanox.09.png | Bin 472 -> 403 bytes .../signTransactionRemnft/nanox.10.png | Bin 476 -> 462 bytes .../signTransactionRemnft/nanox.11.png | Bin 405 -> 937 bytes .../signTransactionRemnft/nanox.12.png | Bin 379 -> 472 bytes .../signTransactionRemnft/nanox.13.png | Bin 466 -> 476 bytes .../signTransactionRemnft/nanox.14.png | Bin 950 -> 405 bytes .../signTransactionRemnft/nanox.15.png | Bin 409 -> 379 bytes .../signTransactionRemnft/nanox.16.png | Bin 543 -> 466 bytes .../signTransactionRemnft/nanox.17.png | Bin 596 -> 950 bytes .../signTransactionRemnft/nanox.18.png | Bin 462 -> 409 bytes .../signTransactionRemnft/nanox.19.png | Bin 937 -> 329 bytes .../signTransactionRemnft/nanox.20.png | Bin 472 -> 376 bytes .../signTransactionRemnft/nanox.21.png | Bin 476 -> 391 bytes .../signTransactionRemnft/nanox.22.png | Bin 405 -> 403 bytes .../signTransactionRemnft/nanox.23.png | Bin 379 -> 341 bytes .../signTransactionRemnft/nanox.24.png | Bin 466 -> 387 bytes .../signTransactionRemnft/nanox.25.png | Bin 950 -> 425 bytes .../signTransactionRemnft/nanox.26.png | Bin 409 -> 407 bytes .../signTransactionRemnft/nanox.27.png | Bin 543 -> 462 bytes .../signTransactionRemnft/nanox.28.png | Bin 596 -> 937 bytes .../signTransactionRemnft/nanox.29.png | Bin 586 -> 472 bytes .../signTransactionRemnft/nanox.30.png | Bin 462 -> 476 bytes .../signTransactionRemnft/nanox.31.png | Bin 937 -> 405 bytes .../signTransactionRemnft/nanox.32.png | Bin 472 -> 379 bytes .../signTransactionRemnft/nanox.33.png | Bin 476 -> 466 bytes .../signTransactionRemnft/nanox.34.png | Bin 405 -> 950 bytes .../signTransactionRemnft/nanox.35.png | Bin 0 -> 409 bytes .../signTransactionRemnft/nanox.36.png | Bin 0 -> 329 bytes .../signTransactionRemnft/nanox.37.png | Bin 0 -> 376 bytes .../signTransactionRemnft/nanox.38.png | Bin 0 -> 391 bytes .../signTransactionRemnft/nanox.39.png | Bin 0 -> 403 bytes .../signTransactionRemnft/nanox.40.png | Bin 0 -> 341 bytes .../signTransactionRemnft/nanox.41.png | Bin 0 -> 387 bytes .../signTransactionRemnft/nanox.42.png | Bin 0 -> 425 bytes .../signTransactionRemnft/nanox.43.png | Bin 0 -> 407 bytes .../signTransactionRemnft/nanox.44.png | Bin 0 -> 336 bytes .../signTransactionRemnft/nanox.45.png | Bin 0 -> 384 bytes .../signTransactionRemnft/nanox.46.png | Bin 0 -> 420 bytes .../signTransactionRemnft/nanox.47.png | Bin 0 -> 404 bytes .../signTransactionRemnft/nanox.48.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanox.49.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanox.50.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanox.51.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanox.52.png | Bin 0 -> 405 bytes 189 files changed, 74 insertions(+), 119 deletions(-) create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.52.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanox.53.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.29.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.30.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.31.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.32.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.33.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.34.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.35.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.36.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.37.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.38.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.39.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.40.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.41.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.42.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.43.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.44.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.45.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanos.46.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.35.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.36.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.37.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.38.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.39.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.40.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.41.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.42.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.43.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.44.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.45.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.46.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.47.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.48.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.49.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.50.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.51.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanox.52.png diff --git a/Makefile b/Makefile index 8900be28..e818eef0 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ APPVERSION_M = 1 APPVERSION_N = 0 -APPVERSION_P = 4 +APPVERSION_P = 5 NANOS_ID = 1 WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" diff --git a/ledgerjs-fio/package.json b/ledgerjs-fio/package.json index 693e63df..27a3ec82 100644 --- a/ledgerjs-fio/package.json +++ b/ledgerjs-fio/package.json @@ -1,6 +1,6 @@ { "name": "ledgerjs-hw-app-fio", - "version": "1.0.2", + "version": "1.0.5", "files": [ "dist" ], diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts index 669d10e4..572c1744 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/commands.ts @@ -32,7 +32,6 @@ export const enum VALUE_FORMAT { VALUE_FORMAT_MEMO_HASH = 0x20, VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, - VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID = 0x22, } export const enum VALUE_VALIDATION { @@ -477,27 +476,3 @@ export function COMMAND_APPEND_DATA_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR_SHOW(key: txLen: varData.length, } } - -export function COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW(key: string, chainCode: VarlenAsciiString, contractAddr: VarlenAsciiString, tokenId: VarlenAsciiString): Command { - const varData: Buffer = Buffer.concat([ - varuint32_to_buf(chainCode.length), - Buffer.from(chainCode), - varuint32_to_buf(contractAddr.length), - Buffer.from(contractAddr), - varuint32_to_buf(tokenId.length), - Buffer.from(tokenId), - ]) - return { - ...defaultCommand, - command: COMMAND.APPEND_DATA, - constData: constDataAppendData( - VALUE_FORMAT.VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID, - VALUE_VALIDATION.VALUE_VALIDATION_NONE, BigInt(0), BigInt(0), - VALUE_POLICY.VALUE_SHOW_ON_DEVICE, - VALUE_STORAGE_COMPARE.DO_NOT_COMPARE, - key - ), - varData: varData, - txLen: varData.length, - } -} \ No newline at end of file diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts index 35ee59d8..d7772cb4 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_addnft.ts @@ -3,7 +3,6 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" @@ -28,8 +27,10 @@ function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("01" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), @@ -50,13 +51,17 @@ function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("02" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, - actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + COMMAND_SHOW_MESSAGE("Mapping 2", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[1].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[1].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[1].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), @@ -77,18 +82,24 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("03" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[0].metadata), 0, 128), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, - actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + COMMAND_SHOW_MESSAGE("Mapping 2", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[1].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[1].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[1].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[1].metadata), 0, 128), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, - actionData.nfts[2].contract_address, actionData.nfts[2].token_id), + COMMAND_SHOW_MESSAGE("Mapping 3", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[2].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[2].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[2].token_id), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].url), 0, 128), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].hash), 0, 64), COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW(Buffer.from(actionData.nfts[2].metadata), 0, 128), diff --git a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts index f3ea84ff..f2868ca6 100644 --- a/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts +++ b/ledgerjs-fio/src/interactions/transactionTemplates/template_remnft.ts @@ -3,7 +3,6 @@ import { Command, VALUE_STORAGE_COMPARE, COMMAND_APPEND_CONST_DATA, COMMAND_SHOW COMMAND_APPEND_DATA_BUFFER_DO_NOT_SHOW, COMMAND_APPEND_DATA_FIO_AMOUNT_SHOW, ADD_STORAGE_CHECK, templateAlternative, - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW, COMMAND_APPEND_DATA_STRING_WITH_LENGTH_DO_NOT_SHOW} from "./commands" import { uint64_to_buf } from "../../utils/serialize" @@ -28,8 +27,10 @@ function template1(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("01" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), ] } @@ -47,10 +48,14 @@ function template2(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("02" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, - actionData.nfts[1].contract_address, actionData.nfts[1].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), + COMMAND_SHOW_MESSAGE("Mapping 2", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[1].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[1].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[1].token_id), 0, 128), ] } @@ -68,12 +73,18 @@ function template3(chainId: HexString, tx: ParsedTransaction, parsedPath: ValidB return [ COMMAND_APPEND_CONST_DATA("03" as HexString), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 1", actionData.nfts[0].chain_code, - actionData.nfts[0].contract_address, actionData.nfts[0].token_id), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 2", actionData.nfts[1].chain_code, - actionData.nfts[1].contract_address, actionData.nfts[1].token_id), - COMMAND_APPEND_DATA_CHAIN_CODE_CONTRACT_ADDR_TOKEN_TD_SHOW("Mapping 3", actionData.nfts[2].chain_code, - actionData.nfts[2].contract_address, actionData.nfts[2].token_id), + COMMAND_SHOW_MESSAGE("Mapping 1", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[0].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[0].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[0].token_id), 0, 128), + COMMAND_SHOW_MESSAGE("Mapping 2", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[1].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[1].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[1].token_id), 0, 128), + COMMAND_SHOW_MESSAGE("Mapping 3", ""), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Chain code", Buffer.from(actionData.nfts[2].chain_code), 1, 10), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("Contract address", Buffer.from(actionData.nfts[2].contract_address), 1, 128), + COMMAND_APPEND_DATA_STRING_WITH_LENGTH_SHOW("NFT Token ID", Buffer.from(actionData.nfts[2].token_id), 0, 128), ] } diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index e7a0f428..2a92cbcc 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -134,24 +134,24 @@ static const uint8_t allowedHashes[][SHA_256_SIZE] = { {0xb5, 0xf3, 0xed, 0x5f, 0x34, 0x48, 0x5d, 0xa3, 0xa4, 0x93, 0x10, 0xf0, 0x09, 0x8d, 0xfb, 0x71, 0x34, 0x5e, 0x0f, 0x6a, 0xc8, 0x42, 0x16, 0xc0, 0xe1, 0xb9, 0xed, 0x11, 0x09, 0x7c, 0x22, 0x30}, - {0x2b, 0xf5, 0xc0, 0xd8, 0x8b, 0x3a, 0xab, 0x2c, 0x57, 0x14, 0xb3, - 0x3a, 0x40, 0x74, 0x44, 0x80, 0xcc, 0xc8, 0x1c, 0x14, 0xfb, 0xee, - 0xe4, 0xca, 0xa2, 0x51, 0x08, 0xe7, 0x48, 0xbb, 0x2e, 0xab}, - {0x47, 0xa9, 0x2f, 0x39, 0xb0, 0x66, 0x18, 0xfe, 0x2c, 0xe2, 0xba, - 0x83, 0xa0, 0x41, 0x96, 0x85, 0x50, 0xe6, 0x38, 0xd7, 0x31, 0x90, - 0x68, 0xe6, 0x23, 0xbd, 0x21, 0x09, 0x5b, 0xa7, 0x75, 0x89}, - {0x41, 0xe4, 0x03, 0x29, 0x48, 0x33, 0xe0, 0x11, 0x71, 0x8a, 0x51, - 0xa9, 0xf1, 0x31, 0x69, 0x2c, 0x28, 0xeb, 0xd2, 0x10, 0xc2, 0x1a, - 0xfc, 0x81, 0x28, 0x39, 0x75, 0xf4, 0x97, 0x90, 0xc7, 0xaf}, - {0x7f, 0xae, 0x99, 0x35, 0x0c, 0x5a, 0x76, 0xd2, 0xb4, 0x9d, 0xf4, - 0x29, 0xfe, 0x39, 0xd0, 0xda, 0x1f, 0xac, 0x24, 0x99, 0xd5, 0xf5, - 0x8c, 0x6c, 0x0f, 0xb6, 0x93, 0xff, 0x66, 0xa5, 0xf6, 0x65}, - {0xc1, 0x1e, 0x31, 0x06, 0x0b, 0x9d, 0x57, 0xec, 0x36, 0x10, 0x80, - 0x6d, 0x36, 0x89, 0x84, 0x45, 0xd5, 0x38, 0xc0, 0x4d, 0x7b, 0x98, - 0xf6, 0x63, 0xce, 0x5a, 0xfd, 0xba, 0xab, 0x94, 0xb7, 0xfb}, - {0x7f, 0xf3, 0x7e, 0xc1, 0xef, 0x86, 0x1f, 0xf7, 0x05, 0x61, 0x95, - 0x87, 0x34, 0xdf, 0xde, 0x31, 0x53, 0x0d, 0x80, 0x8c, 0x63, 0x2e, - 0xe6, 0x2f, 0xdf, 0xee, 0x54, 0xa7, 0xb5, 0xb5, 0x45, 0x86}, + {0x3b, 0x19, 0xb4, 0x63, 0xcd, 0xba, 0xd4, 0x75, 0x76, 0x78, 0x03, + 0x92, 0x17, 0xae, 0xd5, 0xea, 0x13, 0xe1, 0xe8, 0xab, 0xc8, 0xc8, + 0x35, 0x7b, 0x50, 0xc8, 0xef, 0x5c, 0x1c, 0x2e, 0xe1, 0x72}, + {0x39, 0x31, 0xa7, 0x1c, 0x07, 0x8e, 0x5e, 0x28, 0x20, 0x90, 0x3e, + 0x25, 0xe1, 0x81, 0x8f, 0xea, 0x46, 0xda, 0x16, 0xd9, 0xd2, 0x56, + 0xf3, 0x91, 0x7e, 0x5a, 0xe4, 0x5b, 0x94, 0x73, 0x45, 0xdf}, + {0xea, 0xa0, 0xae, 0x50, 0x58, 0x10, 0x80, 0x4b, 0x52, 0x1e, 0x91, + 0x0b, 0xc9, 0x64, 0xad, 0x73, 0x76, 0xd9, 0x37, 0xfa, 0x33, 0xab, + 0xcf, 0x1f, 0xf8, 0x71, 0x50, 0xf9, 0xba, 0xea, 0x4b, 0x2d}, + {0xeb, 0x12, 0x64, 0xc2, 0x90, 0xa6, 0x78, 0x09, 0xe1, 0x56, 0xdf, + 0x06, 0x15, 0xd6, 0x64, 0x7e, 0x47, 0xb9, 0x92, 0x95, 0x92, 0x2b, + 0x51, 0x40, 0xe8, 0xc9, 0x82, 0x7f, 0x68, 0x4f, 0xe6, 0xfc}, + {0x62, 0x62, 0x11, 0x4f, 0xad, 0x75, 0x96, 0x76, 0x7f, 0x65, 0x43, + 0xd0, 0x61, 0x91, 0x35, 0x1d, 0x6e, 0xbf, 0x64, 0xd6, 0x94, 0x1c, + 0x25, 0xbb, 0x59, 0xc1, 0x26, 0xe5, 0x94, 0xce, 0x89, 0xcf}, + {0x68, 0x4d, 0x19, 0x1b, 0xec, 0x18, 0x69, 0x3a, 0xc2, 0x2a, 0x79, + 0xe3, 0xbc, 0xe5, 0xa4, 0xc6, 0xe1, 0xa5, 0xb3, 0xfd, 0x6e, 0x04, + 0xb0, 0x33, 0xd4, 0x2f, 0xe6, 0x1b, 0x5d, 0x51, 0x7b, 0x80}, {0xf7, 0xf1, 0xe3, 0xcc, 0xda, 0xbc, 0x21, 0x9c, 0xb7, 0xef, 0xbe, 0x45, 0x6c, 0x87, 0xf3, 0x59, 0x76, 0xc9, 0x9c, 0x0d, 0xe9, 0xac, 0x10, 0x93, 0x46, 0xda, 0x1f, 0x91, 0xd3, 0x78, 0x1b, 0x53}, diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index ceeed58d..d9d79c34 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -159,43 +159,6 @@ static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, value + publicAddrStart); } -static void displayChainCodeContractAddressTokenId(const uint8_t *value, - uint8_t valueLen, - char display[MAX_DISPLAY_VALUE_LENGTH]) { - // Format: chain code length(varUINT), chain code, token code lenth (varUINT), token code, - // publicAddrLen (varUINT), publicAddr - TRACE_BUFFER(value, valueLen); - VALIDATE(valueLen >= 1, ERR_INVALID_DATA); - size_t chainCodeLen = value[0]; // always just one byte as it needs to be <=10 - VALIDATE(1 <= chainCodeLen && chainCodeLen <= 10, ERR_INVALID_DATA); - VALIDATE(valueLen >= chainCodeLen + 2, ERR_INVALID_DATA); - uint64_t contractAddressLen = 0; - size_t contractAddressLenLen = getNumberFromVarUInt(value + chainCodeLen + 1, - valueLen - (chainCodeLen + 1), - &contractAddressLen); - size_t contractAddrStart = 1 + chainCodeLen + contractAddressLenLen; - VALIDATE(1 <= contractAddressLen && contractAddressLen <= 128, ERR_INVALID_DATA); - VALIDATE(valueLen >= contractAddrStart + contractAddressLen + 1, ERR_INVALID_DATA); - size_t tokenIdLen = value[contractAddrStart + contractAddressLen]; - VALIDATE(valueLen == contractAddrStart + contractAddressLen + 1 + tokenIdLen, ERR_INVALID_DATA); - - str_validateTextBuffer(value + 1, chainCodeLen); - str_validateTextBuffer(value + contractAddrStart, contractAddressLen); - str_validateTextBuffer(value + contractAddrStart + contractAddressLen + 1, tokenIdLen); - - // prepare to display - ASSERT(chainCodeLen + 1 + contractAddressLen + 1 + tokenIdLen < MAX_DISPLAY_VALUE_LENGTH); - snprintf(display, - MAX_DISPLAY_VALUE_LENGTH, - "%.*s:%.*s:%.*s", - chainCodeLen, - value + 1, - (int) contractAddressLen, - value + contractAddrStart, - tokenIdLen, - value + contractAddrStart + contractAddressLen + 1); -} - //-------------------- NUMBER PARSING FUNCTIONS ---------------------- static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { @@ -353,10 +316,6 @@ void parseValueToDisplay(value_format_t format, displayChainCodeTokenCodePublicAddr(value, valueLen, display); break; } - case VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID: { - displayChainCodeContractAddressTokenId(value, valueLen, display); - break; - } default: THROW(ERR_INVALID_DATA); #undef CASE diff --git a/src/signTransactionParse.h b/src/signTransactionParse.h index f24d0d3d..e25793ec 100644 --- a/src/signTransactionParse.h +++ b/src/signTransactionParse.h @@ -20,7 +20,6 @@ typedef enum { // Special VALUE_FORMAT_MEMO_HASH = 0x20, VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21, - VALUE_FORMAT_CHAIN_CODE_CONTRACT_ADDR_TOKEN_ID = 0x22, } value_format_t; typedef enum { diff --git a/test-integration/signTransactionAddnft.js b/test-integration/signTransactionAddnft.js index bfc116cf..0456171c 100644 --- a/test-integration/signTransactionAddnft.js +++ b/test-integration/signTransactionAddnft.js @@ -221,7 +221,7 @@ testStep(" - - -", "Sign testnet transaction"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -270,7 +270,7 @@ testStep(" - - -", "Sign mainnet transaction - two addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -327,7 +327,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/signTransactionRemnft.js b/test-integration/signTransactionRemnft.js index 5c32bac4..b1ff569b 100644 --- a/test-integration/signTransactionRemnft.js +++ b/test-integration/signTransactionRemnft.js @@ -218,7 +218,7 @@ testStep(" - - -", "Sign testnet transaction"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -261,7 +261,7 @@ testStep(" - - -", "Sign mainnet transaction - two addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) @@ -309,7 +309,7 @@ testStep(" - - -", "Sign mainnet transaction - three addresses"); // Lets sign the transaction with ledger const chainId = networkInfo[network].chainId const ledgerPromise = app.signTransaction({path, chainId, tx}) - await device.review([1, 1, 2, 1, 1, 1, 1, 2], "Review sign"); + await device.review([1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2], "Review sign"); const ledgerResponse = await ledgerPromise; const signatureLedger = Signature.fromHex(ledgerResponse.witness.witnessSignatureHex) diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.05.png b/test-integration/snapshots/signTransactionAddnft/nanos.05.png index f2ec3f21b2b47d8719168decea9cd5eab02c9c43..3408c80d8127b4e38af3c050ef877da8e34910b9 100644 GIT binary patch delta 241 zcmV?=E=FWlM^^e`=u9CH6`51)0fa)_+ErBr<- zp%CwKM2FF3(W%N{{n>2B1KC~ye?YGR)BLP;y8P4E$SB`3>T0pK0(NDo^nu9+6ut+` z3TA_qcedAwHB&F*>||PJnC?7m$n694eu^)vq2Fd6jgKKKKwf)Yr5$fwQiIjM5_+JI r9%wrEm*DIusV1rq00000005B(>r{Ccpo_<+00000NkvXXu0mjfar<+j delta 370 zcmV-&0ge8Q0*nKYBYy!?NklMHB$!q$9S8}%5mO?$tbmi5eikpueXe> zZ$vUgHb>DcepYk|h4Nl<#)bGk0S~~=0df1(U#t)z#66Hr&-{h%`kzKG2vZklbO z(;8rj0~Ar{F${ztq2W?WEOJziT4ZmLQ6eytpET3 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.06.png b/test-integration/snapshots/signTransactionAddnft/nanos.06.png index b42d7b08612d408956ed509afd4d555a52e6af02..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$I1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; delta 366 zcmV-!0g?W_0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ`HvL00Ak4Yq} zDoUpfturAD_||eJm)on?cA;uY&HiOnossywn+d9b5%_i(_7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAk diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.08.png b/test-integration/snapshots/signTransactionAddnft/nanos.08.png index c9de06047218fee6710335b7dfa11e5d192ae931..afef6551231ed55979476b9d939ae8bfa0fcfa4c 100644 GIT binary patch delta 312 zcmV-80muI20@DJJB!3!7L_t(|ob8$24udcVh3hik|AD=57hR0DKssBXxbwveT@jQY zHD@US008(`7DeCtmX?(`+_&o`ti&&cA7NF9cmv@g?_ffSY%%n z)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MTC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ z^3atC6F?G8^)ciKTYzY)Cx?j|szfN&lVkb`Fi<@K00000fH@yYqpMgtE!LI*0000< KMNUMnLSTX}ZDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTXl-@d^B diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.10.png b/test-integration/snapshots/signTransactionAddnft/nanos.10.png index 06140342c291c111e9c068e5607f9a041bc53592..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAi0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1oUPf@lB$ diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.11.png b/test-integration/snapshots/signTransactionAddnft/nanos.11.png index 878cf2d52b90e930532518d4938b65c3e25c8659..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0d0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{muK5B!3J^L_t(|ob8#x3dA4`MD4Qu{}1-y9s~($)s|?c?z~egL1hvX zjLs242qAC;uWw04iJCT)-9_}T^#<;ci5`EC(*^I2Gq)*6qkC&mQ_$|ZCr}+w&EPwN=Kxtzov5)g9YupwgfnAl^M6)$k2`FrzB)G~rTUW? z5|-*ug+8!{KClF_5(HoAF{rOTW6lSAKxBaf8cn2STrY}u5tEdS%yw(@%3k(O%iro$ zy5Qalv##gWGr(YLv)c{r&aj;KoPc>tn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU7 w8j1dK*sd?a`y&8QHg#bNGKLNygpmK`2ZI8r>x(pDPXGV_07*qoM6N<$f;v};I{*Lx diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.12.png b/test-integration/snapshots/signTransactionAddnft/nanos.12.png index 961c0c11e4c94313a1d712ed345f8071086e1d23..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}r1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYupT7M7 delta 427 zcmV;c0aX5~1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1n*9*rxyh diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.13.png b/test-integration/snapshots/signTransactionAddnft/nanos.13.png index f2ec3f21b2b47d8719168decea9cd5eab02c9c43..06140342c291c111e9c068e5607f9a041bc53592 100644 GIT binary patch delta 287 zcmV+)0pR|O1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1nK$f=mDa delta 369 zcmV-%0gnE<0*nKYB!5#$L_t(|ob8!G62l+}MYYr1|G-(K3p-A#NDz%M&3`+ws09Tj zApigX0P8sRaO@Wn^~fW-Q`XSQYyFfr5;vvdvFmlmc$>`1ao&c>D7AzU3RS|dw~VZB zL^4D+N6{>PR&)u4@?LVrh4?-J55Ud=ar@f3KK^wWnMG?xJAeG0fLrlo`h-gdF!|tY zK~g9j*`FsIL&l=s09C&{eDGiI0JpUL?J@-2LC*QPxqf!UJ!9O&y$1sySVCDp&KZk* zI`MTIawyMHk__VV$UZp-kj0i(lR0;TMPRkALUH6aYK9Y1N}8(+XB9~` zv@T0Xv|2*`iE20hWT%}=?%%E_&*k4!)I`albgR;>q=$hMP*>sopfd-)h|MH!nr)%e z8eoY76jA6g41^$|;ZjO0a#W65WN(pCCClJ%x8#_lBBR9%0RR9106-5P-ofs`TW#qkC&mQ_$|ZCr}+w&EPwN=Kxtzov5)g9YupwgfnAl^M6)$k2`FrzB)G~rTUW? z5|-*ug+8!{KClF_5(HoAF{rOTW6lSAKxBaf8cn2STrY}u5tEdS%yw(@%3k(O%iro$ zy5Qalv##gWGr(YLv)c{r&aj;KoPc>tn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU7 w8j1dK*sd?a`y&8QHg#bNGKLNygpmK`2ZI8r>x(pDPXGV_07*qoM6N<$g73$O`v3p{ delta 393 zcmV;40e1ey0;22nRUw^35D{fHKSIny#nk_n=cE$037GPugiBX)5s`l7Jq|}_rr=SU@A2iJ9$4W z8USWLNZmvVg(H_LiqUp~%tfsUs=Rru!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9 zg!29|U?B3|#1w7#1D|82Zi39|OrjsT2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o z;&oxgVneDTDSwWZRSJm~BTN~*l;h_M=E_Po`OdZeifZWVP`Y{QjIwA~K>rsE%X6_V zHJO}PoNmJQx02)3Sk!5?Fh2lfo?+f&ik<1i nvN@EBj215h0000004!hPM*_v-3`+z60000?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1lJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ?=E=FWlM^^e`=u9CH6`51)0fa)_+ErBr<- zp%CwKM2FF3(W%N{{n>2B1KC~ye?YGR)BLP;y8P4E$SB`3>T0pK0(NDo^nu9+6ut+` z3TA_qcedAwHB&F*>||PJnC?7m$n694eu^)vq2Fd6jgKKKKwf)Yr5$fwQiIjM5_+JI r9%wrEm*DIusV1rq00000005B(>r{Ccpo_<+00000NkvXXu0mjfj8}8L delta 399 zcmV;A0dW3|0;mI!BYy#JNkl?3;%h4x(i>&+7iw%Yd zq%8z?KE5Sc0qXqX{l%q5LRV|(Y618pu6hh#y(hqL{b3(ZSAWc4F#wab_1@P9_2KEN z0NMH85hT}kcWSuE{6q$b0V}|tA=h#m83?!jNtq`sJ(oxO(n&BKj0O_}$W#o@u>?

Ag|UPjXORE@Lw1*fByo2u*XuHWCqoC>di zTK1K-0P^3M0&2;rg1G$Vsfet!rO>%e`corTn3#h6ARI(FfN*TMU_D*D5VxYho4bwZ tX;enPzov=1Q0}ZLpfjcb!!YLO3*+@TcC{fEO#lD@00>D%PDHLkV1h(C!ae{1 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.17.png b/test-integration/snapshots/signTransactionAddnft/nanos.17.png index c9de06047218fee6710335b7dfa11e5d192ae931..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%O0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m`HvL00Ak4Yq} zDoUpfturAD_||eJm)on?cA;uY&HiOnossywn+d9b5%_i(_4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY>V800f diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.19.png b/test-integration/snapshots/signTransactionAddnft/nanos.19.png index 06140342c291c111e9c068e5607f9a041bc53592..afef6551231ed55979476b9d939ae8bfa0fcfa4c 100644 GIT binary patch delta 312 zcmV-80muHj0@DJJB!3!7L_t(|ob8$24udcVh3hik|AD=57hR0DKssBXxbwveT@jQY zHD@US008(`7DeCtmX?(`+_&o`ti&&cA7NF9cmv@g?_ffSY%%n z)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MTC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ z^3atC6F?G8^)ciKTYzY)Cx?j|szfN&lVkb`Fi<@K00000fH@yYqpMgtE!LI*0000< KMNUMnLSTaXFq6Ij delta 287 zcmV+)0pR}A0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1g{Of|39L diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.20.png b/test-integration/snapshots/signTransactionAddnft/nanos.20.png index 878cf2d52b90e930532518d4938b65c3e25c8659..448e15cb013d3f7ac6c882885d276e564a5ac8fd 100644 GIT binary patch delta 248 zcmV5EO23`W%#jxN`iCGuCaiA z5gkPU02s$R@$OHhd*<$eSDizn_xL4mw5(?bde=Wm7kdo|Z^J!{v~p0a93m&WHN8EE zZyeFj=x@=X%3}S|(xRi--T~v69=5Ii3aH~?pO6iNy z1{}N(!kDtf%9+z49kbm?@j;x*o=oc*re7X5yfQVt{rFf7{Wf!J{9LjFB>3D_xyGtR y4W|Dj^gtgy&@}g(V0J{RiSz*g00000AhH3|<%1I(Jy%}<0000uK5BYy!5Nkll-))2uk{A*kcl3DkJAP3jx)C@N8}*sP@aIQ`q}sRAPgVt z4b(^x9iw||P*c$Ex+hQ_P|e^wg69BPQJtuJhU+rl|AD=57bLjZLx7C7WB(T~1PjHs z6htBb006*=^SG{B)7Ws*ctUx)YAbKM?IUf+TBXO=0i@WmhGBjB9+;)_Jg%Fr-gxJv z1imP_6!vS20z6YS${WIVrEgMlp8<`8q~-{vSsg$ufw*b(<$vL=FnZUK4c{5C?H?OZ zJL1M%RaDgbTan9X4TC|PMgr@9oeq=2`jcofEUZ5j_#htmAQH*2n<^T=6=Ne7Kh5mp zqnk`1Nle;@aqPp3#>5Su)A|71zl7(JIllCuN6B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1gI=*uVe) diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.22.png b/test-integration/snapshots/signTransactionAddnft/nanos.22.png index f2ec3f21b2b47d8719168decea9cd5eab02c9c43..bd19cd612c78f35af1e360bb424de34f2271ee8d 100644 GIT binary patch delta 327 zcmV-N0l5B*1L6XZB!4MML_t(|ob8$24uc>Jg>jkh|G>ML7bNIfekv`a#PelYq*^G& z4m}G20000`@%@}1&t$`M9&;OI-n)G}9Q`f8+oqds&luCh(%I`&qcK|I_qPAI@QVXW zR&wNnR=i3^67a3&Oq$b6$8uw~t8Dh0Q7I$o8(oZ11&p9?hJS{?C)pAq)uz7v9WOv& z#Xi)l)DQ1A9*|})FOBob@(&VX_~xXWyF~@WAjqafcGNn2FTL8yK-WIAjuo%EQ8HGk zY0Pu(XpbQK=G;grvOfq>Vv+r!U=8MjHJFM0P5=>9K7IQXK?IfeRz9nH5rYUS&c%Ow?Lu@s*vRTEkIaJ1l0+mIyKb!!;c{)5mYTlD=GjYC>eMDf0F`1ao&c>D7AzU3RS|dw~VZB zL^4D+N6{>PR&)u4@?LVrh4?-J55Ud=ar@f3KK^wWnMG?xJAeG0fLrlo`h-gdF!|tY zK~g9j*`FsIL&l=s09C&{eDGiI0JpUL?J@-2LC*QPxqf!UJ!9O&y$1sySVCDp&KZk* zI`MTIawyMHk__VV$UZp-kj0i(lR0;TMPRkALUH6aYK9Y1N}8(+XB9~` zv@T0Xv|2*`iE20hWT%}=?%%E_&*k4!)I`albgR;>q=$hMP*>sopfd-)h|MH!nr)%e z8eoY76jA6g41^$|;ZjO0a#W65WN(pCCClJ%x8#_lBBR9%0RR9106-5P-ofs`TW#GOJx>R%2-NS+14*I25Jkd5eNj*Y zdr$*QC}A^hsL5}11=q9sNZQT-wnrJtuBQ(9bTgQ73%H)y&A{?7(-l(}NW z3@d=7#q}I%J2#%T0M)MNNa{N!H&loUgKseP-2^M3yX$Fq5(NMN0000#PLZ9bm8PR0 QZvX%Q07*qoM6N<$f^q+n0{{R3 delta 393 zcmV;40e1e`0;22nRUw^35D{fHKSIny#nk_n=cE$037GPugiBX)5s`l7Jq|}_rr=SU@A2iJ9$4W z8USWLNZmvVg(H_LiqUp~%tfsUs=Rru!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9 zg!29|U?B3|#1w7#1D|82Zi39|OrjsT2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o z;&oxgVneDTDSwWZRSJm~BTN~*l;h_M=E_Po`OdZeifZWVP`Y{QjIwA~K>rsE%X6_V zHJO}PoNmJQx02)3Sk!5?Fh2lfo?+f&ik<1i nvN@EBj215h0000004!hPM*_v-3`+z60000Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ(m=jvEBrv%P{z&lrTb}iZjgC&l4OG z-H|o3*Rn@Kq5Nt38bXkBhB$5{Zk=61kUze@F8^>DMp{wpaep4`?SQVVBNli76SdEc^0E#>GYDm6PZPeGDtPge)OEp9hf zEHR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.27.png b/test-integration/snapshots/signTransactionAddnft/nanos.27.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.29.png b/test-integration/snapshots/signTransactionAddnft/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..878cf2d52b90e930532518d4938b65c3e25c8659 GIT binary patch literal 325 zcmV-L0lNN)P)l-))2uk{A* zkcl3DkJAP3jx)C@N8}*sP@aIQ`q}sRAPgVt4b(^x9iw||P*c$Ex+hQ_P|e^wg69BP zQJtut zn1&~Y15!39wJ0->?z+y{2axXpi!pt5z&HU78j1dK*sd?a`v6cjbzurJh7KTvkpJZe Xg951Qi!@Z+cTTfS_n-iIOBqlBevoP@64x#A?^X5FUU#D7VhJuB#S4(vTAv`2Q9F(Su?VD;s&X z;d07hfrJM@Tbm%_a`tjrtm_Z9IRjk8PI_>~k@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%B zB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAVBoLpq?a}HARqX-SSc$T$Nln9s2dIx} zEl8I**lx6q(d2*{#THR@Z>|{4E!(_^m547yd|l7T$E)JpDl*^N#0;UY{d)p%+BdN2 z#3X>Y%>DNR?mjzH5%WG!p#lQno2f~uXyR3S9AhUnF$&j)I=&lP00Hn?R-znnjfm4I zlRIcq*G`(Jx}gx{x;?6)%`(~fp=&}YC(P%M2=}F5*TflM)GuewfV-=bpzwJcvb>7Y vdmDCT%WG&D!`sx4*#8CXOs0z@NuI|arLg_L<`pwz00000NkvXXu0mjfVXfLz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.31.png b/test-integration/snapshots/signTransactionAddnft/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..3408c80d8127b4e38af3c050ef877da8e34910b9 GIT binary patch literal 268 zcmV+n0rUQeP)?=E z=FWlM^^e`=u9CH6`51)0fa)_+ErBr<-p%CwKM2FF3(W%N{{n>2B1KC~ye?YGR z)BLP;y8P4E$SB`3>an*1c4evbfyo9Gz6Z++W`mV?w%3U@Q!nD|WLjsK?mTSB?F00F ziZ837-)0_-k0C2SUVB}o9dBJygVnzhdZ3RUXgc?o;Or==CaMnr000000FejlRCyPm Si^rz`0000o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqUtP)5v5?0001>i}!2$WJV1ydCb>z=H0F9 zP|SA#&loeystD`G>fQZTi?B$__p%;TL!& kVDo3Ep#T5?002ME2e-#KOW1RwQ2+n{07*qoM6N<$g5#%_djJ3c literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.34.png b/test-integration/snapshots/signTransactionAddnft/nanos.34.png new file mode 100644 index 0000000000000000000000000000000000000000..afef6551231ed55979476b9d939ae8bfa0fcfa4c GIT binary patch literal 339 zcmV-Z0j&OsP)>tpt$qJ3tbVEA2nww0RRB_R~ALz`<9lKINZ1EC9K3R zg&$#6h?_ffSY%%n)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MT zC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ^3atC6F?G8_2dX!fM}{Ghlv`hL@3ph lWBLg&P(1+v0001hIUh-*t5`ZM)|LPO002ovPDHLkV1i;nmB0W1 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.35.png b/test-integration/snapshots/signTransactionAddnft/nanos.35.png new file mode 100644 index 0000000000000000000000000000000000000000..448e15cb013d3f7ac6c882885d276e564a5ac8fd GIT binary patch literal 275 zcmV+u0qp*XP)5EO23`W%#jxN`iCGuCaiA5gkPU02s$R@$OHhd*<$eSDizn_xL4m zw5(?bde=Wm7kdo|Z^J!{v~p0a93m&WHN8EEZyeFj=x@=X%3}S|(xRi--T~v69=D>5I_@9J~+0n6kynnbRR1v)xGXL7d8-OzRn@ zUmiBRGBv&Z_*f17HgjwIT(Scs_}o>w#;QdPrvD`LKp#EOH20fec0{U)^Z@_>0000W ZvH{cOgA*J*S6=`C002ovPDHLkV1gj@cuN2P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.36.png b/test-integration/snapshots/signTransactionAddnft/nanos.36.png new file mode 100644 index 0000000000000000000000000000000000000000..48bd8f6bba6d75a1561c5149667455d16c284186 GIT binary patch literal 324 zcmV-K0lWT*P)pcBOApa-RW> zgrw#OrCA+7EP=Rb^yT5LFnZUK4c{5C?H?OZJL1M%RaDgbTan9X4TC|PMgr@9oeq=2 z`jcofEUZ5j_#htmAQH*2n<^T=6=Ne7Kh5mpqnk`1Nle;@aqPp3#>5Su)A|71zl7(J zIllCVv+r!U=8Mj zHJFM0P5=>9K7IQXK?IfeRz9nH5rYUS&c%Ox1tEDkmUR=Kv+!#)d`|H zHPrdTk0B)yR4qpzSb`2YX_07*qoM6N<$g1i`) ATmS$7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.38.png b/test-integration/snapshots/signTransactionAddnft/nanos.38.png new file mode 100644 index 0000000000000000000000000000000000000000..226d954bf9a24fa420ba00d258075263f6362d0c GIT binary patch literal 345 zcmV-f0jB0ikd>sDv7}x9Q+0qFWqvdl7BSfLvBWHLE#r^W>ZlU(ML`ma^Nuz0@lmqm& zZ~^3qBqsMdm)TNsAGAQe0OTT&YePQQco?k!xxP#5ZQbKMFO4MWIcKGGZD_54?xKVN znI12kMq>GOJx>R%2-NS+14*I25Jkd5eNj*Ydr$*QC}A^hsL5}11=q9sNZQT-wnrJt zuBQ(9bTgQ73%H)y&A{?7(-l(}NW3@d=7#q}I%JD#=x)vo7A>N_PjREP?L rZ!q=U1S_Ds>uGor1poj5002Kuk)5ZNrlTNl00000NkvXXu0mjf{@;`j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.39.png b/test-integration/snapshots/signTransactionAddnft/nanos.39.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a5f8f9299ebd99bbfbc1968287df0fc6953528 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsVkl?jv*Cu-d=YUYF6NJxOijb zcY6cwmUS7p@>zFU^>{FaiN8P?K>yuyC z3+;yglDlG#Oq`sMCcJXRwJ$MB-%41fA51>D_DsUR*#Cyx6ef1n?zyzDahp?8l6I|RQCib_mo>i~ zzto7oTKnwsk6o#(9p86br}RZOYn}NwIiUIDih~}-^I0}4FIApc3-k{VbmVO5ZWP{D Rs;2?sdAjz3cFX?h1(OZ38MtT%W6wid=r&QW>tHF^E%3VEw<-U{Y9r z5LJeS^@jo<*aII}QZj60MeVm@WW>c!Gx_-FA!CRWleQro`_Nlq;hL{$egNuU!sGB9 zU;Nk{p9Ljerja*)AV6CRs_e%Z6Q!VUGLZuuhq=Ia-T^Yjb5>W|Pyhe`003~|0ALB3 UBpjz3d;kCd07*qoM6N<$g2<+YJpcdz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.41.png b/test-integration/snapshots/signTransactionAddnft/nanos.41.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b731694dceda22211818d3e395e21479d4faf2 GIT binary patch literal 342 zcmV-c0jd6pP)Xv3>!%mV&vxRP#qbS*a)rz-A# zH!5W$W2=iX>VO%HWoURmDYi(~ZR(%D;{pWM>{GpJ^YCfoMK&DerExyF{ey%UemLoJ zx9ETvM0O};Cu$phmZtV>p>)ooW5cU$l&n=70s!hf=N9c3)L=cR!Fo`GmDuk-L{NG9 zvvyzOewpJ1BB)T9V(9*eK?D^t<4?l)j oi=c#}10aI(ApigX005A20Ky$SPPtYGC;$Ke07*qoM6N<$f&e>{J^%m! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.42.png b/test-integration/snapshots/signTransactionAddnft/nanos.42.png new file mode 100644 index 0000000000000000000000000000000000000000..d04d159d7a692b944be24dca28077aaf2c3e0dc5 GIT binary patch literal 345 zcmV-f0jBk+R@*oj{< zJHn{ou>oO`{y5_0GS1K0wUrYZM(gKPTF6ZGTV{AG+5PdYZl&@$gHqa0oo3V0P)<~!ND?{1Wd>D0rUfq@XwytrR*9a%&IcFtzeT?dW$Agj@ z6l%P38j0oY+D`?o2%`TuH$sZ&D^V3#L|+x;z#inl5-PBa8fx;4K0x(sK9cq`f$UMo zVAXRBygLtK+ybhn`2ubr2=SR%FTZRcM?>+J!Ws`9K+>#wp8YXLRk}@pH`SA4h#IPd rE7g-@`VM$j^)x(&0ssI20Dy!KV7aB0166v`00000NkvXXu0mjf@(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanos.44.png b/test-integration/snapshots/signTransactionAddnft/nanos.44.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIUYo|^Xb z&*pj!$5NI9XRqb1tN6`+S1{mcl;M}od%*z@3`>O0dmO0;n%Q8wrJ61Ltx`|Sk!*G6 zQtd^rORUn;;#S@{zVw=GZr$y(72CP^|Ec`>b}g#2gv*7`y)>eBtySrU4?k|^_5L^c z$`R2R&3;58c+KsH_x+T^Z?3v{u|)YnSa7S|%#F-t*P0KSE0)C1`>^FJ`;!x{&muGB urm}0yD&*Sb9QXON`oiR7h`*qu&290-FU#hi^hoRhiFmsDxvXQ0-pqsB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjfxLNo8 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.07.png b/test-integration/snapshots/signTransactionAddnft/nanox.07.png index 34e5ceab69c61f6e41008ccfe72708b5eb164f9c..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 100644 GIT binary patch delta 349 zcmV-j0iyoS1NZ`vB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfJz1d4 delta 436 zcmV;l0Zab)0?q@FB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 zFa|@Q3jqKC00000|KefYfO#pU<2uG@*pd}42cYcwlE-22HvmWPm))&qy707az$DSp z?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%=K=if8uFw4Kf&$ynn}7I?gBSn+0N_?CShuC8 z6~p*`OLki9_vx||1#dV2uPwEx2hsW?Nqu(BIr%rnSQb$ax@rhW{W8-j)yfnNK9#ie z@$ru9@l3UJ$;PZTJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000{NpTwVCg2tQGThxaCEUFS@TDry za&cFcQYx=M_MrsT6#zG*G*?Xjpt}O9SSyA;)4K}_+=g!A8h;xx0002M!Nh$)N~x+C z=fi3n6=Q7QsoF6thXOFbU*DL`Vv?HU2;{=5!DHht9p*8{yRFTRXs;`UjYlMo&W#<00000{=yS@ W7xiApCZWFo0000k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f{xbX3jhEB diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.10.png b/test-integration/snapshots/signTransactionAddnft/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 436 zcmV;l0Zabe1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)3@{761SM diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.11.png b/test-integration/snapshots/signTransactionAddnft/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-11E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00000fhdk2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h8JwJ-nx diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.12.png b/test-integration/snapshots/signTransactionAddnft/nanox.12.png index 8e0d2a3791e60716616ea03122987f407606d08e..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!z0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$fIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000sX diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.13.png b/test-integration/snapshots/signTransactionAddnft/nanox.13.png index 59e91efe8433df4e15c9f7099888a588bb033f4d..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 450 zcmV;z0X_bW1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f}E7u)c^nh delta 370 zcmV-&0ge9L1C0ZaB!5&%L_t(|obB3e4uc>JfMK@mCfxr>++{yZng$RZ)3s&q^Ggj; zQof{`5&!@I0002~#lyM+^GYdloO3p;$u~kafDXMDu^HkufJ9%1yL&N&r*#D;Re=r{ z_ozxKdj1)oh7ffGz|3AZkJ$ZF+!0X4I%4QI@!ooZsBW-3I%$ z#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN z?!svUbZ77-xoZHuq9(P*>gi}JAd7HSSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l> z;%+0RwTaAeYHM?^yw01pr`=oqiz@56_Zi@1YV$A~dU%K53o`=ldxUNGchLYc8?>=# zXP#@Ho2=Vl{YChY?Nk07*qoM6N<$f;OA2Qvd(} diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.14.png b/test-integration/snapshots/signTransactionAddnft/nanox.14.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..a7a8740548d2608032872a36bbf128b89b69847d 100644 GIT binary patch delta 379 zcmV->0fhdx2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h&GwLJg; delta 929 zcmV;S177@<1GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DLc7V0 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.15.png b/test-integration/snapshots/signTransactionAddnft/nanox.15.png index f9daa857a29cd5cbac1d90a6571900c4d7f78ecd..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 352 zcmV-m0iXVv1N#DyB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$f-DQNqW}N^ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.16.png b/test-integration/snapshots/signTransactionAddnft/nanox.16.png index c99a3e46cad18f17bc207b022a9f85232660be6d..59e91efe8433df4e15c9f7099888a588bb033f4d 100644 GIT binary patch delta 370 zcmV-&0ge8j1dRibB!5&%L_t(|obB3e4uc>JfMK@mCfxr>++{yZng$RZ)3s&q^Ggj; zQof{`5&!@I0002~#lyM+^GYdloO3p;$u~kafDXMDu^HkufJ9%1yL&N&r*#D;Re=r{ z_ozxKdj1)oh7ffGz|3AZkJ$ZF+!0X4I%4QI@!ooZsBW-3I%$ z#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN z?!svUbZ77-xoZHuq9(P*>gi}JAd7HSSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l> z;%+0RwTaAeYHM?^yw01pr`=oqiz@56_Zi@1YV$A~dU%K53o`=ldxUNGchLYc8?>=# zXP#@Ho2=Vl{YChY?Nk07*qoM6N<$g5T4v7XSbN delta 517 zcmV+g0{Z=p1D^ztB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjfK{5Bj diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.17.png b/test-integration/snapshots/signTransactionAddnft/nanox.17.png index 15ccd7a8469943e795e0044b1869e78c36178dd7..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 929 zcmV;S177^p1hxl|BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DD+$TX delta 572 zcmV-C0>k~b2h;?RBYy%LNklq?fAdX|)OMVOyU6H>F59kz4SmmD+$;)@_Oah+b#cJ+ah>wl>hzj06pq!)S`qj0zk z;cu@2(yY%lUtM{niFdmG%mZscn5gQ2FM2oeX4mvg2h?0^rqnTxo=4hiX8C?EbTrLg z=`IyrJp&pRanK_CKRLw(t)_NyI2izdCDBlO04KCUKzdXXKi=oI;gep4-geMs1F9=r zow3XFyCBObE`K9y`n2dytbEQYvsePLzv+OM3hGzNPd%}ezB%FS!ltUX$~nWT8BmU+ zu~9Ream>~pLp6t1UL-I3$MS#VQwMY^Ga;K>A*vyQG=E{`%N0 zSe>liB{#ol{*FZ$0002scy`R3?tS!b8U{EGYx+*Y5r{(LmlLjBPy`wcIT-2BUej*E4- z8K6WHbv2=sz_ z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g6dPUcK`qY delta 436 zcmV;l0Zaaw1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000D`9UXLRcO46U}Mw4|_4S*WjB)*Q$F5W!IVynk$yX&-<|DEBliZuFoPf v<)*T0%qryCJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfO8cPJ delta 446 zcmV;v0YU!w0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f;}GNZvX%Q diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.21.png b/test-integration/snapshots/signTransactionAddnft/nanox.21.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..928e1056207c985e5c67fdfae5a4ab51d353df7a 100644 GIT binary patch delta 364 zcmV-y0h9jR1BU~UB!5mxL_t(|obB0B4#FS|fMGP=g!>u<&k`*oopzQjR$6@d{07vha-K}Q2@U(8gB+=3C z`rWIPQu+VWPrBfB2Ea_~HTU@X2fs5w^tH#X&;0Fz0^87=_9P|AZ#V$2Ew!iz(fT7veRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn z@s8{9Otq?00l0~q_A@UE|LvIpSD1UkjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotK zz6ZG9NDQkNr)9-w-!KDmBgCR4R@8nC^;%lyiyM`7ss%fx`k5p5Y9#>x0APSyFMl^KAeS>jCL+ud_9p!!_F^p&^(NF*Y0000008`%hR>g0}TDc?u0000< KMNUMnLSTZu=B(rZ delta 450 zcmV;z0X_bQ1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f|3Z?&j0`b diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.22.png b/test-integration/snapshots/signTransactionAddnft/nanox.22.png index a7a8740548d2608032872a36bbf128b89b69847d..c3ac3fd8fa4e7c4aac4a478d65c1d7fcba7348ae 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obB3O4#FT1Mo~2Gg#9mxz4$<42tQ-B!tm95o~%|N z!%)lA5C8xG0002+FK*rg_+Cos^*YArIFd6YC!h>{NpTwVCg2tQGThxaCEUFS@TDry za&cFcQYx=M_MrsT6#zG*G*?Xjpt}O9SSyA;)4K}_+=g!A8h;xx0002M!Nh$)N~x+C z=fi3n6=Q7QsoF6thXOFbU*DL`Vv?HU2;{=5!DHht9p*8{yRFTRXs;`UjYlMo&W#<00000{=yS@ W7xiApCZWFo0000a0ot delta 378 zcmV-=0fqjP1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVO1+Gyi(^Q|oVT|E`I;33TrXx`p1a|{>e;woiC!EX8x?pKf3FE$+r%Fj z=*j>FA4K$Db8QK}`op>G?0c)rmvQI6<}x|eR5pEg_^Mg+ z>ig7VKipzYSXMTp+UC#EeEt)gzDfK&c0YDPf%LA9YMvwYKtmhSHRemkd=*((sr>75 ze0zQEGjU75&jmW`R;-$QyyUd0gXO-vvLCOd&5LoJXH#*nsiQDu^3D63T-DR(#YbtE z%vxG~;LoDx<=mUuI23atr~i(b=e90LJFw@{bk^zv0b4uPUYc$y{op~>g`cWN4rFVdQ I&MBb@0PSy$f&c&j delta 352 zcmV-m0iXWW0{a4xB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000NKvCLsC+vSovzLC@5CS+s8esbZzP z`!qpKX&J|?eJY^2IAc8e!O=HBcQ((;CjJfMK@mCfxr>++{yZng$RZ)3s&q^Ggj; zQof{`5&!@I0002~#lyM+^GYdloO3p;$u~kafDXMDu^HkufJ9%1yL&N&r*#D;Re=r{ z_ozxKdj1)oh7ffGz|3AZkJ$ZF+!0X4I%4QI@!ooZsBW-3I%$ z#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN z?!svUbZ77-xoZHuq9(P*>gi}JAd7HSSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l> z;%+0RwTaAeYHM?^yw01pr`=oqiz@56_Zi@1YV$A~dU%K53o`=ldxUNGchLYc8?>=# zXP#@Ho2=Vl{YChY?Nk07*qoM6N<$g0hQYW=pk)x;1!y(_Rt zG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK+z}w!I%3mT@m4{JWq;@){>DZO00008t2Dgp zGBb){{C-V#GPe72-i3?@cEHz`Qq+xT|B|HNyVjKYn{#fns2g211f;&1ndBNJiV8nE z_4MQIUB~wm)uJ8+;1(`APkbr-w`T;rVeJk#{-3BrM2t53<9}`kq;9aknrl=}Uu-=P zr_1)d4+y`IxPPsmoQ(IrVFc7lh)GGzsPhu~xwK6e7i!B?Gfr~N6YpGWbP50ffJaPU zMMU{7LESEG*~fY=MhSv$Db2JIBM9n=An5&CO&k}Dix>p8Oee>6K#CRwHBRQHXedEY u`%-Fs1P}xj*Y%&40RR910000?d;`f}(-a;X_l5uf00{s|MNUMnLSTYMK(lZF delta 929 zcmV;S177^81GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf Di%-d+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.26.png b/test-integration/snapshots/signTransactionAddnft/nanox.26.png index f9daa857a29cd5cbac1d90a6571900c4d7f78ecd..174e77ab604f8ca054099ba68d089f9b9bf9ff8f 100644 GIT binary patch delta 380 zcmV-?0fYXT1D6AkB!6B>L_t(|obB3Mu7n^AfML$$?1cRu_bq;?0`1(t&H7}uLJhzx8WWhOyT9-fQwY1 z)5Se25ozx~_HGJUX8_zB4fBk{zvP_(D%Kf8zsa`>Dl9{Tcz?!&7ytkO;9%l&fQYD! z@wTfTqiU`F5mk8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuFse1$q5uE@0002M ak9q?HgZ^INbq6E>0000 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$f|xMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000V1D^ztB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjf#CG@t diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.28.png b/test-integration/snapshots/signTransactionAddnft/nanox.28.png index 15ccd7a8469943e795e0044b1869e78c36178dd7..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-$1gQs*BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000k~O2h;?RBYy%LNklq?fAdX|)OMVOyU6H>F59kz4SmmD+$;)@_Oah+b#cJ+ah>wl>hzj06pq!)S`qj0zk z;cu@2(yY%lUtM{niFdmG%mZscn5gQ2FM2oeX4mvg2h?0^rqnTxo=4hiX8C?EbTrLg z=`IyrJp&pRanK_CKRLw(t)_NyI2izdCDBlO04KCUKzdXXKi=oI;gep4-geMs1F9=r zow3XFyCBObE`K9y`n2dytbEQYvsePLzv+OM3hGzNPd%}ezB%FS!ltUX$~nWT8BmU+ zu~9Ream>~pLp6t1UL-I3$MS#VQwMY^Ga;K>A*vyQG=E{`%N0 zSe>liB{#ol{*FZ$0002scy`R3?tS!b8U{EGYx+*Y5r{(LmlLjBPy`wcIT-2BUej*E4- z8K6WHbv2=sz_|%Q*hnUzb{nib+{KS?b?v;+ zAJd)7#jq9EmbA|Ft8=TVSf$Ro@&$IS!O_RZCm&p2&cHQ8F|;Zqd49B_iT**N{s$`#9%#QupTi0 p0000000000000000001RPk#&Tc`e{iGe7_U002ovPDHLkV1l6J;}rk^ delta 770 zcmV+d1O5Ei1DOVpBYy(mNkl3`I#QH}UU8oe~VOF zjfDUUkf2in000000AM;_&gXN^=Re1Ba1y`%ZdJt?PD#$WmecBLNwcxeW`27fp1^S& zo)#V-(%->2xkzY%q9idRAv|T|$MbN_`7X$fq+U|X1!4KWu785-*1iF2_M_@ReujI1 z@D4VcB)5}u`68s>=A4`J*hSdqYTQd;XZQf*4{{l!umfQVlCcb%pO^ut4Qj4ngZ!6P zG@+JQ!q$M~u&-k-@)UNejjbzk04V30$qh{4%){+{g;liJ#%)hI3Ed8j_PltSqoOVq zs-C+VI%*8puz!0TFqDut*QvxC3HK4W!LV#?0RR9r8L|f0Q$4A*Qe+X*JUypW z4Qn2pQNyTJPA{1@sREXldGI5_7_0|luoCqCO3?c&SqnsI* zZ|wwoK!3QZOz!W~YmhX)pFBZ(5)3i9Apa%dS`SrQaz4r2+9;Fk74?n5`fR8QJ+azw z2hwd-j0Xs*L|Moc@UO|1?y&cokP6*s5e5JN0001fHr(uw-~oZyy9xf4q$OV{Bqq67 zrg>3?DxvY9MFY(vHLvyUnEs>)8BKd)@@{!GjeANZmOLo^D_7CSjN8$h%;r&-qGFpf zV*qBlDwnhgyzRU754B5r%V_1@@)m_^b!uI8G28J)e-bz>%07*qoM6N<$f>ao9 AKL7v# diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.30.png b/test-integration/snapshots/signTransactionAddnft/nanox.30.png index 27a5e8aac666148b65cf430a99eea1b6f2f65e08..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 451 zcmV;!0X+Vf1>6IWBYy#-NklF_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?VxYQOO*E-BI{qrimEQM<$Qc8Ry`**F*XEIB=u7d9@Eq_!g(TD8BdI0kd4%@>w zlJfVG+5ek!9?oON$*rl{;smh+kYDi6OlB^?OhHtoji&~UT)|-gYHR9ru{Fqf`-6zWg}WAQ(Q@vsfD>H+9Q?J@BUPzSyGwtvS_e_l2)7*{BB;(Q|)iim<@ zb;j$@HQ9Cm_yWV_#rW$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.32.png b/test-integration/snapshots/signTransactionAddnft/nanox.32.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 353 zcmV-n0iOP;2m1n$BYy!xNklI)5 zXw;AaM!=>7000000D!mnTU~+k%&e4i&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>w zpylGO%FKNJ=^si^9RXOT)y);Vf6^TRyI3oRexo-FN=!q8cz?!13;+NCfMZTMGkD{j z^?HZHjh#nE_J4H+nhqDY^@o>wJ#1#B(0>}5TKk=y3+hbOzdne#BVbV2$PQB7j`niS zx)~;J1E_cHK|xbc&e>0d`W^fwO$7h|fXV8uxBkDZo;2@_yAbP`vhEGiia{4*-mm+e ztxZtBtlP@luUhUl#xy=0_2KTa!@~H6{2c+Omb8lYr`Iw#Z#=iKwJ+Gvqu?Tsd`<<92o!r0000004DnaBxTXN6Z+k)00000NkvXXu0mjfp53Rb delta 916 zcmV;F18e;I0;va(BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000JfMK@mCfxr>++{yZng$RZ)3s&q^Ggj; zQof{`5&!@I0002~#lyM+^GYdloO3p;$u~kafDXMDu^HkufJ9%1yL&N&r*#D;Re=r{ z_ozxKdj1)oh7ffGz|3AZkJ$ZF+!0X4I%4QI@!ooZsBW-3I%$ z#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN z?!svUbZ77-xoZHuq9(P*>gi}JAd7HSSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l> z;%+0RwTaAeYHM?^yw01pr`=oqiz@56_Zi@1YV$A~dU%K53o`=ldxUNGchLYc8?>=# zXP#@Ho2=Vl{YChY?Nk07*qoM6N<$f-uvqPXGV_ delta 446 zcmV;v0YUza1K0zQB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f`nq@1poj5 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.34.png b/test-integration/snapshots/signTransactionAddnft/nanox.34.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 929 zcmV;S177^x1GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DL~+T~ delta 451 zcmV;!0X+V;2iyaYBYy#-NklF_o z5I6~U6hodV2!8-h(Ov__T{x_b?11;Rd{g+r0H)r{lqbM%PVx?A>v&b|V)`pv1GAGO z|1E+)yLEb~Q(GOgrl8ghTl?OM@)R%jKf+&D4PfMhs_pK1Q_!ugh|8_b{&xVU{#*6! z{rpZ{02cIu`q?bx(?Vx z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$f|W(GJ^%m! delta 378 zcmV-=0fqjV1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.41.png b/test-integration/snapshots/signTransactionAddnft/nanox.41.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.42.png b/test-integration/snapshots/signTransactionAddnft/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.44.png b/test-integration/snapshots/signTransactionAddnft/nanox.44.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5570e4ad76e405b0ab284b7077def9e571c6fe GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|WK(M-^SI@yZbnAV^mPXZ=4>vJgy0F|P zta(4zh8N2p-t#GWXuFG{cay{J?%m<5W_`2&JzK9Lmr-I_+3e~)e~;#KpGbOZ_+{e$ z1oF%O}kFDOe-Lq#IfB@ zX=k}2k`FH3P2a%Li?JL1u@4ipJymCVC9!_dxKpxz13FFVnx|yCXa$6(12N0dnDu_Z z^ijuZOy7VQV>tlTTijSxr7ZGsb=sym`{6*=0002!xAa#L)nM^(YNjtARcUaIvh35I zD)WYwXMbM5jB7b<=IgEnB{#c~J3A1#)&+ImXEpnDK~C*c0V_9ig`58X-QhYb!%zSK e0000006$-8P~rC*O6s-%0000LsXG zmjbTyYrkxqwQI$NZNs3h#T6h;rCv9ZDclZNUAM`OA8SG1+`(w^Gf7(kE)+9vadnAe zmsi#5^1VQi=UhN_>-y)#0clh3my=3`HY-s-Avy{26 zp`t;$aB+dqP(yXtVVCZ1H1o=-<6xr4P=7Z& z)iayk2X}&@6)*!^V;uLBrVPxg@#YidxB*C<8Z)n!WT!SubyJrE{9;Ise$JJ;KAgPT zZeIac5XGTXoT$15e+}{4}0Z^ce82;9V-tYOE!^)ZZn<+?PB`WFqgJ`#PyVxcx@A9}Y zB5+FjBJwR;KvymmgO1{8ozql#3%Xap0`U9#A)CpFz<_E&URopWXz*1-cO>QNhH`Ww z|71|)B)HRi%OeJx?hL-r0YK(HF48JpgP&ks%ImlVspN`u%&y-=dzt?K0fElY zdqKzIyZfjAv;OHDOArLXVwysQm;LqJ@G0mJeF9|YCQR>sY#O}0fTAYrw|1S#Q_vQD zbSbpK^e>wzYT?B|1ynKK>j=*rTyS%>pe|*ix7IzFI{>(F#^xM85-!)h(E*?;pji<# z`%OLVU#yRUOk4q=F31)eocrdEcF{+lf?<#j)JJc45BM&=QVliiFrkkIK@bGT@dvdb VrlwKNOP~M%002ovPDHLkV1hyOkjnr7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.47.png b/test-integration/snapshots/signTransactionAddnft/nanox.47.png new file mode 100644 index 0000000000000000000000000000000000000000..360b7921673a28ce4bf4749283f7f0ae892874dc GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_uB>EaktG3V{9z^cOv91Xeq z@2Y&a4|=z$J?|W&P}0>a-~P{EODcHuBt*zfsRF{^ODoUa0-M*g9G()vNJK z{mdDc*NW#KF1Q$Mm8{kCWyTe~quVF%E&7}Fx5f)NY`weJ#8m! z>M#Ah;3hU%IheO$-^0G(4@0O?~^z(36zm)KvJ%E!;pylGODy5X4fBa1esu_T3TFYE<`3Kz$ zFtJt){YLL9C~z6Nh-ci00RR916Lh=}NGX|$@wRDhqhgHZH>MqDuhZj|F(2=AU1h1# zd?=6iTRYO@F9Y;i7*^`|bZU3At?o|C$9V{ocWMq>?f$v%1oUGaEknPr1H!-f;$3J*N{W#yz9zDZ?qmn_|8Hu%Ws)toI73Kn7Huu6pkIu}E5|PJmq1 yvqkmo=%7~hY*{@6?yY)q843UZ00000{I4&Qe*0c&hQ_x50000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.51.png b/test-integration/snapshots/signTransactionAddnft/nanox.51.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|?=E=FWlM^^e`=u9CH6`51)0fa)_+ErBr<- zp%CwKM2FF3(W%N{{n>2B1KC~ye?YGR)BLP;y8P4E$SB`3>T0pK0(NDo^nu9+6ut+` z3TA_qcedAwHB&F*>||PJnC?7m$n694eu^)vq2Fd6jgKKKKwf)Yr5$fwQiIjM5_+JI r9%wrEm*DIusV1rq00000005B(>r{Ccpo_<+00000NkvXXu0mjfar<+j delta 370 zcmV-&0ge8Q0*nKYBYy!?NklMHB$!q$9S8}%5mO?$tbmi5eikpueXe> zZ$vUgHb>DcepYk|h4Nl<#)bGk0S~~=0df1(U#t)z#66Hr&-{h%`kzKG2vZklbO z(;8rj0~Ar{F${ztq2W?WEOJziT4ZmLQ6eytpET3 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.06.png b/test-integration/snapshots/signTransactionRemnft/nanos.06.png index b42d7b08612d408956ed509afd4d555a52e6af02..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0$I1HA%}B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqmdKod5s; delta 366 zcmV-!0g?W_0*M2VB!5szL_t(|ob8$24uc>Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ`HvL00Ak4Yq} zDoUpfturAD_||eJm)on?cA;uY&HiOnossywn+d9b5%_i(_7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAk diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.08.png b/test-integration/snapshots/signTransactionRemnft/nanos.08.png index c9de06047218fee6710335b7dfa11e5d192ae931..afef6551231ed55979476b9d939ae8bfa0fcfa4c 100644 GIT binary patch delta 312 zcmV-80muI20@DJJB!3!7L_t(|ob8$24udcVh3hik|AD=57hR0DKssBXxbwveT@jQY zHD@US008(`7DeCtmX?(`+_&o`ti&&cA7NF9cmv@g?_ffSY%%n z)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MTC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ z^3atC6F?G8^)ciKTYzY)Cx?j|szfN&lVkb`Fi<@K00000fH@yYqpMgtE!LI*0000< KMNUMnLSTX}ZDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTXl-@d^B diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.10.png b/test-integration/snapshots/signTransactionRemnft/nanos.10.png index 06140342c291c111e9c068e5607f9a041bc53592..d1eac39e479dd964eb87fa54d56480cf7e8bf195 100644 GIT binary patch delta 398 zcmV;90dfAi0;mI!B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1oUPf@lB$ diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.11.png b/test-integration/snapshots/signTransactionRemnft/nanos.11.png index 2c164fd2a777adf9067da2fe8a520fac72d9fdf7..c9de06047218fee6710335b7dfa11e5d192ae931 100644 GIT binary patch delta 329 zcmV-P0k;0|0^|aaB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m4#OY_MeVZw{|EP>doXcCP;s_}={?!QYOtlC z5N|^O0002oaUR!O0xdD7mB`K#^tZJGJ!CCKijJ#$YP^=9+2fw@ngFqa&xpSS(2g2NkEP`(8l)zi8Gln70DuE#FQoqfa$pZ~ zU=MO&$x!sqxlTN<W100000NkvXXu0mjfHN~Qa diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.12.png b/test-integration/snapshots/signTransactionRemnft/nanos.12.png index 961c0c11e4c94313a1d712ed345f8071086e1d23..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}r1F8d%B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYupT7M7 delta 427 zcmV;c0aX5~1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1n*9*rxyh diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.13.png b/test-integration/snapshots/signTransactionRemnft/nanos.13.png index f2ec3f21b2b47d8719168decea9cd5eab02c9c43..06140342c291c111e9c068e5607f9a041bc53592 100644 GIT binary patch delta 287 zcmV+)0pR|O1G)l`B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1nK$f=mDa delta 369 zcmV-%0gnE<0*nKYB!5#$L_t(|ob8!G62l+}MYYr1|G-(K3p-A#NDz%M&3`+ws09Tj zApigX0P8sRaO@Wn^~fW-Q`XSQYyFfr5;vvdvFmlmc$>`1ao&c>D7AzU3RS|dw~VZB zL^4D+N6{>PR&)u4@?LVrh4?-J55Ud=ar@f3KK^wWnMG?xJAeG0fLrlo`h-gdF!|tY zK~g9j*`FsIL&l=s09C&{eDGiI0JpUL?J@-2LC*QPxqf!UJ!9O&y$1sySVCDp&KZk* zI`MTIawyMHk__VV$UZp-kj0i(lR0;TMPRkALUH6aYK9Y1N}8(+XB9~` zv@T0Xv|2*`iE20hWT%}=?%%E_&*k4!)I`albgR;>q=$hMP*>sopfd-)h|MH!nr)%e z8eoY76jA6g41^$|;ZjO0a#W65WN(pCCClJ%x8#_lBBR9%0RR9106-5P-ofs`TW#4#OY_MeVZw{|EP>doXcCP;s_}={?!QYOtlC z5N|^O0002oaUR!O0xdD7mB`K#^tZJGJ!CCKijJ#$YP^=9+2fw@ngFqa&xpSS(2g2NkEP`(8l)zi8Gln70DuE#FQoqfa$pZ~ zU=MO&$x!sqxlTN<W100000NkvXXu0mjf;B}%# delta 393 zcmV;40e1fI0;22nRUw^35D{fHKSIny#nk_n=cE$037GPugiBX)5s`l7Jq|}_rr=SU@A2iJ9$4W z8USWLNZmvVg(H_LiqUp~%tfsUs=Rru!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9 zg!29|U?B3|#1w7#1D|82Zi39|OrjsT2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o z;&oxgVneDTDSwWZRSJm~BTN~*l;h_M=E_Po`OdZeifZWVP`Y{QjIwA~K>rsE%X6_V zHJO}PoNmJQx02)3Sk!5?Fh2lfo?+f&ik<1i nvN@EBj215h0000004!hPM*_v-3`+z60000b|@; diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.15.png b/test-integration/snapshots/signTransactionRemnft/nanos.15.png index b42d7b08612d408956ed509afd4d555a52e6af02..961c0c11e4c94313a1d712ed345f8071086e1d23 100644 GIT binary patch delta 427 zcmV;c0aX5p1H}W7B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1lJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ?=E=FWlM^^e`=u9CH6`51)0fa)_+ErBr<- zp%CwKM2FF3(W%N{{n>2B1KC~ye?YGR)BLP;y8P4E$SB`3>T0pK0(NDo^nu9+6ut+` z3TA_qcedAwHB&F*>||PJnC?7m$n694eu^)vq2Fd6jgKKKKwf)Yr5$fwQiIjM5_+JI r9%wrEm*DIusV1rq00000005B(>r{Ccpo_<+00000NkvXXu0mjfj8}8L delta 399 zcmV;A0dW3|0;mI!BYy#JNkl?3;%h4x(i>&+7iw%Yd zq%8z?KE5Sc0qXqX{l%q5LRV|(Y618pu6hh#y(hqL{b3(ZSAWc4F#wab_1@P9_2KEN z0NMH85hT}kcWSuE{6q$b0V}|tA=h#m83?!jNtq`sJ(oxO(n&BKj0O_}$W#o@u>?

Ag|UPjXORE@Lw1*fByo2u*XuHWCqoC>di zTK1K-0P^3M0&2;rg1G$Vsfet!rO>%e`corTn3#h6ARI(FfN*TMU_D*D5VxYho4bwZ tX;enPzov=1Q0}ZLpfjcb!!YLO3*+@TcC{fEO#lD@00>D%PDHLkV1h(C!ae{1 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.17.png b/test-integration/snapshots/signTransactionRemnft/nanos.17.png index c9de06047218fee6710335b7dfa11e5d192ae931..5ad55e09df2e554b2ee16d8fe9c2166be58ea0cb 100644 GIT binary patch delta 290 zcmV+-0p0%O0=)u|B!2`+L_t(|ob8xF4ul{KMZt{sKd=jDL4pXh0U~W7|78}+6pO#5 z0?q*d002VV*Yk@ljU6YAN0pzbxA3<99O*mO%RI6HaD)2RzBPj ziC?wc3jVdL24$scv}cU@M%khyJ_8z2Da{&Atp>mq1w_oFEPsczL+w?EHDqUiKVJ(_ zKI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJ zBU!+jqDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m`HvL00Ak4Yq} zDoUpfturAD_||eJm)on?cA;uY&HiOnossywn+d9b5%_i(_4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTY>V800f diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.19.png b/test-integration/snapshots/signTransactionRemnft/nanos.19.png index 06140342c291c111e9c068e5607f9a041bc53592..afef6551231ed55979476b9d939ae8bfa0fcfa4c 100644 GIT binary patch delta 312 zcmV-80muHj0@DJJB!3!7L_t(|ob8$24udcVh3hik|AD=57hR0DKssBXxbwveT@jQY zHD@US008(`7DeCtmX?(`+_&o`ti&&cA7NF9cmv@g?_ffSY%%n z)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MTC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ z^3atC6F?G8^)ciKTYzY)Cx?j|szfN&lVkb`Fi<@K00000fH@yYqpMgtE!LI*0000< KMNUMnLSTaXFq6Ij delta 287 zcmV+)0pR}A0=fc_B!2-(L_t(|ob8$04uc>JhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1g{Of|39L diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.20.png b/test-integration/snapshots/signTransactionRemnft/nanos.20.png index 2c164fd2a777adf9067da2fe8a520fac72d9fdf7..448e15cb013d3f7ac6c882885d276e564a5ac8fd 100644 GIT binary patch delta 248 zcmV5EO23`W%#jxN`iCGuCaiA z5gkPU02s$R@$OHhd*<$eSDizn_xL4mw5(?bde=Wm7kdo|Z^J!{v~p0a93m&WHN8EE zZyeFj=x@=X%3}S|(xRi--T~v69=5Ii3aH~?pO6iNy z1{}N(!kDtf%9+z49kbm?@j;x*o=oc*re7X5yfQVt{rFf7{Wf!J{9LjFB>3D_xyGtR y4W|Dj^gtgy&@}g(V0J{RiSz*g00000AhH3|<%1I(Jy%}<0000o?DoPQZp8vuX}ydSXhKrSlY*HmPiv zp2*K=b;nA#EjgbJR;GxTzfcz%m3n0FP58oT>Yd^&fn^uxAH|tMaD({%{$w zt6Dt?;2SO6CQrFMujGhtcR&5#11{I-;|;TBunc2OxL18t+K-Exya_9(h$CXjU2?fR oNVAh)gv(EoD}e+60KmF@071RnyRKn!(*OVf07*qoM6N<$g3Q&THUIzs diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.21.png b/test-integration/snapshots/signTransactionRemnft/nanos.21.png index 961c0c11e4c94313a1d712ed345f8071086e1d23..48bd8f6bba6d75a1561c5149667455d16c284186 100644 GIT binary patch delta 297 zcmV+^0oMM-1H=N5B!3G@L_t(|ob8$04uc>JhU+rl|AD=57bLjZLx7C7WB(T~1PjHs z6htBb006*=^SG{B)7Ws*ctUx)YAbKM?IUf+TBXO=0i@WmhGBjB9+;)_Jg%Fr-gxJv z1imP_6!vS20z6YS${WIVrEgMlp8<`8q~-{vSsg$ufw*b(<$vL=FnZUK4c{5C?H?OZ zJL1M%RaDgbTan9X4TC|PMgr@9oeq=2`jcofEUZ5j_#htmAQH*2n<^T=6=Ne7Kh5mp zqnk`1Nle;@aqPp3#>5Su)A|71zl7(JIllCuN6B!7%aL_t(|ob8(1lEWYfhUw1s{U5j&-HXg*j2!$`g6@QGdQ&xk zplE1`k|arzr}7Hb_WfLyzv=s-*IVu7kC%?X@EfgAn=N<5YS+XN9)LS2 zx6Zk)s}?@ekP{gA{}uqzgJKdZ8+o?ja>`+Wga<%dn;_zH_J49&tm_Z9IRjk8PI_>~ zk@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%BB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAV zBoLpq?a}HARqX-SSc$T$Nln9s2dIx}El8I**lx6q(d2*{#THR@Z>|{4E!(_^m547y zd|l7T$E)JpDt|KH+QbZ@ul;)haN0Mp>BJ;}xXk_c1MWUMQxWq%P@w_>;G3yQsc7O= zdmLjYH8Bd;hC03*S^xp?T2`VQagB)6D3d#AQrAwJr@EmK&#~-Dz V{lMlGGh+Y%002ovPDHLkV1gI=*uVe) diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.22.png b/test-integration/snapshots/signTransactionRemnft/nanos.22.png index f2ec3f21b2b47d8719168decea9cd5eab02c9c43..bd19cd612c78f35af1e360bb424de34f2271ee8d 100644 GIT binary patch delta 327 zcmV-N0l5B*1L6XZB!4MML_t(|ob8$24uc>Jg>jkh|G>ML7bNIfekv`a#PelYq*^G& z4m}G20000`@%@}1&t$`M9&;OI-n)G}9Q`f8+oqds&luCh(%I`&qcK|I_qPAI@QVXW zR&wNnR=i3^67a3&Oq$b6$8uw~t8Dh0Q7I$o8(oZ11&p9?hJS{?C)pAq)uz7v9WOv& z#Xi)l)DQ1A9*|})FOBob@(&VX_~xXWyF~@WAjqafcGNn2FTL8yK-WIAjuo%EQ8HGk zY0Pu(XpbQK=G;grvOfq>Vv+r!U=8MjHJFM0P5=>9K7IQXK?IfeRz9nH5rYUS&c%Ow?Lu@s*vRTEkIaJ1l0+mIyKb!!;c{)5mYTlD=GjYC>eMDf0F`1ao&c>D7AzU3RS|dw~VZB zL^4D+N6{>PR&)u4@?LVrh4?-J55Ud=ar@f3KK^wWnMG?xJAeG0fLrlo`h-gdF!|tY zK~g9j*`FsIL&l=s09C&{eDGiI0JpUL?J@-2LC*QPxqf!UJ!9O&y$1sySVCDp&KZk* zI`MTIawyMHk__VV$UZp-kj0i(lR0;TMPRkALUH6aYK9Y1N}8(+XB9~` zv@T0Xv|2*`iE20hWT%}=?%%E_&*k4!)I`albgR;>q=$hMP*>sopfd-)h|MH!nr)%e z8eoY76jA6g41^$|;ZjO0a#W65WN(pCCClJ%x8#_lBBR9%0RR9106-5P-ofs`TW#GOJx>R%2-NS+14*I25Jkd5eNj*Y zdr$*QC}A^hsL5}11=q9sNZQT-wnrJtuBQ(9bTgQ73%H)y&A{?7(-l(}NW z3@d=7#q}I%J2#%T0M)MNNa{N!H&loUgKseP-2^M3yX$Fq5(NMN0000#PLZ9bm8PR0 QZvX%Q07*qoM6N<$f^q+n0{{R3 delta 393 zcmV;40e1e`0;22nRUw^35D{fHKSIny#nk_n=cE$037GPugiBX)5s`l7Jq|}_rr=SU@A2iJ9$4W z8USWLNZmvVg(H_LiqUp~%tfsUs=Rru!N+?7dr*(}k|}5ganFxUd+SJU&McGnHU=^9 zg!29|U?B3|#1w7#1D|82Zi39|OrjsT2auJPTC=I}(peMkDMt@csg2`#3X+69{de%o z;&oxgVneDTDSwWZRSJm~BTN~*l;h_M=E_Po`OdZeifZWVP`Y{QjIwA~K>rsE%X6_V zHJO}PoNmJQx02)3Sk!5?Fh2lfo?+f&ik<1i nvN@EBj215h0000004!hPM*_v-3`+z60000Jg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQ(m=jvEBrv%P{z&lrTb}iZjgC&l4OG z-H|o3*Rn@Kq5Nt38bXkBhB$5{Zk=61kUze@F8^>DMp{wpaep4`?SQVVBNli76SdEc^0E#>GYDm6PZPeGDtPge)OEp9hf zEHR#B!6#7L_t(|ob8$04#OY_Kyg|B|AYImJ#=wY0nu77m6OFdYw?1B zV*rL>7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAJg>jkh|G-|j3ld`J52cEf?0gr?Bn7)u zZ15~40001BCg+jPqcL)4wZMF5C-5}qk+ywy5*@5ifa`Y7;ue)FxpQRxEaPRmGV#4znQgDPdDrw9(q|$SK#{dH9N)6dk$-u7W+&hxxBgPFm5KBO zD7b~b7AbFhIueofch<^4{m1E$6zUJcBrMb)3TiMP)L3Q4V3lqEl6G1mq{~{-ggXx3t;)p%AYFw3ie22CWRNDs*wfo z^#@BY>WvKCscsj5wsrQDlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{m7>3b-&;I}TmODmKHZDiwUBJT)qkwns37q-t;I>}{ipvU#id3Zg~XYt0@y zrpqhgyk$pQ*gjkEa$r=ymes_X8q-`~ZY3a@}# z_La2&^52*OYRRdBxcug+h^(}w(78?eQzKTGn1cKu97H*QaBR3>JzcyIx1zwCyN&2+ sR7StQrir^y?yM=GGo}E;Fy`kAh($ diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.27.png b/test-integration/snapshots/signTransactionRemnft/nanos.27.png index c9de06047218fee6710335b7dfa11e5d192ae931..a0f9b734c15529d0d47fac9e4f36a34aeee88c0a 100644 GIT binary patch delta 400 zcmV;B0dM}~0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTZIfWI36 delta 329 zcmV-P0k;0C1LOjbB!4SOL_t(|ob8#*5`!QNMWIvw|ASrFMLL#20;$!&rT4558OVbW zj3E$02>DlHZvhN!>!%%;caJoP2dM+5)ZP5tOCfEms75+AURL5P4lu%;If98f>X_qX7lDCs$P5`WV&GcZ_J2wVr$M3r|a z%18!2-cv`WEh>;Qa9FKRA6&(Er#e;+K*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g z%JkEzSnJPv(oV~m6j?%>N1G~@9RB-GXl9psIaAw-+JNRHmg=cX)b=h#*p)19p_C6{mJhGiM=|G-|j3zAyLA!UO6u>XrOSd?H- zNZmF<2q6THV?Pg(7#}2e(R$ay<#>;tKpy84La~ALYO4g{v7e3dXe3M0*|o3`AIX%3 z8a==fU<6gOMqZ;Q&;sY@%`m_QnB29Epr#<_FCRi>2Vc-s3xB@SL{R(9sZc4k-wBgq zsr|0d2IHX(MuNK%#HF`nF;4eRM`q5MjTrdGvdQ$Gw4&4pBTzSDn%a72t_Z5Pb)g;3 z4|p56LtoSpUw++|Y}kdhzjrz_TLd7C(-b5FNM?uwHcmLdjgJR#HS|9~ihu(5vxkJ& l7A@D1kwFL{gcuOAHXqf2j}a`)@|pku002ovPDHLkV1ob4f@%N& delta 400 zcmV;B0dM}g0;&U$B!6*9L_t(|ob8#>4#OY_Md`Bs{|EP>dobw;AakooUGI5njX`@A z6iNgD0N}1HIm7N75z(@~pT%o=K5zW;JaUE=(jRouZdqqhpNO8>6R5+N=MZ$?Xj$Lu z#9ztsA*Ta}+Z;=h2MEm1E*n`(Cgdv;JJdQHjj8T3i3bQGB!5dj#8SWO8BmL@qN-yiT)Ofz=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS> z=C1|bBC4mlgMYRrT68_N9|QA%mXxQZ4;RiUA02kg;c^CF8;5jK2LAX3kQC4&UvH)Z&j*8PxQvAO(0p?Yt6tIdOnD uwx51ZWYgBn4%|Za?Faw>007{>c>zfN!b+jC;amU!00{s|MNUMnLSTYb;J)zy diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.29.png b/test-integration/snapshots/signTransactionRemnft/nanos.29.png new file mode 100644 index 0000000000000000000000000000000000000000..2c164fd2a777adf9067da2fe8a520fac72d9fdf7 GIT binary patch literal 368 zcmV-$0gwKPP)o?DoEcLa0DuE#FQoqfa$pZ~U=MO&$x!sqxje7rh;Mg4{oeyF*XZL7 zvu3aiV@Z+cTTfS_n-iIOBqlBevoP@64x#A?^X5FUU#D7VhJuB#S4(vTAv`2Q9F(Su?VD;s&X z;d07hfrJM@Tbm%_a`tjrtm_Z9IRjk8PI_>~k@FL;GAY^S3^=Z&RSOQX_PGkJ_W`%B zB#C6j@t$1C7_28_u%3*;N+j>Ms-eU6%cHAVBoLpq?a}HARqX-SSc$T$Nln9s2dIx} zEl8I**lx6q(d2*{#THR@Z>|{4E!(_^m547yd|l7T$E)JpDl*^N#0;UY{d)p%+BdN2 z#3X>Y%>DNR?mjzH5%WG!p#lQno2f~uXyR3S9AhUnF$&j)I=&lP00Hn?R-znnjfm4I zlRIcq*G`(Jx}gx{x;?6)%`(~fp=&}YC(P%M2=}F5*TflM)GuewfV-=bpzwJcvb>7Y vdmDCT%WG&D!`sx4*#8CXOs0z@NuI|arLg_L<`pwz00000NkvXXu0mjfVXfLz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.31.png b/test-integration/snapshots/signTransactionRemnft/nanos.31.png new file mode 100644 index 0000000000000000000000000000000000000000..3408c80d8127b4e38af3c050ef877da8e34910b9 GIT binary patch literal 268 zcmV+n0rUQeP)?=E z=FWlM^^e`=u9CH6`51)0fa)_+ErBr<-p%CwKM2FF3(W%N{{n>2B1KC~ye?YGR z)BLP;y8P4E$SB`3>an*1c4evbfyo9Gz6Z++W`mV?w%3U@Q!nD|WLjsK?mTSB?F00F ziZ837-)0_-k0C2SUVB}o9dBJygVnzhdZ3RUXgc?o;Or==CaMnr000000FejlRCyPm Si^rz`0000o5G5s6>5+zS4+s|IDIYP4sJ`9|5IBt8Qg zQ7O$DPOS#O6$M1hqb!HCL+w?EHDqUiKVJ(_KI6th6A2Kpcdn$(2#q^bT=EFl|ub&tlJBU!+jqUtP)5v5?0001>i}!2$WJV1ydCb>z=H0F9 zP|SA#&loeystD`G>fQZTi?B$__p%;TL!& kVDo3Ep#T5?002ME2e-#KOW1RwQ2+n{07*qoM6N<$g5#%_djJ3c literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.34.png b/test-integration/snapshots/signTransactionRemnft/nanos.34.png new file mode 100644 index 0000000000000000000000000000000000000000..afef6551231ed55979476b9d939ae8bfa0fcfa4c GIT binary patch literal 339 zcmV-Z0j&OsP)>tpt$qJ3tbVEA2nww0RRB_R~ALz`<9lKINZ1EC9K3R zg&$#6h?_ffSY%%n)W9Fqz?0eE1X;X0HrcW>ialZ4T2=MT zC)($Nj~GFW8>o7E$r5wRAy)(;z7Xr>KO4wZ^3atC6F?G8_2dX!fM}{Ghlv`hL@3ph lWBLg&P(1+v0001hIUh-*t5`ZM)|LPO002ovPDHLkV1i;nmB0W1 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.35.png b/test-integration/snapshots/signTransactionRemnft/nanos.35.png new file mode 100644 index 0000000000000000000000000000000000000000..448e15cb013d3f7ac6c882885d276e564a5ac8fd GIT binary patch literal 275 zcmV+u0qp*XP)5EO23`W%#jxN`iCGuCaiA5gkPU02s$R@$OHhd*<$eSDizn_xL4m zw5(?bde=Wm7kdo|Z^J!{v~p0a93m&WHN8EEZyeFj=x@=X%3}S|(xRi--T~v69=D>5I_@9J~+0n6kynnbRR1v)xGXL7d8-OzRn@ zUmiBRGBv&Z_*f17HgjwIT(Scs_}o>w#;QdPrvD`LKp#EOH20fec0{U)^Z@_>0000W ZvH{cOgA*J*S6=`C002ovPDHLkV1gj@cuN2P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.36.png b/test-integration/snapshots/signTransactionRemnft/nanos.36.png new file mode 100644 index 0000000000000000000000000000000000000000..48bd8f6bba6d75a1561c5149667455d16c284186 GIT binary patch literal 324 zcmV-K0lWT*P)pcBOApa-RW> zgrw#OrCA+7EP=Rb^yT5LFnZUK4c{5C?H?OZJL1M%RaDgbTan9X4TC|PMgr@9oeq=2 z`jcofEUZ5j_#htmAQH*2n<^T=6=Ne7Kh5mpqnk`1Nle;@aqPp3#>5Su)A|71zl7(J zIllCVv+r!U=8Mj zHJFM0P5=>9K7IQXK?IfeRz9nH5rYUS&c%Ox1tEDkmUR=Kv+!#)d`|H zHPrdTk0B)yR4qpzSb`2YX_07*qoM6N<$g1i`) ATmS$7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.38.png b/test-integration/snapshots/signTransactionRemnft/nanos.38.png new file mode 100644 index 0000000000000000000000000000000000000000..226d954bf9a24fa420ba00d258075263f6362d0c GIT binary patch literal 345 zcmV-f0jB0ikd>sDv7}x9Q+0qFWqvdl7BSfLvBWHLE#r^W>ZlU(ML`ma^Nuz0@lmqm& zZ~^3qBqsMdm)TNsAGAQe0OTT&YePQQco?k!xxP#5ZQbKMFO4MWIcKGGZD_54?xKVN znI12kMq>GOJx>R%2-NS+14*I25Jkd5eNj*Ydr$*QC}A^hsL5}11=q9sNZQT-wnrJt zuBQ(9bTgQ73%H)y&A{?7(-l(}NW3@d=7#q}I%JD#=x)vo7A>N_PjREP?L rZ!q=U1S_Ds>uGor1poj5002Kuk)5ZNrlTNl00000NkvXXu0mjf{@;`j literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.39.png b/test-integration/snapshots/signTransactionRemnft/nanos.39.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a5f8f9299ebd99bbfbc1968287df0fc6953528 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsVkl?jv*Cu-d=YUYF6NJxOijb zcY6cwmUS7p@>zFU^>{FaiN8P?K>yuyC z3+;yglDlG#Oq`sMCcJXRwJ$MB-%41fA51>D_DsUR*#Cyx6ef1n?zyzDahp?8l6I|RQCib_mo>i~ zzto7oTKnwsk6o#(9p86br}RZOYn}NwIiUIDih~}-^I0}4FIApc3-k{VbmVO5ZWP{D Rs;2?sdAjz3cFX?h1(OZ38MtT%W6wid=r&QW>tHF^E%3VEw<-U{Y9r z5LJeS^@jo<*aII}QZj60MeVm@WW>c!Gx_-FA!CRWleQro`_Nlq;hL{$egNuU!sGB9 zU;Nk{p9Ljerja*)AV6CRs_e%Z6Q!VUGLZuuhq=Ia-T^Yjb5>W|Pyhe`003~|0ALB3 UBpjz3d;kCd07*qoM6N<$g2<+YJpcdz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.41.png b/test-integration/snapshots/signTransactionRemnft/nanos.41.png new file mode 100644 index 0000000000000000000000000000000000000000..9a00d17e400f35acd3c3764c453ed1a77baaf109 GIT binary patch literal 346 zcmV-g0j2(lP)+}_qmTU@58zS zivAYhZDVHJ8DR=6oy|jy!YGOV+y0|MFAgMGNs&(4(5eXwhc69R(hV;i%Z02dHv3(# zl%9;uF2<+=W-u0^;q!zok)qnvx4+{B2&CAjYSrvev+~{h*LFM7wrwC0@xwZOP-G>;OphEulvG%|wsP0MNuNil{CaA6}=WhYRBbuNIT{qPE s%a0+}P0)m*0?-7dLjV8(001E40E0$^ZZW07*qoM6N<$f>1!33IG5A literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.42.png b/test-integration/snapshots/signTransactionRemnft/nanos.42.png new file mode 100644 index 0000000000000000000000000000000000000000..d04d159d7a692b944be24dca28077aaf2c3e0dc5 GIT binary patch literal 345 zcmV-f0jBk+R@*oj{< zJHn{ou>oO`{y5_0GS1K0wUrYZM(gKPTF6ZGTV{AG+5PdYZl&@$gHqa0oo3V0P)<~!ND?{1Wd>D0rUfq@XwytrR*9a%&IcFtzeT?dW$Agj@ z6l%P38j0oY+D`?o2%`TuH$sZ&D^V3#L|+x;z#inl5-PBa8fx;4K0x(sK9cq`f$UMo zVAXRBygLtK+ybhn`2ubr2=SR%FTZRcM?>+J!Ws`9K+>#wp8YXLRk}@pH`SA4h#IPd rE7g-@`VM$j^)x(&0ssI20Dy!KV7aB0166v`00000NkvXXu0mjf@(^bU?%60&Z9AMXSKk5XD9G9 z=aII3b`l+|P=M=p&f*r8E4g!I{w(8Vx-#M zNi&k(cMO9IVEN6;pDOwa_DEwUg%_Wykp=Me2TL#NjSSqWZWn;Ib@tF!Igt)I>=q__ nmq#+826)uE0ssI200id;1)%LLJs4yv00000NkvXXu0mjfEAput literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanos.44.png b/test-integration/snapshots/signTransactionRemnft/nanos.44.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eac39e479dd964eb87fa54d56480cf7e8bf195 GIT binary patch literal 424 zcmV;Z0ayNsP)?3;%h4x(i>&+7iw%Ydq%8z?KE5Sc0qXqX{l%q5LRV|(Y618p zu6hh#y(hqL{b3(ZSIl5B0F$-#-q#29;pwUX+4Zg~XYt0@yrpqhiwgdAs<9Ii2G0U9~- zS8gE50t!@(v-t(5qn4Yh>+Y`K-^H8?uYg+im9+r!-WIivaPwH_s2>jV1y1r1f-jNx=sD)Er1!#^b#MijzNfkI;Qa9FKRA6&(Er#e;+ zK*74F;ch`jPH1s?Ug>X1X9=!a?tZad{s&|g%JkEzSnJPv(oV~m6j?%>N1G~@9RB-G zXl9psIaAw-+JNRHmg=cX)b=h#*p)19%?El@*$@Khua)Wk_QOP&n_ETOD5zi z5j#8SWO8BmL@qN-yiT)Ofz z=3@TaDE;OZkcjasJfC9AbjKe}*@xkTnXuS>=C1|bBC4mlgSIAGbUn2n1M`5El&7T+ z7tSdk9d^v(v#DckEhBG@13iG38Mx5jhA9(AZf(|#;O5_<_y9Fw2=ehIUYo|^Xb z&*pj!$5NI9XRqb1tN6`+S1{mcl;M}od%*z@3`>O0dmO0;n%Q8wrJ61Ltx`|Sk!*G6 zQtd^rORUn;;#S@{zVw=GZr$y(72CP^|Ec`>b}g#2gv*7`y)>eBtySrU4?k|^_5L^c z$`R2R&3;58c+KsH_x+T^Z?3v{u|)YnSa7S|%#F-t*P0KSE0)C1`>^FJ`;!x{&muGB urm}0yD&*Sb9QXON`oiR7h`*qu&290-FU#hi^hoRhiFmsDxvXQ0-pqsB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjfxLNo8 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.07.png b/test-integration/snapshots/signTransactionRemnft/nanox.07.png index 34e5ceab69c61f6e41008ccfe72708b5eb164f9c..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 100644 GIT binary patch delta 349 zcmV-j0iyoS1NZ`vB!53iL_t(|obB3C4uc>NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfJz1d4 delta 436 zcmV;l0Zab)0?q@FB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000 zFa|@Q3jqKC00000|KefYfO#pU<2uG@*pd}42cYcwlE-22HvmWPm))&qy707az$DSp z?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%=K=if8uFw4Kf&$ynn}7I?gBSn+0N_?CShuC8 z6~p*`OLki9_vx||1#dV2uPwEx2hsW?Nqu(BIr%rnSQb$ax@rhW{W8-j)yfnNK9#ie z@$ru9@l3UJ$;PZTJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000{NpTwVCg2tQGThxaCEUFS@TDry za&cFcQYx=M_MrsT6#zG*G*?Xjpt}O9SSyA;)4K}_+=g!A8h;xx0002M!Nh$)N~x+C z=fi3n6=Q7QsoF6thXOFbU*DL`Vv?HU2;{=5!DHht9p*8{yRFTRXs;`UjYlMo&W#<00000{=yS@ W7xiApCZWFo0000k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f{xbX3jhEB diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.10.png b/test-integration/snapshots/signTransactionRemnft/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..34e5ceab69c61f6e41008ccfe72708b5eb164f9c 100644 GIT binary patch delta 436 zcmV;l0Zabe1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)3@{761SM diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.11.png b/test-integration/snapshots/signTransactionRemnft/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-11E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh00000fhdk2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h8JwJ-nx diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.12.png b/test-integration/snapshots/signTransactionRemnft/nanox.12.png index 8e0d2a3791e60716616ea03122987f407606d08e..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 100644 GIT binary patch delta 446 zcmV;v0YU!z0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$fIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000sX diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.13.png b/test-integration/snapshots/signTransactionRemnft/nanox.13.png index b91be3ad6af216510007ee918b2e28a024ce5996..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 100644 GIT binary patch delta 450 zcmV;z0X_cG1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)(xB8UO$Q delta 440 zcmV;p0Z0Da1JVPKB!8JnL_t(|obB5|a>F1DKvCN1O?>|&ahEQbGE@kH6N6;@-zp`T zQZOPBZU_JX002S=F~%6<>`R>ZvhILXj^lA0{c4>GckyH0fl=xWo~J>~N3L9!7Ii>p$3*4iBk0?=F*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k z*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwhvAW@cP**_b#V7Bo^+#H0T{X|r6`Ir|+7Yf-KxaQtk95ZG-`0lztWEf=&Ogb#-7$#yH-?9XAU|A(pczD0fhdx2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h&GwLJg; delta 929 zcmV;S177@<1GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DLc7V0 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.15.png b/test-integration/snapshots/signTransactionRemnft/nanox.15.png index f9daa857a29cd5cbac1d90a6571900c4d7f78ecd..8e0d2a3791e60716616ea03122987f407606d08e 100644 GIT binary patch delta 352 zcmV-m0iXVv1N#DyB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$f-DQNqW}N^ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.16.png b/test-integration/snapshots/signTransactionRemnft/nanox.16.png index c99a3e46cad18f17bc207b022a9f85232660be6d..b91be3ad6af216510007ee918b2e28a024ce5996 100644 GIT binary patch delta 440 zcmV;p0Z0Cy1kwYLB!8JnL_t(|obB5|a>F1DKvCN1O?>|&ahEQbGE@kH6N6;@-zp`T zQZOPBZU_JX002S=F~%6<>`R>ZvhILXj^lA0{c4>GckyH0fl=xWo~J>~N3L9!7Ii>p$3*4iBk0?=F*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k z*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwhvAW@cP**_b#V7Bo^+#H0T{X|r6`Ir|+7Yf-KxaQtk95ZG-`0lztWEf=&Ogb#-7$#yH-?9XAU|A(pczDZ1D^ztB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjf%!>F2 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.17.png b/test-integration/snapshots/signTransactionRemnft/nanox.17.png index 15ccd7a8469943e795e0044b1869e78c36178dd7..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 929 zcmV;S177^p1hxl|BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DD+$TX delta 572 zcmV-C0>k~b2h;?RBYy%LNklq?fAdX|)OMVOyU6H>F59kz4SmmD+$;)@_Oah+b#cJ+ah>wl>hzj06pq!)S`qj0zk z;cu@2(yY%lUtM{niFdmG%mZscn5gQ2FM2oeX4mvg2h?0^rqnTxo=4hiX8C?EbTrLg z=`IyrJp&pRanK_CKRLw(t)_NyI2izdCDBlO04KCUKzdXXKi=oI;gep4-geMs1F9=r zow3XFyCBObE`K9y`n2dytbEQYvsePLzv+OM3hGzNPd%}ezB%FS!ltUX$~nWT8BmU+ zu~9Ream>~pLp6t1UL-I3$MS#VQwMY^Ga;K>A*vyQG=E{`%N0 zSe>liB{#ol{*FZ$0002scy`R3?tS!b8U{EGYx+*Y5r{(LmlLjBPy`wcIT-2BUej*E4- z8K6WHbv2=sz_ z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$g6dPUcK`qY delta 436 zcmV;l0Zaaw1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000D`9UXLRcO46U}Mw4|_4S*WjB)*Q$F5W!IVynk$yX&-<|DEBliZuFoPf v<)*T0%qryCJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000NMN!&xC+vSovzLCD5CS?ujNrq2zSL;J z8Ki)Q00000004lu_{^?AKQl|)F~*5Cxk54ldFXSBY0yhRihdsM-GdUovn$Z42((<> zRhe1d|MJ&T6A-EnWLSxVjeZ|6ebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx) z0001Jr}0%pF;;5aoufJHNVv*b|EYJi=6b4M#yPZF{d3oX3ad_2WfG8g@hjzE!7fP4 vf(g+26PD?M8pC>O!4&`i00000z>E9=)|<@Q7t5CZ00000NkvXXu0mjfO8cPJ delta 446 zcmV;v0YU!w0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$f;}GNZvX%Q diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.21.png b/test-integration/snapshots/signTransactionRemnft/nanox.21.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..928e1056207c985e5c67fdfae5a4ab51d353df7a 100644 GIT binary patch delta 364 zcmV-y0h9jR1BU~UB!5mxL_t(|obB0B4#FS|fMGP=g!>u<&k`*oopzQjR$6@d{07vha-K}Q2@U(8gB+=3C z`rWIPQu+VWPrBfB2Ea_~HTU@X2fs5w^tH#X&;0Fz0^87=_9P|AZ#V$2Ew!iz(fT7veRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn z@s8{9Otq?00l0~q_A@UE|LvIpSD1UkjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotK zz6ZG9NDQkNr)9-w-!KDmBgCR4R@8nC^;%lyiyM`7ss%fx`k5p5Y9#>x0APSyFMl^KAeS>jCL+ud_9p!!_F^p&^(NF*Y0000008`%hR>g0}TDc?u0000< KMNUMnLSTZu=B(rZ delta 450 zcmV;z0X_bQ1Kb0UB!8nxL_t(|obB3Oa>F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f|3Z?&j0`b diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.22.png b/test-integration/snapshots/signTransactionRemnft/nanox.22.png index a7a8740548d2608032872a36bbf128b89b69847d..c3ac3fd8fa4e7c4aac4a478d65c1d7fcba7348ae 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obB3O4#FT1Mo~2Gg#9mxz4$<42tQ-B!tm95o~%|N z!%)lA5C8xG0002+FK*rg_+Cos^*YArIFd6YC!h>{NpTwVCg2tQGThxaCEUFS@TDry za&cFcQYx=M_MrsT6#zG*G*?Xjpt}O9SSyA;)4K}_+=g!A8h;xx0002M!Nh$)N~x+C z=fi3n6=Q7QsoF6thXOFbU*DL`Vv?HU2;{=5!DHht9p*8{yRFTRXs;`UjYlMo&W#<00000{=yS@ W7xiApCZWFo0000a0ot delta 378 zcmV-=0fqjP1C;}iB!65$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVO1+Gyi(^Q|oVT|E`I;33TrXx`p1a|{>e;woiC!EX8x?pKf3FE$+r%Fj z=*j>FA4K$Db8QK}`op>G?0c)rmvQI6<}x|eR5pEg_^Mg+ z>ig7VKipzYSXMTp+UC#EeEt)gzDfK&c0YDPf%LA9YMvwYKtmhSHRemkd=*((sr>75 ze0zQEGjU75&jmW`R;-$QyyUd0gXO-vvLCOd&5LoJXH#*nsiQDu^3D63T-DR(#YbtE z%vxG~;LoDx<=mUuI23atr~i(b=e90LJFw@{bk^zv0b4uPUYc$y{op~>g`cWN4rFVdQ I&MBb@0PSy$f&c&j delta 352 zcmV-m0iXWW0{a4xB!5ClL_t(|obB3Cu7e;Dg<)=Ucf$UcG<)fT37LoxsuIc&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000NKvCLsC+vSovzLC@5CS+s8esbZzP z`!qpKX&J|?eJY^2IAc8e!O=HBcQ((;CjF1DKvCN1O?>|&ahEQbGE@kH6N6;@-zp`T zQZOPBZU_JX002S=F~%6<>`R>ZvhILXj^lA0{c4>GckyH0fl=xWo~J>~N3L9!7Ii>p$3*4iBk0?=F*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k z*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwhvAW@cP**_b#V7Bo^+#H0T{X|r6`Ir|+7Yf-KxaQtk95ZG-`0lztWEf=&Ogb#-7$#yH-?9XAU|A(pczDhQYW=pk)x;1!y(_Rt zG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK+z}w!I%3mT@m4{JWq;@){>DZO00008t2Dgp zGBb){{C-V#GPe72-i3?@cEHz`Qq+xT|B|HNyVjKYn{#fns2g211f;&1ndBNJiV8nE z_4MQIUB~wm)uJ8+;1(`APkbr-w`T;rVeJk#{-3BrM2t53<9}`kq;9aknrl=}Uu-=P zr_1)d4+y`IxPPsmoQ(IrVFc7lh)GGzsPhu~xwK6e7i!B?Gfr~N6YpGWbP50ffJaPU zMMU{7LESEG*~fY=MhSv$Db2JIBM9n=An5&CO&k}Dix>p8Oee>6K#CRwHBRQHXedEY u`%-Fs1P}xj*Y%&40RR910000?d;`f}(-a;X_l5uf00{s|MNUMnLSTYMK(lZF delta 929 zcmV;S177^81GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf Di%-d+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.26.png b/test-integration/snapshots/signTransactionRemnft/nanox.26.png index f9daa857a29cd5cbac1d90a6571900c4d7f78ecd..174e77ab604f8ca054099ba68d089f9b9bf9ff8f 100644 GIT binary patch delta 380 zcmV-?0fYXT1D6AkB!6B>L_t(|obB3Mu7n^AfML$$?1cRu_bq;?0`1(t&H7}uLJhzx8WWhOyT9-fQwY1 z)5Se25ozx~_HGJUX8_zB4fBk{zvP_(D%Kf8zsa`>Dl9{Tcz?!&7ytkO;9%l&fQYD! z@wTfTqiU`F5mk8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuFse1$q5uE@0002M ak9q?HgZ^INbq6E>0000 z$z#);FG-hgn|j+|c5JWt)9W}u{BMWZ^XBD7K;j+aWldc2p7u(Yq#nuPgv2IphlUDCY-(~(6#HvQV*OCG( z$pip^dy`6ivUhuo^}6F5de8$u33r7n#_j$K+BJG@5>&7P*k1!g@w6={913u;b_<$( z#eBAh-2hraH`a$d2SiL={}mju7b(TfyV8B@5=r3HAA=fPj~V~~000000000000000 c004;T4}*OhX3ZBpzyJUM07*qoM6N<$f|xMA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ0000V1D^ztB!A{fL_t(|ob8%jmV+P+MwvOY6ZXF(_A(Eia;QLz`~+<8eX;=q zH4yL<=Kufz007MSv1}}aa9nurYnFchovwyB(er21j1B!yEe;4X)&wAg;JwfPZEDG9 zNop62@j7jyc$a&Rnf=pu&i&dqDd1nY$|KI}3*L?x2zQ-IV}H|@>=l6ULaw7UK7s`S zNJm+o0Stzr@iHs3Y!PlAvkkeZr}Atz+65hJW-TxSGtbz)@8?sD%H>jV>8HWN4E9=t zzmSbm&}{M)M+yRfFK4bAs+VzGMF=XoB6n*!ZTo6P?rKxmxn*p=*I=Kz(JrVs>TAMT ztZ*vLC(2=o@_$2mi$;9iO1HR8NXUzXpK|5g7_arlqN`iI8p8A$kdCa~#u0DA>sj&* zAZ4QfG-RO8NfGei75?i#22M4M_j<@|fbOS7}l0w0?H+?>ytBtU;cXjXmnA;91}3 zB%yTT3>fa}G|cQXH{+3NDbAHf5z&JbiapA z#?JsjUzClt3jK?)Qa8ONuL1x7000000000000000z~=k|OXJUZpk9w)00000NkvXX Hu0mjf#CG@t diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.28.png b/test-integration/snapshots/signTransactionRemnft/nanox.28.png index 15ccd7a8469943e795e0044b1869e78c36178dd7..6f7fe29c4975e059be61436e574db47d3eceb9f9 100644 GIT binary patch delta 916 zcmV;F18e-$1gQs*BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000k~O2h;?RBYy%LNklq?fAdX|)OMVOyU6H>F59kz4SmmD+$;)@_Oah+b#cJ+ah>wl>hzj06pq!)S`qj0zk z;cu@2(yY%lUtM{niFdmG%mZscn5gQ2FM2oeX4mvg2h?0^rqnTxo=4hiX8C?EbTrLg z=`IyrJp&pRanK_CKRLw(t)_NyI2izdCDBlO04KCUKzdXXKi=oI;gep4-geMs1F9=r zow3XFyCBObE`K9y`n2dytbEQYvsePLzv+OM3hGzNPd%}ezB%FS!ltUX$~nWT8BmU+ zu~9Ream>~pLp6t1UL-I3$MS#VQwMY^Ga;K>A*vyQG=E{`%N0 zSe>liB{#ol{*FZ$0002scy`R3?tS!b8U{EGYx+*Y5r{(LmlLjBPy`wcIT-2BUej*E4- z8K6WHbv2=sz_|%Q*hnUzb{nib+{KS?b?v;+ zAJd)7#jq9EmbA|Ft8=TVSf$Ro@&$IS!O_RZCm&p2&cHQ8F|;Zqd49B_iT**N{s$`#9%#QupTi0 p0000000000000000001RPk#&Tc`e{iGe7_U002ovPDHLkV1n}Z<3s=e delta 562 zcmV-20?qx{1Ih%DBYy%BNkloVdGs_+$U&~tZX7H<}ZV^IQ)(0Cp;Ca2& z@MnK<)EvG1-h^mMAd z(p)NXanK_CKRIOz@}`{Pm}dY0T(Y6|1kP29|MV;=^LU#q;FE4$t#EKk0IDnW zez3{@D9GZ)X@6!-9~RAl6;l!EBbG$$X*mpykWk)IE;9{Pxh{-lyRfRtXy-UyBOvvo z4zEem`jaiIv2j<-PWXofiP$RpJD?-0<7CMeyrv-IXUZ}JQWzTNqH6u}?_<-j>hG}9 zu+pmcScCxp0053>#o5s6hIYy>SBX9?N4o|svB$ofaeqBcrE9aaGH%I;hB+HCOEysw z>btP!9<9{YJhCWhNS~G3RhmA6j%1`RY-T0@^hZHy%Wg(i9vndPN5FJdnNw$%Q}U+e zpvW^aF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)3@{761SM delta 436 zcmV;l0Zabe1I`1GB!87jL_t(|obB3OZo?oDMp0U2C+vSo?4=J#2r+;${(-N#=b=h0 zY||NgWX5q000000007_OXY~Z;g%Hwb@BPA=Tp^i&JoGumH0UKDML!RBb)$se)f1Rh z1X?ccszL~P{po*|pn3;jnbu{lc=MA8182V$!>S+bn8RH*DN|y1 zK;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~B>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0Pnlu zR}rn%Q|DK-wtp?tI>N-r&RIHR?6lJ^t!Y$uf7?iFWuk}UYQOvJ9KSm9mTuD7!Dnr{ z5+3g=%k`fNudak!-5y&&sxhrLmZhWbUPwSuK&yTH5v?jbH z{|MtF2WOJJc~?D{fVuiGQj5-x+__R+O@J-y)rYpC6D>Irj`0>|^(?o{#5TaU%_{%^ e00000fYKiqYhVsUxOqkZ00000fhdk2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h8JwJ-nx delta 916 zcmV;F18e-11E~j)BYy*MNklJSB=536Qf)cBMaZL<@5fZP zt%w39kW6buQ4~c{6h(14e*$Io-pA+TIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%= zi4ugDk+k(#_>!e(FTr1d{2{sbKJR;=4Z;k7A^m7@u4)8I(|>#r@5ub2Av2I-NezX@ zR3AF|8!L`;sFSfC)s;xIk)A%wRO1gw07Hy$F6AT40NC|H01loFY2(z3S!4vLHb`Ab z64{22F@RCarI05NiVKV<9Elmk7+~BdjIU(3{vl-2dG;aP*ppL_Yng?=FOI?1WZ1y1 z%qm-z6fYcwgNhke}%co z&JHg}4=g)BG%t`!r1Qk1xc&zpIvb@_G0yj63Dn z(6T`!?z1Rdlfp{v{+-nB--&1U`-E>Ad7xc>{|zUc`$=tA;Z$`CY{opmQCT(iw5JR9 zsbi(hLw`u&{Zsh!-QYVDF;F0yla#rUe8mj+ROK60vKOE%>XD1GXflh+&4kBf#*&Ni z^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{g%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_W zv!+todl_gb|C zH#Ii}*P`ldXRQ|07RwUhiHVTxknOnff?NqFn?h&(HuThZC)>UNZ&8F821xwX=1%XR(kiqKyEX#c_*-Kc>3|@HzeG~Wm qkJv3-6TX(GKt)j$MbTPo{{UVUIZ6ejFbzWh0000Ic&%zXaoA4*Ui0a&Kh%@wP*$YK8Uy@U{Kh|4pQBY_Hxd; z876K6sCVr_K~qr9*-wP}9sDIt1pokm$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>? zO;EqA+sfOo?pZd*G(H^l;qJ1-!uZKwKkwX4Yy?Dj&Rl^Spk#(RC)5e&-1D#8eiO-; y@RI}@0Ug(~M;TtJdR@mH82|tP00000Ci?;;WzoA6`rWMn0000sX delta 446 zcmV;v0YU!z0@wqPB!8btL_t(|obB0dl7k=&fML3`H{t$A%3bz{vl$vbYlEQkKEJF* zpd^6R5C8xGfXlrc>k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$fF1DKvCN1O?>|&ahEQbGE@kH6N6;@-zp`T zQZOPBZU_JX002S=F~%6<>`R>ZvhILXj^lA0{c4>GckyH0fl=xWo~J>~N3L9!7Ii>p$3*4iBk0?=F*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k z*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwhvAW@cP**_b#V7Bo^+#H0T{X|r6`Ir|+7Yf-KxaQtk95ZG-`0lztWEf=&Ogb#-7$#yH-?9XAU|A(pczDF1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f)(xB8UO$Q diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.34.png b/test-integration/snapshots/signTransactionRemnft/nanox.34.png index a7a8740548d2608032872a36bbf128b89b69847d..c1dd7f062713241ced4aa93d07412ddd29031c7f 100644 GIT binary patch delta 929 zcmV;S177@<1GWc{BYy*ZNkl|b6 zgb*N1JEbH^k|arzB+2RgtTe8*_Fs?Vc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0U zTuS+Mw`?45hVtfj`*oO)J21E;c}VBAuema=KX=Qm^g|lf8h^V69oF<}vu)i3?0{P9 z;?kxTq~u#m;Vf)oei-luHB=YZy|uj*L{%Qo~CX(GW#?f*xl2iO7c0; z$vI$P-`H&J?wpPihK&A|Wc06OOZ3g`smpdfwEmRG(uvCUB8>tci0RuIiyiEPjj0lg zDdT;^seg`44?+7YOlv{N4aFfJu|}l(3%%vF3etU8@lbJ+4wkhqjTi9*x(VwF-{58C z1h`qKs8Wf*M?Xvfww=9HR-S^Ly zmD^9Oi&55QALpYwV!6c&nJ07WGoT^mdLKjf*!tQhNs{D?QS?Qr+Hm0nFQshK)J3tr z3-gwXS2G*3BT~FwLJE^o&N?TRC=KyKWaN&xD-F%1g9H6Bi@gfXUXjeo?5zj6E-9wU z=YI{+tVZP!yz9y-l`(4Q6jB@!!H!mD3uzZa2`e`4kmU0G6#x890l8jaw_z# z%)?`NpnRPQY{S^s6%Xa|O<7V6y_}qYBpOMQB)N!x75`A8zm~T100000NkvXXu0mjf DLc7V0 delta 379 zcmV->0fhdx2bBYmBYy#0Nkl741nRZ)1A2gCApVAIJHa?DHI8e{@+uN zmk5b~2N3`O00000000000MNywYxH$pMPyl){kQsa`<=hB{8Uw|8iSmrZviC9SK95W zB(`U~U$l0w(GB>%kCNoYmQ5Ymhmk6+3h0IvQwBRG(#Tz_^?&Ra+H!lcd`LET`!&jz zsm!y|vu-qZo^%`2!(1a^hNq_$4VbCAkAR~$OD)BxcXhV8{z&K)6sfSN_L|_DMHC>@ z$$cDTCZdvSto5U?c`+kq?0g$RCB3$60aSY~I|WTE{ce_kf5hUcS8UF8_~`2y5oVhe z?}hA-MD`tHlXSvY&|m}hf{r#X?cSuAeeBw^?h*SGw_(?$y6x^h<`4e7rS|$vkO1R% zL(kQi#Q4wi3$6iw@2ze(29JXa7NAjZ4Wg$YwQSl|v|Zs2=uH=400000000000001P Z;|+fG3wcXk`{e)t002ovPDHLkV1h&GwLJg; diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.35.png b/test-integration/snapshots/signTransactionRemnft/nanox.35.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.41.png b/test-integration/snapshots/signTransactionRemnft/nanox.41.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.42.png b/test-integration/snapshots/signTransactionRemnft/nanox.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.44.png b/test-integration/snapshots/signTransactionRemnft/nanox.44.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5570e4ad76e405b0ab284b7077def9e571c6fe GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|WK(M-^SI@yZbnAV^mPXZ=4>vJgy0F|P zta(4zh8N2p-t#GWXuFG{cay{J?%m<5W_`2&JzK9Lmr-I_+3e~)e~;#KpGbOZ_+{e$ z1oF%O}kFDOe-Lq#IfB@ zX=k}2k`FH3P2a%Li?JL1u@4ipJymCVC9!_dxKpxz13FFVnx|yCXa$6(12N0dnDu_Z z^ijuZOy7VQV>tlTTijSxr7ZGsb=sym`{6*=0002!xAa#L)nM^(YNjtARcUaIvh35I zD)WYwXMbM5jB7b<=IgEnB{#c~J3A1#)&+ImXEpnDK~C*c0V_9ig`58X-QhYb!%zSK e0000006$-8P~rC*O6s-%0000&HPeNk-3^!|I@(>odzDhE|9{3w7rf2@Y}32VJ>LGo z?+g%q?Xl}Ke@{Vy$IwH3#zqVP003|+Rd%;!q!+{Z|CX#|?Dy%i69o?(fZrvxs2kDt zB}uz?%{lou##k3oH@a#FNPROiDAmgp4ZfA!>Fwo}Pd`A$pFhxTNg4)f`0D_=x5&!@I0002Mx&8o4c+eE?#J;xx O0000?~^z(36zm)KvJ%E!;pylGODy5X4fBa1esu_T3TFYE<`3Kz$ zFtJt){YLL9C~z6Nh-ci00RR916Lh=}NGX|$@wRDhqhgHZH>MqDuhZj|F(2=AU1h1# zd?=6iTRYO@F9Y;i7*^`|bZU3At?o|C$9V{ocWMq>?f$v%1oUGaEknPr1H!-f;$3J*N{W#yz9zDZ?qmn_|8Hu%Ws)toI73Kn7Huu6pkIu}E5|PJmq1 yvqkmo=%7~hY*{@6?yY)q843UZ00000{I4&Qe*0c&hQ_x50000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.50.png b/test-integration/snapshots/signTransactionRemnft/nanox.50.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>| Date: Wed, 18 Jan 2023 11:34:03 +0100 Subject: [PATCH 66/83] APDU docs update --- doc/ins_sign_tx.md | 261 ++++++++++++++++++++++++++++++------- src/signTransactionParse.c | 6 +- 2 files changed, 219 insertions(+), 48 deletions(-) diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index f620e3ef..5a935d20 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -49,7 +49,8 @@ Ledger will will process only certain paths, other paths will be rejected by app **Return value** -FINISH command returns signature and serialized transaction hash. All other commands wither do return nothing, or return newly encoded Diffie-Hellman blocks if we are within DH-encoded sections +FINISH command returns signature and serialized transaction hash. +All other commands either do return nothing, or if we are within DH-encoded sections return finished blocks encoded by Diffie-Hellman. ## List of commands @@ -57,7 +58,7 @@ FINISH command returns signature and serialized transaction hash. All other comm ### INIT | Field | Value | -| ---------------- | +| ------|--------- | | P1 | `0x01` | | P2 | unused | @@ -84,14 +85,14 @@ FINISH command returns signature and serialized transaction hash. All other comm - Validate Chain Id - Validate derivation path, ledger accepts only certain derivation paths (see [src/securityPolicy.c](../src/securityPolicy.c)) -- Appends Chain Id to the transaction +- Appends Chain Id to the transaction (includes counted section validation update) - Display chain to the user - Initialize integrity validation ### APPEND_CONST_DATA | Field | Value | -| ---------------- | +| ------|--------- | | P1 | `0x02` | | P2 | unused | @@ -109,13 +110,13 @@ FINISH command returns signature and serialized transaction hash. All other comm **Ledger actions** -- Appends data to the transaction +- Appends data to the transaction (includes counted section validation update and possible DH encoding) - Continue integrity validation ### SHOW_MESSAGE | Field | Value | -| ---------------- | +| ------|--------- | | P1 | `0x03` | | P2 | unused | @@ -142,7 +143,7 @@ FINISH command returns signature and serialized transaction hash. All other comm ### APPEND_DATA | Field | Value | -| ---------------- | +| ------|--------- | | P1 | `0x04` | | P2 | unused | @@ -158,6 +159,43 @@ FINISH command returns signature and serialized transaction hash. All other comm | Key length | 1 | | | Key | variable | | +Value formats: + +- VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01 +- VALUE_FORMAT_ASCII_STRING = 0x02, +- VALUE_FORMAT_NAME = 0x03: Special FIO name format. To be converted to string before displau +- VALUE_FORMAT_ASCII_STRING_WITH_LENGTH = 0x04: String prefixed with VarUInt lengrh +- VALUE_FORMAT_FIO_AMOUNT = 0x10: FIO currency amount stored as UINT64 +- VALUE_FORMAT_UINT64 = 0x14, +- VALUE_FORMAT_VARUINT32 = 0x17, +- VALUE_FORMAT_MEMO_HASH = 0x20: Special mode for showing memo or hash and offline url. + Format: + - has memo 1 byte (0x00/0x01) followed by memo string with length (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH), string length 1-127. + - has hash 1 byte (0x00/0x01) followed by hash string with length (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH), string length 0-127. + - has offline_url 1 byte (0x00/0x01) followed by offline_url string with length (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH), string length 0-127. + The value has to have either memo, or hash and offline_url. Hash and offline_url cannot be of max length at the same time because of APDU buffer size. The purpose of this instruction is to save several APDUs and to limit the number of allowed command sequences. +- VALUE_FORMAT_CHAIN_CODE_TOKEN_CODE_PUBLIC_ADDR = 0x21: Special mode for showing chain code, token code and public address as one entry. + Format: + - Token code (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH) + - Chain code (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH) + - Public address (as in VALUE_FORMAT_ASCII_STRING_WITH_LENGTH) + +Value validation: + +- VALUE_VALIDATION_NONE = 0x01 +- VALUE_VALIDATION_INBUFFER_LENGTH = 0x02: Validates that the length of value is between ValueValidationArg 1 and ValueValidationArg 2 +- VALUE_VALIDATION_NUMBER = 0x03: Value has to be a number (VALUE_FIO_AMOUNT, VALUE_UINT64, VALUE_FORMAT_VARUINT32). Validates that the numeric value is between ValueValidationArg 1 and ValueValidationArg 2 + +Storage bites: + +Storage is used to guarantee that certain elements in the transaction match. Storage has three registers of variable sizes (see store value calls). +- VALUE_STORAGE_CHECK_NO = 0x00: No check with storage +- VALUE_STORAGE_CHECK_R1 = 0x10: Checks value equality with R1 +- VALUE_STORAGE_CHECK_R2 = 0x20: Checks value equality with R2 +- VALUE_STORAGE_CHECK_R3 = 0x30: Checks value equality with R3 +- VALUE_STORAGE_CHECK_R1_DECODE_NAME = 0x40: Checks value equality with R1 converted from name to string. + + **Variable data** | Field | Length | Comments | @@ -167,38 +205,178 @@ FINISH command returns signature and serialized transaction hash. All other comm **Ledger actions** - Parse and validate the value -- Append value to tx -- Display key and value if policy requires it +- Validate storage +- Append value to tx (includes counted section validation update and possible DH encoding) +- Display key and parsed value(s) if policy requires it - Continue integrity validation + ### START_COUNTED_SECTION ----------- -ValueFormat: must be number format (1b) -ValueValidation: NONE, LENGTH (1b) -ValueValidationArg 1 (8b) -ValueValidationArg 2 (8b) ----------- -expected length +Counted sections append a VARINT to the transaction and then validate that the total length of buffers appended to the transaction between START_COUNTED_SECTION and END_COUNTED_SECTION matches the value. Matching paits of commands have to be both either outside or within DH encrypted segment. Note that DH encoding modifies thelength of what is appedded to the transaction so counted section takes this into account. + +| Field | Value | +| ------|--------- | +| P1 | `0x05` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ------------------------------------------ | +| Value Format | 1 | NAME, STRING, UINT64 | +| ValueValidation | 1 | NONE, LENGTH, EQUALS_STORED | +| ValueValidationArg 1 | 8 | | +| ValueValidationArg 2 | 8 | | + +Value formats: +- VALUE_FORMAT_FIO_AMOUNT = 0x10: FIO currency amount stored as UINT64 +- VALUE_FORMAT_UINT64 = 0x14, +- VALUE_FORMAT_VARUINT32 = 0x17, + +Value validation: +See APPEND_DATA instruction + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Value | variable | | + +**Ledger actions** + +- Checks if the limit on nested counted section was not surpassed (MAX_NESTED_COUNTED_SECTIONS = 5) +- Parse and validate the value +- Append value to tx (includes counted section validation update and possible DH encoding) +- Initiate new counted section validation (Value itseld does not count into the new counted section) +- Continue integrity validation + ### END_COUNTED_SECTION ----------- ----------- + +| Field | Value | +| ------|--------- | +| P1 | `0x06` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | -------- | ----------------------------------- | +| Value | variable | | + +**Ledger actions** + +- Validate that the number of bytes appended matches the expected value given in matching START_COUNTED_SECTION. +- Continue integrity validation + ### STORE_VALUE -P2: Register to store 1/2/3 1 and 2 have 8b, 3 has 64b ----------- ----------- -Value -### Start DH encryprion ----------- ----------- -Encryption pubkey +Stores Value into one of the registers. APPEND_DATA may compare its value with the register. This mechanism allows to guarantee match of certain transaction ellements. + +| Field | Value | +| ------|------------------------------ | +| P1 | `0x07` | +| P2 | register to use: 1, 2, or 3 | + +Registers 1 and 2 have 8 bytes. Register 3 has 64 bytes. Together with the value we also store its length. + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Ledger actions** + +- Validate that the value fits into selected register. +- Store value into selected register +- Continue integrity validation + + +### DH_START + +Starts Diffie-Hellman encrypted block. + +| Field | Value | +| ------|--------- | +| P1 | `0x08` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| DH encryption (their) pubkey | 65 | | + +**Ledger actions** + +- Continue integrity validation +- Show that DH encrypted section is starting +- Parse, store and show DH pubkey +- Validate that DH encryption is not active and activate it (and guarantee that counted sections take DH into account) +- Derive and wipe out AES key +- Securely create the initialization vector (IV) +- Return encrypted blocks that were finished during AES initialization. + +Note that all commands within DH encrypted section that append value to the transaction have to: +- Initiate and wipe out AES key +- Instead of appending the data to the transaction, append them to DH encryption, and apend the finished blocks to the transaction +- Return finished blocks +Also note that partial DH encrypted cypher text is of no cryptographical use before final HMAC is sent (which is only done at the end ). + + +### DH_END + +Ends Diffie-Hellman encrypted block. + +| Field | Value | +| ------|--------- | +| P1 | `0x09` | +| P2 | unused | + +**Constant data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + +**Variable data** + +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | + + +**Ledger actions** + +- Continue integrity validation +- Validate the integrity hash against the list of known hashes +- Validate that DH encryption active and deactivate it (and guarantee that counted sections take DH into account) +- Derive and wipe out AES key +- Finish DH encryption +- Ask for confirmation before returning final blocks (containing HMAC) +- Return final encrypted blocks that were finished during AES initialization -### End DH encryprion ----------- ----------- ### FINISH @@ -209,28 +387,21 @@ Encryption pubkey **Constant data** -| Field | Length | Comments | -| --------------------------------- | -------- | ----------------------------------- | -| Data to append to transaction | variable | | +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | **Variable data** -| Field | Length | Comments | -| --------------------------------- | ------ | ------------------------------------------------------------------- | -| BIP32 path len | 1 | min 2, max 10 | -| First derivation index | 4 | Little endian. Must be 44' | -| Second derivation index | 4 | Little endian. Must be 235' | -| (optional) Third derivation index | 4 | Little endian | -| ... | ... | ... | -| (optional) Last derivation index | 4 | Little endian | -| (optional) No. of remaining keys | 4 | Little endian | - -Ledger will process only certain paths, other paths will be rejected by app policy (see Ledger responsibilities section). +| Field | Length | Comments | +| --------------------------------- | ------ | ----------------------------------- | +| (none) | | | **Ledger actions** -- Adds 33 empty bytes to tx. This stands for extension points (1 byte) and context-free data (32 bytes). -- Finish integrity validation +- Validate htat DH is not active and there is no running counted section +- Continue integrity validation +- Validate the integrity hash against the list of known hashes - Request confirmation to sign the transaction - Return the signature and hash diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index d9d79c34..7f86174b 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -96,13 +96,13 @@ static void displayMemoHash(const uint8_t *value, TRACE_BUFFER(value, valueLen); VALIDATE(valueLen >= 1, ERR_INVALID_DATA); if (value[0] == 1) { // has memo - VALIDATE(valueLen >= 2, ERR_INVALID_DATA); + VALIDATE(valueLen >= 2, ERR_INVALID_DATA); // this also checks that memo has length at least 1 size_t memoLen = value[1]; VALIDATE(memoLen < 127, ERR_INVALID_DATA); VALIDATE(valueLen == memoLen + 4, ERR_INVALID_DATA); // has memo, memo length, memo, no hash, no url - VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); - VALIDATE(value[3 + memoLen] == 0, ERR_INVALID_DATA); + VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); //no hash + VALIDATE(value[3 + memoLen] == 0, ERR_INVALID_DATA); //no offline_url } else if (value[0] == 0) { // no memo TRACE("No memo"); VALIDATE(valueLen >= 3, ERR_INVALID_DATA); From de47ac93b845cf94b2fe9a4955c73560ceb6c044 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 18 Jan 2023 13:26:21 +0100 Subject: [PATCH 67/83] Allowed sequences documentation --- MakefileTest.mk | 4 + README.md | 2 +- doc/allowed_command_sequences.md | 2027 +++++++++++++++++++++++++++++- doc/ins_sign_tx.md | 2 +- src/signTransactionIntegrity.c | 1 + src/signTransactionParse.c | 9 +- 6 files changed, 2038 insertions(+), 7 deletions(-) diff --git a/MakefileTest.mk b/MakefileTest.mk index 93b80c18..8f1d5dea 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -77,6 +77,10 @@ speculos_port_5001_test: get_integrity_hashes_from_logs: sed -n -e 's/^.*Integrity check for: //p' speculos-port-5001.log +.PHONY: get_allowed_sequences_from_logs +get_allowed_sequences_from_logs: + grep -e "vvvvvv testStart() // snapshots/signTransaction" -e "\^\^\^\^\^\^ testEnd() // snapshots/signTransaction" -e "integrityCheckProcessInstruction:322" -e "Integrity check for" speculos-port-5001.log + #Test on physical device diff --git a/README.md b/README.md index f0fd7b50..7aca3f3c 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Determines the size of the app. Further interesting options are: ` - `NO_PULL=1`- do not pull containers (this works also for other commands using containers) -- `NO_INTEGRITY_CHECK=1` - integrity check is always ok, must also have `DEVEL=1`. If you run speculos tests you can obtain required integrity hashes from logs using `make get_integrity_hashes_ftom_logs`. You can copy them to signTransactionIntegrity.c . This is the easiest way to update integrity hash list after changes. +- `NO_INTEGRITY_CHECK=1` - integrity check is always ok, must also have `DEVEL=1`. If you run speculos tests you can obtain required integrity hashes from logs using `make get_integrity_hashes_from_logs`. You can copy them to signTransactionIntegrity.c . This is the easiest way to update integrity hash list after changes. ## Javascript layer diff --git a/doc/allowed_command_sequences.md b/doc/allowed_command_sequences.md index 3e9a061d..f255ad7c 100644 --- a/doc/allowed_command_sequences.md +++ b/doc/allowed_command_sequences.md @@ -1,3 +1,2028 @@ # Sign Transaction allowed commands sequences -Here will be the list of allowed command sequences and the hashes stored in the app. This section will be updated before the release. +Hashes in the list of allowed hashes come from a run of the app in compiled with `DEVEL=1`. +Here follows the excrept of the log containing all allowed command sequences. Note that integrity hash is validated only on DH\_END and FINISH commands. This can be obtained by `make get_allowed_sequences_from_logs` + +11:55:52.009 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionTrnsfiopubky +11:55:52.516:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:55:52.938:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:55:52.995:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:55:53.037:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000980ad20ca85be0e1d195ba85e7cd01 +11:55:53.074:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e135472616e736665722046494f20746f6b656e73 +11:55:53.476:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:55:53.521:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:55:53.569:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:55:53.624:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:55:53.660:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c5061796565205075626b6579 +11:55:54.000:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +11:55:54.462:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:55:54.842:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:55:54.892:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:55:54.956:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:55:54.986:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:55:55.031:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:55:55.384:seproxyhal: printf: Integrity check for: {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73} +11:55:57.102:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:55:57.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:55:57.616:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:55:57.670:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000980ad20ca85be0e1d195ba85e7cd01 +11:55:57.707:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e135472616e736665722046494f20746f6b656e73 +11:55:58.068:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:55:58.111:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:55:58.172:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:55:58.215:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:55:58.258:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c5061796565205075626b6579 +11:55:58.783:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +11:55:59.219:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:55:59.577:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:55:59.624:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:55:59.680:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:55:59.714:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:55:59.786:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:00.068:seproxyhal: printf: Integrity check for: {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73} +11:56:01.250:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:01.532:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:01.913:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:01.978:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:02.033:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000980ad20ca85be0e1d195ba85e7cd01 +11:56:02.085:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e135472616e736665722046494f20746f6b656e73 +11:56:02.426:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:02.466:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:02.523:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:02.566:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:02.604:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c5061796565205075626b6579 +11:56:02.947:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +11:56:03.349:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:03.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:03.825:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:03.880:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:03.917:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:03.972:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:04.283:seproxyhal: printf: Integrity check for: {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73} +11:56:06.214:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:06.639:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:06.688:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:06.732:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000980ad20ca85be0e1d195ba85e7cd01 +11:56:06.789:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e135472616e736665722046494f20746f6b656e73 +11:56:07.133:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:07.167:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:07.214:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:07.255:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:07.291:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c5061796565205075626b6579 +11:56:07.688:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +11:56:08.108:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:08.589:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:08.640:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:08.700:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:08.728:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:08.766:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:09.176:seproxyhal: printf: Integrity check for: {0x72, 0x0b, 0x29, 0xb9, 0xb7, 0x06, 0xaa, 0xac, 0xdd, 0x35, 0xa7, 0xae, 0xef, 0xde, 0x25, 0x59, 0x1a, 0x55, 0x46, 0x06, 0x16, 0x54, 0x82, 0x78, 0x84, 0x16, 0x83, 0xe1, 0xf0, 0xd7, 0x98, 0x73} +11:56:10.234 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionTrnsfiopubky +11:56:13.404 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionNewfundsreq +11:56:13.645:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:14.055:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:14.098:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:14.141:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b00acba384dbdb89a01 +11:56:14.202:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0d526571756573742046756e6473 +11:56:14.554:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:14.591:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:14.651:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:14.715:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:14.754:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:56:15.240:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:56:15.620:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 170340000000000000002801000000000000 +11:56:15.670:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:56:16.342:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:56:16.906:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:56:17.528:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:56:18.207:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:56:18.958:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:56:19.132:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:56:19.481:seproxyhal: printf: Integrity check for: {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52} +11:56:20.085:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:20.139:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:20.649:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:20.704:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:56:20.766:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:20.794:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:20.836:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:20.883:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:20.939:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:21.302:seproxyhal: printf: Integrity check for: {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca} +11:56:22.455:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:22.813:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:22.875:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:22.920:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b00acba384dbdb89a01 +11:56:22.957:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0d526571756573742046756e6473 +11:56:23.399:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:23.457:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:23.520:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:23.572:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:23.637:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:56:24.074:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:56:24.518:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 170340000000000000002801000000000000 +11:56:24.571:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:56:25.197:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:56:25.740:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:56:26.416:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:56:26.922:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:56:27.374:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:56:27.585:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:56:27.926:seproxyhal: printf: Integrity check for: {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52} +11:56:28.414:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:28.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:28.833:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:28.879:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:56:28.930:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:28.961:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:29.001:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:29.041:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:29.112:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:29.428:seproxyhal: printf: Integrity check for: {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca} +11:56:31.298:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:31.691:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:31.733:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:31.762:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b00acba384dbdb89a01 +11:56:31.813:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0d526571756573742046756e6473 +11:56:32.260:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:32.298:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:32.336:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:32.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:32.429:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:56:32.803:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:56:33.176:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 170340000000000000002801000000000000 +11:56:33.228:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:56:33.889:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:56:34.564:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:56:35.260:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:56:35.746:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:56:36.289:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:56:36.535:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:56:36.869:seproxyhal: printf: Integrity check for: {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52} +11:56:37.591:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:37.641:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:38.162:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:38.239:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:56:38.286:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:38.324:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:38.383:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:38.424:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:38.484:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:38.812:seproxyhal: printf: Integrity check for: {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca} +11:56:39.812:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:40.277:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:40.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:40.373:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b00acba384dbdb89a01 +11:56:40.405:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0d526571756573742046756e6473 +11:56:40.792:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:40.835:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:40.899:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:40.939:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:40.987:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:56:41.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:56:41.871:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 170340000000000000002801000000000000 +11:56:41.921:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:56:42.603:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:56:43.076:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:56:43.576:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:56:44.061:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:56:44.566:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:56:44.767:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:56:45.106:seproxyhal: printf: Integrity check for: {0x04, 0x68, 0x6b, 0x09, 0xf5, 0x1d, 0x68, 0xb0, 0x8a, 0x0d, 0x0c, 0x6f, 0xac, 0x1a, 0x53, 0x37, 0x05, 0xe4, 0x02, 0x8a, 0x86, 0xf0, 0xc5, 0x2f, 0xb9, 0x2c, 0x2c, 0x09, 0xe1, 0x30, 0x09, 0x52} +11:56:45.853:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:45.891:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:56:46.429:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:46.475:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:56:46.527:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:46.559:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:56:46.607:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:56:46.656:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:56:46.709:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:56:47.030:seproxyhal: printf: Integrity check for: {0x23, 0x27, 0x7c, 0x5c, 0x25, 0x48, 0x1d, 0xa2, 0xa8, 0x97, 0xa5, 0xf2, 0xb7, 0xa3, 0x66, 0x1e, 0x35, 0xd7, 0x89, 0x90, 0x61, 0xad, 0x9b, 0x00, 0x91, 0xc2, 0x53, 0x30, 0xb2, 0x6b, 0x42, 0xca} +11:56:47.963 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionNewfundsreq +11:56:51.395 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionRecordobt +11:56:51.652:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:56:52.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:56:52.101:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:56:52.140:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b0000c887a64b91ba01 +11:56:52.184:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0f5265636f7264206d65746164617461 +11:56:52.610:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:56:52.654:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:56:52.723:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:56:52.770:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:56:52.815:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000060a52657175657374204944 +11:56:53.287:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:56:53.676:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:56:54.067:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17034000000000000000b001000000000000 +11:56:54.109:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:56:54.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796572205075626c69632041646472 +11:56:55.281:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:56:55.923:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:56:56.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:56:57.045:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:56:57.568:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000506537461747573 +11:56:58.101:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005064f6274204944 +11:56:58.804:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:56:59.057:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:56:59.414:seproxyhal: printf: Integrity check for: {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44} +11:57:00.113:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:00.152:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:00.513:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:00.558:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:57:00.621:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:00.659:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:00.719:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:00.757:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:00.826:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:01.111:seproxyhal: printf: Integrity check for: {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73} +11:57:02.443:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:02.921:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:02.962:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:03.006:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b0000c887a64b91ba01 +11:57:03.040:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0f5265636f7264206d65746164617461 +11:57:03.407:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:03.445:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:03.501:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:03.546:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:03.585:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000060a52657175657374204944 +11:57:03.944:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:57:04.326:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:57:04.695:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17034000000000000000b001000000000000 +11:57:04.736:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:57:05.312:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796572205075626c69632041646472 +11:57:05.870:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:57:06.573:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:57:07.222:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:57:07.717:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:57:08.220:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000506537461747573 +11:57:08.727:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005064f6274204944 +11:57:09.236:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:57:09.420:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:57:09.761:seproxyhal: printf: Integrity check for: {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44} +11:57:10.506:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:10.553:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:11.108:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:11.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:57:11.202:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:11.232:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:11.271:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:11.313:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:11.357:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:11.688:seproxyhal: printf: Integrity check for: {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73} +11:57:12.789:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:13.231:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:13.272:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:13.337:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b0000c887a64b91ba01 +11:57:13.378:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0f5265636f7264206d65746164617461 +11:57:13.736:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:13.789:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:13.855:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:13.896:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:13.955:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000060a52657175657374204944 +11:57:13.999:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:57:14.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:57:14.788:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17034000000000000000b001000000000000 +11:57:14.838:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:57:15.522:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796572205075626c69632041646472 +11:57:16.203:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:57:16.691:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:57:17.197:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:57:17.660:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:57:18.160:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000506537461747573 +11:57:18.844:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005064f6274204944 +11:57:19.511:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:57:19.690:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:57:20.020:seproxyhal: printf: Integrity check for: {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44} +11:57:20.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:20.819:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:21.155:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:21.198:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:57:21.248:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:21.277:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:21.320:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:21.362:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:21.401:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:21.738:seproxyhal: printf: Integrity check for: {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73} +11:57:23.356:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:23.858:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:23.914:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:23.956:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b0000c887a64b91ba01 +11:57:23.994:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0f5265636f7264206d65746164617461 +11:57:24.399:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:24.439:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:24.489:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:24.528:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:24.575:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000060a52657175657374204944 +11:57:24.658:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965722046494f2048616e646c65 +11:57:25.065:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000051050617965652046494f2048616e646c65 +11:57:25.448:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17034000000000000000b001000000000000 +11:57:25.496:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 08. p2: 00, constdata: +11:57:26.160:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796572205075626c69632041646472 +11:57:26.655:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005115061796565205075626c69632041646472 +11:57:27.160:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000510416d6f756e7420726571756573746564 +11:57:27.679:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:57:28.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a546f6b656e20636f6465 +11:57:29.115:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000506537461747573 +11:57:29.807:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005064f6274204944 +11:57:30.296:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 2001000000000000000000000000000000000200 +11:57:30.478:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 09. p2: 00, constdata: +11:57:30.783:seproxyhal: printf: Integrity check for: {0xb9, 0xb3, 0x6e, 0x49, 0xe5, 0xc2, 0xac, 0x9e, 0x27, 0xd7, 0xbf, 0xd1, 0x6c, 0x33, 0xdb, 0xa4, 0x79, 0x36, 0xc3, 0x6f, 0xa2, 0xac, 0x28, 0xdc, 0x9e, 0xd8, 0xa8, 0x5b, 0x67, 0x33, 0x6f, 0x44} +11:57:31.334:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:31.375:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:31.739:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:31.782:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +11:57:31.841:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:31.874:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:31.913:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:31.957:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:32.009:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:32.395:seproxyhal: printf: Integrity check for: {0x90, 0xd9, 0xdd, 0xf7, 0x0d, 0x88, 0x32, 0xc2, 0x8a, 0xb2, 0xa8, 0xb2, 0xd5, 0xae, 0x08, 0x21, 0x54, 0xc6, 0xcf, 0x76, 0x4e, 0x77, 0x5e, 0x22, 0xde, 0x34, 0x63, 0x10, 0x4b, 0x60, 0xd4, 0x73} +11:57:33.521 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionRecordobt +11:57:36.980 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionAddaddress +11:57:37.426:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:37.873:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:37.918:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:37.955:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664523201 +11:57:38.014:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e124d6170207075626c69632061646472657373 +11:57:38.440:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:38.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:38.526:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:38.579:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:38.636:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:57:39.152:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +11:57:39.192:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:57:39.750:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:40.196:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:40.264:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:40.326:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:40.381:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:40.451:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:40.780:seproxyhal: printf: Integrity check for: {0xab, 0x0f, 0x5c, 0xce, 0x2f, 0xaf, 0x6b, 0x90, 0x93, 0xf3, 0xb5, 0xbe, 0xa9, 0x6a, 0x74, 0xa7, 0x70, 0xd2, 0x91, 0x68, 0xf7, 0x1f, 0xe5, 0x3d, 0x19, 0x74, 0xf7, 0xa5, 0x10, 0x39, 0x63, 0xc1} +11:57:42.072:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:42.538:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:42.600:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:42.641:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664523201 +11:57:42.683:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e124d6170207075626c69632061646472657373 +11:57:43.044:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:43.080:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:43.120:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:43.193:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:43.230:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:57:43.761:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 02 +11:57:43.806:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:57:44.351:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:57:44.755:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:45.144:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:45.203:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:45.256:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:45.286:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:45.338:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:45.698:seproxyhal: printf: Integrity check for: {0x30, 0x73, 0x00, 0xed, 0x8d, 0x10, 0x65, 0x24, 0x7f, 0xa3, 0xdd, 0x2a, 0x1b, 0x7c, 0x90, 0xa8, 0xb2, 0x6f, 0xaf, 0xad, 0xb6, 0xf7, 0xa7, 0x5f, 0x91, 0x92, 0x97, 0xe5, 0xf1, 0xb1, 0x21, 0x96} +11:57:47.081:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:47.584:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:47.660:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:47.700:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664523201 +11:57:47.737:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e124d6170207075626c69632061646472657373 +11:57:48.070:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:48.115:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:48.161:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:48.199:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:48.240:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:57:48.593:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 03 +11:57:48.639:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:57:49.003:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:57:49.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:57:49.763:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:50.193:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:50.238:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:50.288:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:50.326:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:50.369:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:50.730:seproxyhal: printf: Integrity check for: {0x13, 0x02, 0x4a, 0xa0, 0xa0, 0xea, 0x70, 0xc8, 0x11, 0x52, 0x2d, 0x67, 0x17, 0x41, 0xcd, 0x8c, 0x4e, 0xf6, 0x80, 0x31, 0x7c, 0x4d, 0x5c, 0xa0, 0xf2, 0xfa, 0x3c, 0x4b, 0xb1, 0x85, 0xc5, 0xcd} +11:57:51.893:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:52.342:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:52.388:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:52.431:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664523201 +11:57:52.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e124d6170207075626c69632061646472657373 +11:57:52.862:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:52.904:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:52.957:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:52.995:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:53.048:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:57:53.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 04 +11:57:53.623:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:57:54.016:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:57:54.423:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:57:54.801:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672034 +11:57:55.208:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:57:55.597:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:55.643:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:57:55.698:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:57:55.726:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:57:55.790:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:57:56.084:seproxyhal: printf: Integrity check for: {0x8e, 0x26, 0x84, 0x94, 0x40, 0xd8, 0xcd, 0xf9, 0xd0, 0x1a, 0x08, 0x17, 0xaa, 0x0b, 0x57, 0x33, 0xf6, 0x48, 0xf0, 0x1f, 0xea, 0xfd, 0x51, 0xb4, 0xac, 0x3d, 0x18, 0xad, 0x87, 0x3f, 0xb9, 0xa4} +11:57:57.285:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:57:57.789:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:57:57.854:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:57:57.909:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664523201 +11:57:57.941:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e124d6170207075626c69632061646472657373 +11:57:58.488:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:57:58.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:57:58.596:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:57:58.643:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:57:58.690:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:57:59.185:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 05 +11:57:59.226:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:57:59.601:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:57:59.969:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:58:00.414:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672034 +11:58:00.820:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672035 +11:58:01.216:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:01.667:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:01.714:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:01.775:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:01.821:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:01.886:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:02.218:seproxyhal: printf: Integrity check for: {0xf6, 0x9c, 0xe5, 0x0f, 0x3c, 0xdf, 0xa4, 0x1e, 0x00, 0x7e, 0xf3, 0xb0, 0x29, 0xc4, 0x3b, 0xc7, 0x92, 0x3e, 0xb3, 0x78, 0x71, 0x7d, 0xed, 0x96, 0x1c, 0x41, 0x5a, 0x4c, 0x82, 0x50, 0xc9, 0xa1} +11:58:03.481 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionAddaddress +11:58:06.890 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionRemaddress +11:58:07.400:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:07.899:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:07.950:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:08.008:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664a4ba01 +11:58:08.051:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1e52656d6f7665207075626c69632061646472657373206d617070696e6773 +11:58:08.412:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:08.448:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:08.501:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:08.549:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:08.592:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:09.098:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +11:58:09.151:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:58:09.695:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:10.118:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:10.168:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:10.234:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:10.271:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:10.316:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:10.703:seproxyhal: printf: Integrity check for: {0xe7, 0xa8, 0xd4, 0xed, 0x82, 0xd2, 0x60, 0x32, 0x54, 0x5a, 0xc2, 0xc6, 0x73, 0x73, 0xfb, 0xf5, 0xfa, 0xa6, 0x8f, 0x2f, 0xb4, 0xb8, 0x91, 0xe3, 0xe8, 0x11, 0x6a, 0xca, 0x08, 0xbf, 0x59, 0xe1} +11:58:11.922:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:12.433:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:12.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:12.530:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664a4ba01 +11:58:12.584:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1e52656d6f7665207075626c69632061646472657373206d617070696e6773 +11:58:13.117:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:13.166:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:13.229:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:13.282:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:13.331:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:13.721:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 02 +11:58:13.760:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:58:14.142:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:58:14.538:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:14.925:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:14.979:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:15.047:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:15.086:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:15.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:15.534:seproxyhal: printf: Integrity check for: {0x26, 0xe5, 0x21, 0x0f, 0x8f, 0xc8, 0x77, 0x8e, 0xb7, 0x24, 0x97, 0x32, 0x20, 0xa2, 0xbc, 0x85, 0xbe, 0x11, 0x10, 0xb8, 0x39, 0x8d, 0xd2, 0x7e, 0x9d, 0x3a, 0xbc, 0xaf, 0x58, 0x1a, 0x48, 0x79} +11:58:16.775:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:17.277:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:17.321:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:17.362:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664a4ba01 +11:58:17.419:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1e52656d6f7665207075626c69632061646472657373206d617070696e6773 +11:58:17.774:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:17.821:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:17.890:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:17.942:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:18.014:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:18.396:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 03 +11:58:18.435:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:58:18.802:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:58:19.170:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:58:19.560:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:19.942:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:19.995:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:20.056:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:20.090:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:20.131:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:20.451:seproxyhal: printf: Integrity check for: {0xe0, 0xa6, 0x06, 0xd1, 0x34, 0xb3, 0xbf, 0xfd, 0x72, 0x6f, 0x69, 0xf7, 0xd1, 0xa5, 0x68, 0x78, 0xd8, 0xad, 0x15, 0x66, 0xd4, 0x1e, 0xdc, 0x30, 0x1d, 0xbe, 0xea, 0x09, 0x82, 0xf1, 0x3d, 0xb} +11:58:21.664:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:22.118:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:22.171:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:22.214:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664a4ba01 +11:58:22.266:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1e52656d6f7665207075626c69632061646472657373206d617070696e6773 +11:58:22.594:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:22.635:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:22.691:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:22.730:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:22.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:23.153:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 04 +11:58:23.197:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:58:23.566:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:58:23.980:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:58:24.370:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672034 +11:58:24.745:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:25.153:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:25.221:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:25.264:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:25.295:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:25.353:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:25.715:seproxyhal: printf: Integrity check for: {0xd6, 0xcc, 0x05, 0x60, 0xfd, 0xa9, 0x7d, 0x55, 0xb2, 0x49, 0x4e, 0x2a, 0x59, 0x13, 0xe3, 0xe4, 0x3c, 0xf7, 0x3e, 0x5e, 0x28, 0x3d, 0x15, 0xe4, 0x68, 0x2d, 0x23, 0x3e, 0x7c, 0x9b, 0x0b, 0x63} +11:58:27.036:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:27.518:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:27.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:27.631:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa664a4ba01 +11:58:27.671:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1e52656d6f7665207075626c69632061646472657373206d617070696e6773 +11:58:28.015:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:28.059:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:28.142:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:28.184:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:28.235:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:28.614:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 05 +11:58:28.679:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672031 +11:58:29.201:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672032 +11:58:29.599:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672033 +11:58:29.980:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672034 +11:58:30.381:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 21010000000000000000000000000000000005094d617070696e672035 +11:58:30.768:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:31.198:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:31.258:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:31.313:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:31.344:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:31.396:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:31.754:seproxyhal: printf: Integrity check for: {0xb5, 0xf3, 0xed, 0x5f, 0x34, 0x48, 0x5d, 0xa3, 0xa4, 0x93, 0x10, 0xf0, 0x09, 0x8d, 0xfb, 0x71, 0x34, 0x5e, 0x0f, 0x6a, 0xc8, 0x42, 0x16, 0xc0, 0xe1, 0xb9, 0xed, 0x11, 0x09, 0x7c, 0x22, 0x30} +11:58:32.661 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionRemaddress +11:58:36.065 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionAddnft +11:58:36.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:37.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:37.091:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:37.135:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435533201 +11:58:37.190:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e084d6170206e667473 +11:58:37.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:37.599:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:37.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:37.713:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:37.776:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:38.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +11:58:38.189:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:58:38.606:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:38.999:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:39.425:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:39.798:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:39.870:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:39.935:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:39.979:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:40.339:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:40.388:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:40.439:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:40.489:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:40.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:40.918:seproxyhal: printf: Integrity check for: {0x3b, 0x19, 0xb4, 0x63, 0xcd, 0xba, 0xd4, 0x75, 0x76, 0x78, 0x03, 0x92, 0x17, 0xae, 0xd5, 0xea, 0x13, 0xe1, 0xe8, 0xab, 0xc8, 0xc8, 0x35, 0x7b, 0x50, 0xc8, 0xef, 0x5c, 0x1c, 0x2e, 0xe1, 0x72} +11:58:42.254:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:42.741:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:42.813:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:42.855:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435533201 +11:58:42.891:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e084d6170206e667473 +11:58:43.267:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:43.308:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:43.360:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:43.401:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:43.452:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:43.914:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 02 +11:58:43.950:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:58:44.330:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:44.726:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:45.097:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:45.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:45.551:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:45.605:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:45.646:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203200 +11:58:46.069:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:46.534:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:46.933:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:47.318:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:47.379:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:47.448:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:47.518:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:47.991:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:48.059:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:48.128:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:48.171:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:48.213:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:48.562:seproxyhal: printf: Integrity check for: {0x39, 0x31, 0xa7, 0x1c, 0x07, 0x8e, 0x5e, 0x28, 0x20, 0x90, 0x3e, 0x25, 0xe1, 0x81, 0x8f, 0xea, 0x46, 0xda, 0x16, 0xd9, 0xd2, 0x56, 0xf3, 0x91, 0x7e, 0x5a, 0xe4, 0x5b, 0x94, 0x73, 0x45, 0xdf} +11:58:49.912:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:58:50.380:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:58:50.433:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:58:50.472:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435533201 +11:58:50.519:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e084d6170206e667473 +11:58:50.867:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:58:50.905:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:50.965:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:58:51.011:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:58:51.068:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:58:51.565:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 03 +11:58:51.600:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:58:51.964:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:52.360:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:52.727:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:53.174:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:53.220:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:53.273:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:53.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203200 +11:58:53.683:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:54.060:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:54.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:54.838:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:54.889:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:54.942:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:55.005:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203300 +11:58:55.377:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:58:55.744:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:58:56.125:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:58:56.522:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:56.589:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000041000000000000000200 +11:58:56.645:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000082000000000000000200 +11:58:56.710:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:58:57.069:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:58:57.152:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:58:57.228:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:58:57.268:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:58:57.307:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:58:57.695:seproxyhal: printf: Integrity check for: {0xea, 0xa0, 0xae, 0x50, 0x58, 0x10, 0x80, 0x4b, 0x52, 0x1e, 0x91, 0x0b, 0xc9, 0x64, 0xad, 0x73, 0x76, 0xd9, 0x37, 0xfa, 0x33, 0xab, 0xcf, 0x1f, 0xf8, 0x71, 0x50, 0xf9, 0xba, 0xea, 0x4b, 0x2d} +11:58:58.904 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionAddnft +11:59:02.230 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionRemnft +11:59:02.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:03.073:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:03.131:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:03.173:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435a5ba01 +11:59:03.212:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1352656d6f7665206e6674206d617070696e6773 +11:59:03.562:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:03.601:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:03.668:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:03.712:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:03.750:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:04.116:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +11:59:04.165:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:59:04.530:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:04.921:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:05.296:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:05.699:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:06.113:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:06.180:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:06.238:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:06.270:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:06.328:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:06.677:seproxyhal: printf: Integrity check for: {0xeb, 0x12, 0x64, 0xc2, 0x90, 0xa6, 0x78, 0x09, 0xe1, 0x56, 0xdf, 0x06, 0x15, 0xd6, 0x64, 0x7e, 0x47, 0xb9, 0x92, 0x95, 0x92, 0x2b, 0x51, 0x40, 0xe8, 0xc9, 0x82, 0x7f, 0x68, 0x4f, 0xe6, 0xfc} +11:59:07.915:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:08.373:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:08.420:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:08.460:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435a5ba01 +11:59:08.499:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1352656d6f7665206e6674206d617070696e6773 +11:59:08.926:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:08.970:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:09.039:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:09.076:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:09.122:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:09.650:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 02 +11:59:09.687:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:59:10.056:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:10.468:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:10.948:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:11.344:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203200 +11:59:11.735:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:12.112:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:12.574:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:13.037:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:13.436:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:13.490:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:13.545:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:13.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:13.616:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:13.989:seproxyhal: printf: Integrity check for: {0x62, 0x62, 0x11, 0x4f, 0xad, 0x75, 0x96, 0x76, 0x7f, 0x65, 0x43, 0xd0, 0x61, 0x91, 0x35, 0x1d, 0x6e, 0xbf, 0x64, 0xd6, 0x94, 0x1c, 0x25, 0xbb, 0x59, 0xc1, 0x26, 0xe5, 0x94, 0xce, 0x89, 0xcf} +11:59:15.299:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:15.768:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:15.839:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:15.879:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00000000e435a5ba01 +11:59:15.919:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1352656d6f7665206e6674206d617070696e6773 +11:59:16.261:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:16.300:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:16.356:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:16.416:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:16.485:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:16.943:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 03 +11:59:16.979:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203100 +11:59:17.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:17.793:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:18.196:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:18.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203200 +11:59:18.963:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:19.368:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:19.717:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:20.192:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 094d617070696e67203300 +11:59:20.581:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +11:59:21.014:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402020000000000000082000000000000000510436f6e74726163742061646472657373 +11:59:21.392:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000008200000000000000050c4e465420546f6b656e204944 +11:59:21.757:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:22.166:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:22.224:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:22.276:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:22.318:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:22.365:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:22.693:seproxyhal: printf: Integrity check for: {0x68, 0x4d, 0x19, 0x1b, 0xec, 0x18, 0x69, 0x3a, 0xc2, 0x2a, 0x79, 0xe3, 0xbc, 0xe5, 0xa4, 0xc6, 0xe1, 0xa5, 0xb3, 0xfd, 0x6e, 0x04, 0xb0, 0x33, 0xd4, 0x2f, 0xe6, 0x1b, 0x5d, 0x51, 0x7b, 0x80} +11:59:23.671 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionRemnft +11:59:26.982 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionOtherFioAddress +11:59:27.475:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:27.907:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:27.983:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:28.022:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00c04dc9c468a4ba01 +11:59:28.077:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e2252656d6f766520616c6c207075626c69632061646472657373206d617070696e6773 +11:59:28.568:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:28.611:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:28.669:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:28.707:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:28.746:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:29.118:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:29.579:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:29.624:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:29.684:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:29.733:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:29.792:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:30.112:seproxyhal: printf: Integrity check for: {0xf7, 0xf1, 0xe3, 0xcc, 0xda, 0xbc, 0x21, 0x9c, 0xb7, 0xef, 0xbe, 0x45, 0x6c, 0x87, 0xf3, 0x59, 0x76, 0xc9, 0x9c, 0x0d, 0xe9, 0xac, 0x10, 0x93, 0x46, 0xda, 0x1f, 0x91, 0xd3, 0x78, 0x1b, 0x53} +11:59:31.406:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:31.903:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:31.944:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:31.991:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b000056314d7d523201 +11:59:32.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0b4164642042756e646c6573 +11:59:32.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:32.550:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:32.603:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:32.645:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:32.682:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:33.208:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 14030000000000000000ffffffffffffff7f050b42756e646c652073657473 +11:59:33.602:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:33.981:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:34.075:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:34.110:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:34.145:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:34.219:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:34.518:seproxyhal: printf: Integrity check for: {0x04, 0x7d, 0x85, 0x04, 0xb6, 0xb9, 0x21, 0x51, 0x19, 0x7d, 0x20, 0xc9, 0xe7, 0x9f, 0xc1, 0x81, 0x3e, 0xe4, 0xa0, 0xd5, 0xa2, 0x1d, 0x3c, 0x36, 0x66, 0x89, 0x01, 0x1a, 0x71, 0xe9, 0x2a, 0x8a} +11:59:35.909:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:36.396:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:36.438:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:36.482:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000c6eaa66498ba01 +11:59:36.527:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1a52656769737465722046494f2043727970746f2048616e646c65 +11:59:36.961:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:37.003:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:37.051:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:37.106:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:37.143:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:37.698:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c4f776e6572205075626b6579 +11:59:38.097:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:38.466:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:38.511:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:38.579:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:38.617:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:38.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:39.041:seproxyhal: printf: Integrity check for: {0x47, 0x75, 0xd1, 0x26, 0xa4, 0x4b, 0x48, 0x95, 0x2d, 0x84, 0x5e, 0x43, 0x06, 0x7e, 0x6b, 0x13, 0x42, 0x6f, 0xdd, 0x77, 0x55, 0x25, 0x9d, 0x6a, 0xfc, 0x7f, 0x83, 0xc0, 0x82, 0xc2, 0xeb, 0x4c} +11:59:40.557:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:41.028:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:41.071:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:41.115:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b003056372573d5ea01 +11:59:41.156:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1a5472616e736665722046494f2043727970746f2048616e646c65 +11:59:41.555:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:41.614:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:41.683:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:41.718:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:41.762:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +11:59:42.216:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c4f776e6572205075626b6579 +11:59:42.610:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:43.017:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:43.095:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:43.159:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:43.210:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:43.253:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:43.577:seproxyhal: printf: Integrity check for: {0x52, 0x44, 0x21, 0x4f, 0x79, 0xf9, 0xba, 0x27, 0x9e, 0x34, 0xd4, 0xfb, 0x35, 0x13, 0x7f, 0xc4, 0x06, 0xe6, 0xc7, 0x7d, 0x99, 0x51, 0x7e, 0xd4, 0xd2, 0x7d, 0x8e, 0x97, 0xf8, 0x1c, 0x34, 0x54} +11:59:44.750:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:45.247:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:45.290:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:45.335:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b000098ce489a98ba01 +11:59:45.371:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1352656769737465722046494f20446f6d61696e +11:59:45.780:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:45.827:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:45.891:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:45.929:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:45.976:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +11:59:46.466:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050c4f776e6572205075626b6579 +11:59:46.879:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:47.239:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:47.297:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:47.363:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:47.391:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:47.433:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:47.821:seproxyhal: printf: Integrity check for: {0xf8, 0x73, 0x29, 0xbd, 0xc7, 0x2d, 0xaf, 0x8d, 0xdb, 0xac, 0xac, 0x28, 0xea, 0x24, 0x7a, 0xe1, 0x1a, 0x82, 0x97, 0x47, 0x4f, 0x9b, 0x59, 0x86, 0xcb, 0x27, 0xe5, 0xf9, 0x99, 0x1d, 0xf1, 0x43} +11:59:49.228:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:49.697:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:49.755:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:49.801:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00a6339226aea6ba01 +11:59:49.840:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1052656e65772046494f20646f6d61696e +11:59:50.229:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:50.265:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:50.329:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:50.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:50.431:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +11:59:50.770:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:51.184:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:51.243:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:51.290:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:51.337:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:51.389:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:51.763:seproxyhal: printf: Integrity check for: {0x2d, 0x26, 0x7c, 0x41, 0xf6, 0x32, 0x27, 0x91, 0x10, 0x76, 0x96, 0x39, 0x57, 0x0f, 0xe3, 0xf5, 0x56, 0x9b, 0x81, 0xa3, 0x02, 0xc9, 0x1d, 0x46, 0x95, 0x19, 0x0b, 0x26, 0x3b, 0x60, 0xf0, 0xe4} +11:59:53.169:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:53.666:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:53.716:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:53.761:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b70749dce489ab2c201 +11:59:53.820:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e265365742046494f20446f6d61696e20726567697374726174696f6e207065726d697373696f6e +11:59:54.186:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:54.238:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:54.297:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:54.345:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:54.419:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +11:59:54.810:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +11:59:54.863:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 044d616b65065075626c6963 +11:59:55.394:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +11:59:55.795:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:55.843:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +11:59:55.894:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +11:59:55.927:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +11:59:55.974:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +11:59:56.395:seproxyhal: printf: Integrity check for: {0x2f, 0x1e, 0x4e, 0xa2, 0x81, 0x48, 0x5e, 0x01, 0x55, 0x1b, 0x4f, 0x20, 0x56, 0x7b, 0x97, 0x27, 0xba, 0xae, 0xad, 0x60, 0x5f, 0xb6, 0x83, 0xd7, 0x37, 0x4a, 0x0d, 0x06, 0xeb, 0xa0, 0xf8, 0xbb} +11:59:57.753:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +11:59:58.236:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +11:59:58.287:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +11:59:58.332:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b70749dce489ab2c201 +11:59:58.388:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e265365742046494f20446f6d61696e20726567697374726174696f6e207065726d697373696f6e +11:59:58.715:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +11:59:58.754:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +11:59:58.826:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +11:59:58.877:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +11:59:58.923:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +11:59:59.423:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00 +11:59:59.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 044d616b650750726976617465 +11:59:59.797:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:00.301:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:00.367:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:00.414:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:00.447:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:00.492:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:00.836:seproxyhal: printf: Integrity check for: {0xe4, 0x85, 0x22, 0x61, 0x22, 0x3b, 0xa3, 0x05, 0x42, 0xa0, 0xb6, 0x0d, 0x73, 0xbf, 0xf9, 0xcd, 0x82, 0x6a, 0x9c, 0x9b, 0x74, 0x70, 0x47, 0x5c, 0x61, 0x80, 0x31, 0x25, 0x46, 0xa9, 0x4f, 0x21} +12:00:02.201:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:02.720:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:02.769:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:02.819:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b00c07446d274d5ea01 +12:00:02.856:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e135472616e736665722046494f20446f6d61696e +12:00:03.221:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:03.261:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:03.309:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:03.348:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:03.388:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +12:00:03.757:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 04020100000000000000040000000100000005104e6577206f776e6572205075626b6579 +12:00:04.136:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:04.596:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:04.653:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:04.703:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:04.736:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:04.805:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:05.130:seproxyhal: printf: Integrity check for: {0xf2, 0xef, 0xc6, 0x69, 0x8f, 0x05, 0x36, 0x14, 0x8b, 0x56, 0x1d, 0x43, 0xb2, 0x22, 0xfb, 0x42, 0xb9, 0x1f, 0x8d, 0xd8, 0x83, 0x07, 0xb7, 0xff, 0x87, 0x09, 0x47, 0xf1, 0xb8, 0x61, 0x52, 0xbb} +12:00:06.562:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:07.039:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:07.081:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:07.118:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 003056372503a85b0000ce6bc668a4ba01 +12:00:07.169:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1752656d6f766520616c6c206e6674206d617070696e6773 +12:00:07.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:07.620:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:07.676:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:07.715:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:07.753:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:08.267:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:08.634:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:08.719:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:08.770:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:08.828:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:08.872:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:09.237:seproxyhal: printf: Integrity check for: {0x21, 0xfb, 0x21, 0x50, 0xd1, 0x7b, 0xa2, 0x06, 0x4b, 0xe7, 0x52, 0xa8, 0x1f, 0xca, 0x68, 0xdf, 0x60, 0x62, 0x43, 0xeb, 0x75, 0x3c, 0x56, 0x9d, 0x97, 0x10, 0xc4, 0x24, 0x20, 0xba, 0xf4, 0x4d} +12:00:10.239 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionOtherFioAddress +12:00:13.651 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionOtherFioReqobt +12:00:14.160:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:14.614:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:14.678:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:14.726:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b60d54d734585a64101 +12:00:14.767:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1443616e63656c2066756e64732072657175657374 +12:00:15.131:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:15.169:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:15.215:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:15.253:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:15.292:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050a52657175657374204944 +12:00:15.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:16.022:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:16.087:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +12:00:16.159:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:16.200:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:16.246:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:16.278:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:16.334:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:16.712:seproxyhal: printf: Integrity check for: {0x10, 0x21, 0x24, 0x06, 0xf8, 0xec, 0xc1, 0x2b, 0x09, 0x46, 0x00, 0x4c, 0x6c, 0x81, 0x01, 0x82, 0x67, 0xc8, 0x81, 0x68, 0x5a, 0x8a, 0x57, 0x6a, 0x7e, 0xb1, 0xb1, 0xf7, 0x6a, 0x7b, 0x4b, 0xae} +12:00:17.942:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:18.443:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:18.509:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:18.559:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00403ed4aa0ba85b60d54d7365a49eba01 +12:00:18.598:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1452656a6563742066756e64732072657175657374 +12:00:18.938:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:18.976:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:19.030:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:19.086:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:19.133:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050a52657175657374204944 +12:00:19.625:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:20.021:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:20.096:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 020200000000000000000e000000000000004200 +12:00:20.144:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:20.181:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:20.233:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:20.283:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:20.335:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:20.648:seproxyhal: printf: Integrity check for: {0xb8, 0x19, 0x6b, 0x10, 0x79, 0x4b, 0x3f, 0xe1, 0x50, 0xb3, 0xa1, 0xdb, 0x0f, 0x74, 0xd3, 0x82, 0xa1, 0x6c, 0xad, 0xdb, 0xb1, 0x0d, 0xd0, 0x20, 0xc2, 0xad, 0x8e, 0x74, 0xbe, 0xb1, 0x9f, 0xb4} +12:00:21.604 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionOtherFioReqobt +12:00:24.984 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionOtherFioStaking +12:00:25.518:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:25.990:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:26.051:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:26.099:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00d874d0640ca85b000000d42d054dc601 +12:00:26.133:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e105374616b652046494f20546f6b656e73 +12:00:26.575:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:26.618:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:26.670:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:26.712:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:26.751:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:27.127:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +12:00:27.513:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:27.943:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:28.009:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:28.058:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:28.094:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:28.133:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:28.466:seproxyhal: printf: Integrity check for: {0xa8, 0x1e, 0x4e, 0xc5, 0xa9, 0x1e, 0x6b, 0x4d, 0xe2, 0x33, 0x46, 0x1f, 0xfd, 0xbf, 0x3c, 0x84, 0x77, 0x55, 0xcb, 0x1f, 0x64, 0xdd, 0x17, 0xdc, 0xe6, 0x35, 0xb4, 0xb9, 0xe7, 0x7d, 0x27, 0xdc} +12:00:29.777:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:30.265:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:30.306:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:30.350:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00d874d0640ca85b0000754b4193f1d401 +12:00:30.392:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e12556e7374616b652046494f20546f6b656e73 +12:00:30.750:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:30.794:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:30.853:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:30.889:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:30.957:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:31.420:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +12:00:31.836:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:32.246:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:00:32.297:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:32.351:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:32.395:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:32.479:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:32.789:seproxyhal: printf: Integrity check for: {0x84, 0x95, 0x42, 0x84, 0x3c, 0x8b, 0x00, 0xd8, 0x9c, 0x2c, 0x17, 0xa0, 0x72, 0x66, 0xf9, 0x15, 0x08, 0x0b, 0xc9, 0xf0, 0x48, 0x7c, 0x01, 0x09, 0x15, 0x2e, 0x42, 0x7b, 0x70, 0x82, 0x0d, 0x7a} +12:00:33.961 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionOtherFioStaking +12:00:37.190 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionOtherEosio +12:00:37.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:38.084:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:38.161:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:38.191:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:00:38.232:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:00:38.764:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:38.805:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:38.877:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:38.922:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:38.963:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 01 +12:00:38.996:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:00:39.417:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:39.792:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:39.850:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:40.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:40.454:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:40.498:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:40.843:seproxyhal: printf: Integrity check for: {0x72, 0x12, 0x3c, 0xb5, 0x28, 0xc5, 0x67, 0xc4, 0xe3, 0x45, 0x56, 0x1f, 0xa9, 0x74, 0xe3, 0xcc, 0x87, 0x33, 0xbf, 0x9e, 0xe4, 0xc6, 0x37, 0x0b, 0x8f, 0x77, 0x7c, 0xe3, 0xa3, 0xa1, 0x02, 0xa3} +12:00:42.012:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:42.447:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:42.490:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:42.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:00:42.589:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:00:42.960:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:43.000:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:43.059:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:43.107:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:43.158:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 02 +12:00:43.194:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:00:43.610:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:00:44.002:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:44.401:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:44.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:44.977:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:45.023:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:45.073:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:45.415:seproxyhal: printf: Integrity check for: {0xbd, 0x92, 0x94, 0x84, 0x09, 0xaa, 0x7b, 0x8e, 0xc0, 0xed, 0x3a, 0x07, 0x81, 0xa3, 0x71, 0x32, 0xec, 0x5d, 0xda, 0x02, 0x54, 0x3f, 0xe7, 0x2c, 0xed, 0xb5, 0xe8, 0xc0, 0xb9, 0x5a, 0xdd, 0x38} +12:00:46.845:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:47.294:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:47.338:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:47.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:00:47.424:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:00:47.870:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:47.906:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:47.955:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:47.993:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:48.032:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 03 +12:00:48.066:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:00:48.610:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:00:49.000:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:00:49.391:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:49.786:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:49.851:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:50.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:50.449:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:50.505:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:50.858:seproxyhal: printf: Integrity check for: {0xfd, 0x00, 0x10, 0x47, 0x1a, 0x47, 0xad, 0xd1, 0x5b, 0x01, 0x5d, 0xcf, 0x12, 0xd4, 0xba, 0x20, 0x12, 0x7d, 0xd6, 0x6a, 0x99, 0x37, 0xde, 0x57, 0x79, 0x6a, 0x30, 0x3f, 0xc3, 0x92, 0x45, 0x86} +12:00:53.156:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:53.651:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:53.721:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:53.771:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:00:53.809:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:00:54.170:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:00:54.217:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:54.277:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:00:54.324:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:00:54.356:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 04 +12:00:54.415:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:00:54.886:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:00:55.260:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:00:55.720:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:00:56.102:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:00:56.501:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:00:56.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:00:57.059:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:00:57.114:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:00:57.173:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:00:57.587:seproxyhal: printf: Integrity check for: {0x4c, 0x3b, 0x0f, 0xe9, 0x89, 0x90, 0xd3, 0x01, 0xac, 0x21, 0x87, 0x6f, 0x36, 0xf1, 0x3c, 0x74, 0xe0, 0xad, 0x9d, 0x6e, 0x2b, 0xb6, 0x5a, 0x22, 0x64, 0x78, 0x04, 0xca, 0x15, 0xa1, 0x8c, 0xfc} +12:00:58.796:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:00:59.298:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:00:59.372:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:00:59.418:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:00:59.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:00:59.948:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:00.002:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:00.060:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:00.103:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:00.156:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 05 +12:01:00.204:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:00.582:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:00.966:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:01.376:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:01.728:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:02.182:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:02.566:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:02.615:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:02.943:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:02.982:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:03.035:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:03.390:seproxyhal: printf: Integrity check for: {0xbf, 0xb9, 0x78, 0x51, 0x6e, 0x2d, 0x39, 0x0e, 0x60, 0x99, 0x18, 0x16, 0x7b, 0x35, 0xe3, 0xea, 0xa5, 0x6c, 0x85, 0x10, 0x7a, 0x79, 0x31, 0xe3, 0xc3, 0x72, 0x3d, 0x46, 0x4a, 0xb1, 0x40, 0x6a} +12:01:05.595:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:06.082:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:06.141:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:06.184:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:06.231:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:06.558:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:06.599:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:06.676:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:06.717:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:06.749:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 06 +12:01:06.806:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:07.257:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:07.699:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:08.083:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:08.537:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:08.870:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:09.296:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:09.686:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:09.753:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:10.247:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:10.292:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:10.371:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:10.756:seproxyhal: printf: Integrity check for: {0x41, 0x5f, 0x45, 0x83, 0x7a, 0xb3, 0xbf, 0x54, 0x4c, 0x6a, 0xa0, 0x99, 0x48, 0xfb, 0x93, 0x9a, 0xa9, 0x9f, 0x4e, 0x60, 0x61, 0x25, 0xea, 0xa3, 0xe3, 0x3e, 0xca, 0x60, 0xde, 0xa9, 0xce, 0x8e} +12:01:11.975:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:12.485:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:12.534:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:12.580:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:12.621:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:13.036:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:13.071:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:13.116:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:13.172:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:13.206:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 07 +12:01:13.240:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:13.770:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:14.270:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:14.656:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:15.041:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:15.475:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:15.912:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:16.309:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:16.699:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:16.776:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:17.229:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:17.271:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:17.346:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:17.715:seproxyhal: printf: Integrity check for: {0xfd, 0xa3, 0xe5, 0x8e, 0x32, 0x92, 0xb9, 0xa4, 0x6c, 0x17, 0x80, 0x34, 0x87, 0xf8, 0xaf, 0xcd, 0xa8, 0xe5, 0x1e, 0x91, 0xbd, 0x2f, 0x89, 0x8e, 0x1e, 0xe8, 0x30, 0x48, 0xa8, 0x8d, 0xd7, 0xbc} +12:01:19.066:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:19.557:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:19.605:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:19.645:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:19.686:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:20.053:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:20.090:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:20.138:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:20.195:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:20.224:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 08 +12:01:20.261:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:20.783:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:21.206:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:21.652:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:22.043:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:22.460:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:22.845:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:23.272:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:01:23.696:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:24.124:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:24.189:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:24.658:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:24.734:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:24.782:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:25.162:seproxyhal: printf: Integrity check for: {0x9c, 0x08, 0x4d, 0x07, 0x8a, 0x16, 0x6f, 0x65, 0xca, 0xd8, 0x80, 0x5a, 0x82, 0x6f, 0xe3, 0x28, 0x18, 0x13, 0x88, 0xee, 0xc4, 0xd7, 0xaf, 0x2f, 0xda, 0x1b, 0xe9, 0xa0, 0xf3, 0x74, 0x01, 0x60} +12:01:26.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:26.983:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:27.035:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:27.077:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:27.117:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:27.565:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:27.608:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:27.673:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:27.722:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:27.776:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 09 +12:01:27.815:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:28.195:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:28.592:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:28.945:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:29.425:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:29.917:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:30.302:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:30.699:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:01:31.076:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:01:31.528:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:31.948:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:31.994:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:32.536:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:32.584:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:32.653:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:33.006:seproxyhal: printf: Integrity check for: {0x22, 0x77, 0x67, 0x74, 0x9f, 0x04, 0xfd, 0xb0, 0x1b, 0x4a, 0x9e, 0x87, 0xaa, 0x3c, 0x35, 0xa6, 0xc3, 0xf1, 0xb8, 0x62, 0xb1, 0xd9, 0x12, 0x33, 0x43, 0x55, 0x2d, 0xe8, 0x25, 0x7d, 0x7c, 0xaa} +12:01:34.421:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:34.938:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:34.979:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:35.033:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:35.091:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:35.439:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:35.476:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:35.542:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:35.599:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:35.658:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0a +12:01:35.694:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:36.061:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:36.459:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:36.868:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:37.254:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:37.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:38.057:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:38.448:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:01:38.854:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:01:39.233:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:01:39.662:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:40.055:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:40.119:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:40.628:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:40.669:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:40.730:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:41.058:seproxyhal: printf: Integrity check for: {0x53, 0x8f, 0xc3, 0xe7, 0xcc, 0x10, 0x26, 0x04, 0x1c, 0xe7, 0x08, 0xfd, 0x9a, 0xf0, 0xf8, 0x8a, 0x06, 0xc4, 0x62, 0x04, 0xa5, 0xd0, 0x7c, 0xfd, 0xd4, 0x99, 0x30, 0xbd, 0x29, 0x98, 0x59, 0x8e} +12:01:42.149:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:42.592:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:42.644:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:42.680:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:42.720:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:43.155:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:43.193:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:43.244:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:43.293:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:43.340:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0b +12:01:43.392:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:43.880:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:44.272:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:44.661:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:45.115:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:45.516:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:45.908:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:46.366:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:01:46.770:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:01:47.162:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:01:47.543:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:01:47.964:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:48.341:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:48.388:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:48.921:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:48.959:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:49.017:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:49.321:seproxyhal: printf: Integrity check for: {0x23, 0xc9, 0xce, 0x25, 0xf6, 0x0a, 0xd3, 0x61, 0x65, 0x42, 0xcd, 0x86, 0xb6, 0x76, 0x73, 0x47, 0x7f, 0xf2, 0x14, 0x45, 0x2b, 0x01, 0x66, 0x96, 0x35, 0xed, 0x82, 0xf7, 0x1a, 0xf1, 0x5d, 0x30} +12:01:51.487:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:01:51.963:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:01:52.005:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:01:52.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:01:52.091:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:01:52.456:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:01:52.493:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:52.549:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:01:52.591:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:01:52.630:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0c +12:01:52.672:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:01:53.191:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:01:53.590:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:01:53.960:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:01:54.380:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:01:54.744:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:01:55.156:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:01:55.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:01:55.946:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:01:56.324:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:01:56.716:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:01:57.105:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:01:57.510:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:01:57.904:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:01:57.947:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:01:58.300:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:01:58.342:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:01:58.391:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:01:58.799:seproxyhal: printf: Integrity check for: {0xac, 0x34, 0x97, 0xb2, 0xd8, 0xeb, 0x94, 0xd3, 0x22, 0x46, 0x08, 0x2e, 0x3f, 0x28, 0x09, 0xb3, 0x40, 0x1a, 0xf0, 0x8f, 0x7d, 0x30, 0x1a, 0x83, 0xd7, 0x7b, 0xbc, 0x13, 0x7c, 0xa2, 0xde, 0x5c} +12:02:00.288:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:00.761:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:00.811:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:00.869:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:00.910:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:01.265:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:01.302:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:01.352:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:01.402:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:01.455:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0d +12:02:01.503:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:01.978:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:02.341:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:02.803:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:03.265:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:03.695:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:04.093:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:04.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:04.884:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:05.272:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:05.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:06.051:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:06.443:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:06.839:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:07.247:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:07.298:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:07.801:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:07.842:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:07.891:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:02:08.268:seproxyhal: printf: Integrity check for: {0x92, 0x80, 0x45, 0xf0, 0x68, 0xab, 0x62, 0x83, 0xfd, 0x9b, 0x55, 0xaf, 0x83, 0xaf, 0x5f, 0x9f, 0x8b, 0x92, 0x4c, 0xb1, 0xb6, 0x2d, 0x12, 0x1a, 0xe9, 0x46, 0xa0, 0x0f, 0x0f, 0xd5, 0x4c, 0x82} +12:02:09.623:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:10.109:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:10.170:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:10.211:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:10.267:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:10.624:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:10.666:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:10.720:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:10.785:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:10.840:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0e +12:02:10.888:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:11.263:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:11.641:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:12.038:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:12.515:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:12.900:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:13.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:13.713:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:14.103:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:14.498:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:14.881:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:15.287:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:15.672:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:16.151:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:02:16.518:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:16.864:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:16.928:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:17.278:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:17.322:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:17.375:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:02:17.708:seproxyhal: printf: Integrity check for: {0x54, 0xa0, 0xde, 0x88, 0x10, 0xbd, 0x6f, 0x67, 0x14, 0xfc, 0xd1, 0x0d, 0x93, 0xb9, 0xe7, 0x07, 0x28, 0x14, 0x2d, 0xab, 0x50, 0x5c, 0x12, 0x83, 0xdc, 0x87, 0xb5, 0x52, 0x6a, 0x02, 0xf9, 0x61} +12:02:18.804:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:19.300:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:19.339:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:19.380:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:19.445:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:19.808:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:19.850:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:19.903:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:19.955:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:19.989:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0f +12:02:20.032:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:20.562:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:20.929:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:21.409:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:21.784:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:22.190:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:22.609:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:23.041:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:23.435:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:23.827:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:24.230:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:24.620:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:25.061:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:25.446:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:02:25.821:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:02:26.303:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:26.683:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:26.746:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:27.254:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:27.292:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:27.341:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:02:27.673:seproxyhal: printf: Integrity check for: {0xf5, 0xd6, 0xf2, 0x37, 0xb4, 0x66, 0x56, 0xe3, 0xca, 0xba, 0xac, 0x01, 0x50, 0x4c, 0x97, 0xa6, 0x2b, 0xb7, 0x14, 0x45, 0xb6, 0x54, 0x7c, 0x18, 0x29, 0xb7, 0xde, 0x4f, 0xf3, 0xae, 0xfd, 0x2} +12:02:28.792:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:29.222:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:29.284:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:29.325:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:29.364:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:29.753:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:29.805:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:29.857:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:29.907:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:29.940:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 10 +12:02:29.979:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:30.488:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:30.942:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:31.352:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:31.729:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:32.157:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:32.557:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:32.929:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:33.321:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:33.725:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:34.101:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:34.514:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:34.964:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:35.427:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:02:35.842:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:02:36.349:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:02:36.730:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:37.119:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:37.164:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:37.527:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:37.567:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:37.623:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:02:38.056:seproxyhal: printf: Integrity check for: {0x81, 0x6f, 0x57, 0xd9, 0x7d, 0x97, 0x3f, 0xc6, 0x30, 0x61, 0x79, 0x5b, 0x26, 0x2d, 0x57, 0x22, 0xe8, 0xe7, 0xdc, 0x8d, 0xbf, 0xb2, 0xab, 0x51, 0x15, 0x4b, 0x7b, 0x57, 0x52, 0x70, 0xdc, 0x2d} +12:02:39.477:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:39.900:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:39.978:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:40.009:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:40.049:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:40.382:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:40.427:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:40.487:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:40.533:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:40.583:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 11 +12:02:40.623:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:41.018:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:41.428:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:41.775:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:42.213:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:42.605:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:42.931:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:43.426:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:43.826:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:44.257:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:44.645:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:45.028:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:45.411:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:45.813:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:02:46.180:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:02:46.591:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:02:46.958:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:02:47.367:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:47.750:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:47.795:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:48.122:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:48.176:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:48.256:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:02:48.532:seproxyhal: printf: Integrity check for: {0xa9, 0xae, 0x65, 0x7f, 0x2c, 0x82, 0x95, 0x2b, 0xab, 0x45, 0x31, 0x85, 0x43, 0xe4, 0x12, 0x59, 0x45, 0x4e, 0x2c, 0x10, 0x9c, 0x13, 0xe6, 0xbe, 0x2a, 0x1e, 0x97, 0x0a, 0xce, 0xfa, 0xc6, 0x13} +12:02:50.172:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:02:50.605:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:02:50.652:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:02:50.686:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:02:50.752:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:02:51.211:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:02:51.270:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:51.340:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:02:51.380:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:02:51.436:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 12 +12:02:51.484:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:02:51.845:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:02:52.247:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:02:52.636:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:02:53.033:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:02:53.437:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:02:53.843:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:02:54.200:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:02:54.679:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:02:55.071:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:02:55.467:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:02:55.840:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:02:56.260:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:02:56.647:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:02:57.033:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:02:57.422:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:02:57.844:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:02:58.259:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:02:58.640:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:02:59.053:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:02:59.117:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:02:59.619:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:02:59.669:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:02:59.721:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:03:00.028:seproxyhal: printf: Integrity check for: {0x0f, 0x32, 0x00, 0x3e, 0xa4, 0x48, 0xc1, 0xdf, 0x21, 0xe8, 0xf4, 0xec, 0x4e, 0xae, 0x7a, 0x68, 0x36, 0x68, 0x0a, 0x20, 0xb5, 0xa0, 0xd5, 0x2c, 0xec, 0x26, 0x2c, 0x95, 0x04, 0x50, 0xf9, 0x7} +12:03:01.507:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:03:01.923:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:03:01.968:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:03:02.031:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:03:02.077:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:03:02.410:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:03:02.453:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:02.495:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:03:02.545:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:03:02.590:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 13 +12:03:02.631:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:03:03.146:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:03:03.532:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:03:04.013:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:03:04.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:03:04.794:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:03:05.152:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:03:05.558:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:03:06.020:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:03:06.401:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:03:06.793:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:03:07.178:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:03:07.658:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:03:08.055:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:03:08.441:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:03:08.836:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:03:09.205:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:03:09.677:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:03:10.060:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:03:10.480:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:03:10.867:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:10.919:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:03:11.448:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:03:11.490:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:03:11.549:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:03:11.925:seproxyhal: printf: Integrity check for: {0x5a, 0x28, 0xc1, 0x55, 0xfe, 0x77, 0x53, 0x06, 0xe7, 0x97, 0xcd, 0x1f, 0x65, 0xe5, 0xbe, 0xbe, 0x6a, 0x49, 0xdd, 0x0d, 0xce, 0x10, 0x04, 0x10, 0xf2, 0xcb, 0xe0, 0xad, 0xa4, 0xd7, 0x0d, 0x66} +12:03:13.199:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:03:13.668:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:03:13.708:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:03:13.759:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:03:13.799:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:03:14.149:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:03:14.197:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:14.252:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:03:14.301:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:03:14.353:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 14 +12:03:14.391:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:03:14.794:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:03:15.172:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:03:15.621:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:03:16.001:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:03:16.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:03:16.832:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:03:17.210:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:03:17.577:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:03:18.013:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:03:18.378:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:03:18.829:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:03:19.233:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:03:19.633:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:03:19.950:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:03:20.335:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:03:20.718:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:03:21.107:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:03:21.572:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:03:21.956:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:03:22.339:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:03:22.721:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:22.766:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:03:23.105:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:03:23.161:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:03:23.232:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:03:23.582:seproxyhal: printf: Integrity check for: {0x89, 0x16, 0x45, 0xa3, 0xad, 0x26, 0xe6, 0xdc, 0xc6, 0xb9, 0x44, 0xb3, 0x74, 0x7c, 0x76, 0xe7, 0x0e, 0x56, 0xb8, 0x39, 0xe5, 0x75, 0xe5, 0x48, 0x23, 0x32, 0x93, 0xb2, 0x7c, 0xbf, 0x44, 0xad} +12:03:24.887:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:03:25.343:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:03:25.406:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:03:25.447:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:03:25.488:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:03:25.939:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:03:25.977:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:26.030:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:03:26.073:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:03:26.107:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 15 +12:03:26.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:03:26.566:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:03:26.985:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:03:27.347:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:03:27.781:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:03:28.191:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:03:28.526:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:03:29.029:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:03:29.420:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:03:29.806:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:03:30.182:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:03:30.586:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:03:30.961:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:03:31.370:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:03:31.771:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:03:32.171:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:03:32.532:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:03:33.014:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:03:33.404:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:03:33.791:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:03:34.177:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:03:34.573:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:03:34.978:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:35.044:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:03:35.525:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:03:35.577:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:03:35.628:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:03:35.961:seproxyhal: printf: Integrity check for: {0x0c, 0xf2, 0x4f, 0x0e, 0x34, 0xeb, 0x55, 0xae, 0xa2, 0x60, 0x55, 0x46, 0xa3, 0x4e, 0x48, 0x0d, 0xb8, 0x34, 0x58, 0x2a, 0x80, 0x62, 0xc3, 0x07, 0x65, 0x76, 0x65, 0x34, 0xe6, 0xe9, 0x45, 0x69} +12:03:37.200:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:03:37.671:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:03:37.733:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:03:37.792:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:03:37.840:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:03:38.211:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:03:38.252:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:38.304:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:03:38.346:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:03:38.378:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 16 +12:03:38.437:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:03:38.899:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:03:39.301:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:03:39.686:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:03:40.059:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:03:40.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:03:40.868:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:03:41.275:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:03:41.638:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:03:42.093:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:03:42.482:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:03:42.869:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:03:43.281:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:03:43.688:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:03:44.123:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:03:44.520:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:03:44.921:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:03:45.308:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:03:45.725:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:03:46.122:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:03:46.532:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:03:46.927:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:03:47.301:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:03:47.686:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:47.734:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:03:48.252:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:03:48.299:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:03:48.358:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:03:48.757:seproxyhal: printf: Integrity check for: {0x80, 0x4e, 0x3b, 0x2d, 0xea, 0x0b, 0x2c, 0x7b, 0x06, 0xfb, 0x0c, 0xb5, 0x63, 0xfc, 0x66, 0xf1, 0x0c, 0x95, 0xd0, 0x0e, 0x67, 0x65, 0xa8, 0x98, 0xa3, 0xa8, 0xe0, 0x1e, 0xeb, 0x5e, 0x65, 0x3c} +12:03:50.091:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:03:50.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:03:50.620:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:03:50.674:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:03:50.716:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:03:51.047:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:03:51.098:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:03:51.154:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:03:51.197:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:03:51.251:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 17 +12:03:51.314:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:03:51.796:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:03:52.228:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:03:52.602:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:03:53.018:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:03:53.407:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:03:53.793:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:03:54.228:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:03:54.666:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:03:55.061:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:03:55.450:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:03:55.831:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:03:56.245:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:03:56.682:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:03:57.127:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:03:57.557:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:03:58.033:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:03:58.416:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:03:58.802:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:03:59.210:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:03:59.564:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:04:00.025:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:04:00.488:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:04:00.812:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:04:01.204:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:01.256:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:04:01.608:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:04:01.652:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:04:01.722:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:04:02.103:seproxyhal: printf: Integrity check for: {0xa2, 0x12, 0x84, 0xf7, 0xd7, 0x4e, 0x24, 0x3b, 0xbd, 0x7c, 0x61, 0x03, 0xbe, 0x8b, 0xeb, 0xeb, 0xde, 0x44, 0x09, 0xf2, 0x5c, 0xd2, 0x08, 0x90, 0x1d, 0x03, 0xf2, 0xaf, 0xa3, 0x22, 0xbc, 0xb1} +12:04:03.307:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:04:03.762:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:04:03.802:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:04:03.841:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:04:03.884:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:04:04.333:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:04:04.374:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:04.454:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:04:04.510:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:04:04.561:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 18 +12:04:04.603:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:04:05.143:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:04:05.486:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:04:05.934:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:04:06.333:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:04:06.782:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:04:07.157:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:04:07.547:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:04:07.947:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:04:08.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:04:08.701:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:04:09.158:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:04:09.538:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:04:09.932:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:04:10.286:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:04:10.740:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:04:11.117:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:04:11.585:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:04:11.960:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:04:12.357:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:04:12.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:04:13.175:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:04:13.575:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:04:13.940:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:04:14.353:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:04:14.730:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:14.788:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:04:15.306:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:04:15.345:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:04:15.391:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:04:15.773:seproxyhal: printf: Integrity check for: {0x85, 0xd6, 0x13, 0x4e, 0x7e, 0x0c, 0x78, 0x9c, 0x59, 0x8b, 0x42, 0x3d, 0xa8, 0x57, 0x3e, 0x53, 0xb0, 0x82, 0xcb, 0xc9, 0x03, 0x01, 0xe9, 0x62, 0xbd, 0x01, 0x55, 0x73, 0x40, 0xa0, 0xc6, 0xd9} +12:04:17.045:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:04:17.536:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:04:17.582:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:04:17.634:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:04:17.703:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:04:18.223:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:04:18.265:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:18.325:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:04:18.372:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:04:18.408:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 19 +12:04:18.445:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:04:18.928:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:04:19.371:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:04:19.857:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:04:20.241:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:04:20.608:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:04:21.094:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:04:21.495:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:04:21.857:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:04:22.302:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:04:22.684:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:04:23.118:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:04:23.493:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:04:23.975:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:04:24.368:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:04:24.758:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:04:25.140:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:04:25.484:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:04:25.893:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:04:26.274:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:04:26.707:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:04:27.122:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:04:27.495:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:04:27.924:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:04:28.303:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:04:28.710:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:04:29.090:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:29.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:04:29.654:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:04:29.703:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:04:29.766:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:04:30.101:seproxyhal: printf: Integrity check for: {0xaf, 0xca, 0xde, 0x50, 0xca, 0xf1, 0x6f, 0x6c, 0x6e, 0x0e, 0xca, 0x9b, 0xda, 0x54, 0x7d, 0x22, 0xa4, 0x04, 0x32, 0x17, 0x98, 0x63, 0x24, 0x62, 0x37, 0xe4, 0x09, 0x7d, 0x02, 0x15, 0x48, 0xed} +12:04:31.316:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:04:31.779:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:04:31.857:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:04:31.889:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:04:31.941:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:04:32.462:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:04:32.502:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:32.564:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:04:32.608:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:04:32.646:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 1a +12:04:32.700:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:04:33.196:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:04:33.675:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:04:34.075:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:04:34.433:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:04:34.828:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:04:35.214:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:04:35.625:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:04:36.011:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:04:36.423:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:04:36.800:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:04:37.263:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:04:37.671:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:04:38.061:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:04:38.463:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:04:38.850:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:04:39.242:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:04:39.633:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:04:40.013:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:04:40.459:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:04:40.856:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:04:41.224:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:04:41.676:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:04:42.064:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:04:42.454:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:04:42.856:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203236 +12:04:43.235:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:04:43.632:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:43.688:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:04:44.207:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:04:44.244:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:04:44.289:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:04:44.624:seproxyhal: printf: Integrity check for: {0x7c, 0x77, 0x9d, 0x79, 0xd4, 0x5e, 0x49, 0x5a, 0xd4, 0xb9, 0x8d, 0xf6, 0xb9, 0xb3, 0x4b, 0x44, 0x5e, 0xd3, 0x6a, 0x4a, 0x36, 0x9f, 0x1f, 0xd7, 0x1a, 0x5b, 0xec, 0x19, 0x45, 0xd9, 0x6c, 0x39} +12:04:45.972:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:04:46.450:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:04:46.532:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:04:46.578:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:04:46.627:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:04:47.161:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:04:47.219:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:47.273:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:04:47.316:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:04:47.367:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 1b +12:04:47.415:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:04:47.777:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:04:48.177:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:04:48.569:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:04:48.960:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:04:49.329:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:04:49.719:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:04:50.137:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:04:50.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:04:50.885:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:04:51.288:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:04:51.650:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:04:52.098:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:04:52.497:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:04:52.887:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:04:53.267:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:04:53.661:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:04:54.062:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:04:54.431:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:04:54.873:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:04:55.241:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:04:55.639:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:04:56.034:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:04:56.487:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:04:56.878:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:04:57.276:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203236 +12:04:57.647:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203237 +12:04:58.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:04:58.444:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:04:58.515:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:04:58.982:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:04:59.026:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:04:59.090:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:04:59.440:seproxyhal: printf: Integrity check for: {0x2e, 0x75, 0xa8, 0x74, 0x8b, 0xcf, 0xdd, 0x43, 0x2d, 0xb2, 0x58, 0x1a, 0x20, 0xc1, 0x06, 0xcd, 0x76, 0x6a, 0x55, 0x6d, 0xac, 0x29, 0x33, 0x62, 0x3e, 0x3f, 0x72, 0xf4, 0xaf, 0xf2, 0x1c, 0x20} +12:05:00.680:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:05:01.186:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:05:01.251:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:05:01.287:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:05:01.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:05:01.634:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:05:01.683:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:01.755:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:05:01.817:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:05:01.864:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 1c +12:05:01.914:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:05:02.246:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:05:02.665:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:05:03.149:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:05:03.580:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:05:03.966:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:05:04.342:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:05:04.713:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:05:05.187:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:05:05.559:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:05:06.002:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:05:06.398:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:05:06.756:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:05:07.248:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:05:07.703:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:05:08.090:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:05:08.496:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:05:08.875:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:05:09.289:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:05:09.682:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:05:10.051:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:05:10.538:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:05:10.915:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:05:11.344:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:05:11.787:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:05:12.159:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203236 +12:05:12.604:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203237 +12:05:13.002:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203238 +12:05:13.370:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:05:13.758:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:13.813:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:05:14.132:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:05:14.175:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:05:14.246:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:05:14.522:seproxyhal: printf: Integrity check for: {0x3a, 0xb8, 0xac, 0xce, 0x82, 0x3b, 0x31, 0xff, 0xf5, 0x4f, 0x18, 0x95, 0x19, 0x82, 0xed, 0xec, 0x82, 0x76, 0xde, 0x4a, 0x91, 0x4c, 0x97, 0xc8, 0x18, 0xc4, 0xaa, 0x90, 0x65, 0xae, 0x99, 0xc1} +12:05:16.177:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:05:16.635:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:05:16.678:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:05:16.728:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:05:16.781:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:05:17.163:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:05:17.204:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:17.259:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:05:17.323:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:05:17.376:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 1d +12:05:17.419:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:05:17.785:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:05:18.150:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:05:18.602:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:05:19.012:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:05:19.474:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:05:19.839:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:05:20.286:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:05:20.689:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:05:21.073:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:05:21.456:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:05:21.827:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:05:22.305:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:05:22.690:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:05:23.079:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:05:23.516:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:05:23.943:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:05:24.324:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:05:24.776:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:05:25.184:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:05:25.568:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:05:25.962:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:05:26.360:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:05:26.767:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:05:27.151:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:05:27.549:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203236 +12:05:27.903:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203237 +12:05:28.385:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203238 +12:05:28.767:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203239 +12:05:29.172:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:05:29.558:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:29.619:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:05:30.095:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:05:30.151:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:05:30.219:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:05:30.549:seproxyhal: printf: Integrity check for: {0x2c, 0x03, 0x66, 0x3b, 0xa4, 0xa8, 0x16, 0xe1, 0xd5, 0x33, 0xed, 0xc9, 0x53, 0xe4, 0xe0, 0xb2, 0xb5, 0xf1, 0x9f, 0xfa, 0x48, 0x61, 0x62, 0xdc, 0xd2, 0x20, 0x6e, 0xc9, 0x46, 0x8c, 0xe2, 0xcb} +12:05:31.819:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:05:32.246:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:05:32.320:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:05:32.356:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30557015d289deaa32dd01 +12:05:32.415:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e1c566f746520666f722046494f20426c6f636b2070726f647563657273 +12:05:32.758:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:05:32.798:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:32.854:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:05:32.913:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:05:32.953:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 1e +12:05:33.008:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722031 +12:05:33.480:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722032 +12:05:33.869:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722033 +12:05:34.280:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722034 +12:05:34.655:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722035 +12:05:35.057:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722036 +12:05:35.453:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722037 +12:05:35.823:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722038 +12:05:36.307:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a50726f64756365722039 +12:05:36.667:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203130 +12:05:37.102:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203131 +12:05:37.460:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203132 +12:05:37.933:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203133 +12:05:38.342:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203134 +12:05:38.711:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203135 +12:05:39.158:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203136 +12:05:39.542:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203137 +12:05:39.941:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203138 +12:05:40.329:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203139 +12:05:40.737:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203230 +12:05:41.141:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203231 +12:05:41.538:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203232 +12:05:41.915:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203233 +12:05:42.306:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203234 +12:05:42.691:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203235 +12:05:43.075:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203236 +12:05:43.539:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203237 +12:05:43.943:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203238 +12:05:44.333:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203239 +12:05:44.758:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050b50726f6475636572203330 +12:05:45.171:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:05:45.543:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:45.589:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:05:45.938:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:05:45.999:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:05:46.047:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:05:46.352:seproxyhal: printf: Integrity check for: {0x4a, 0xde, 0x67, 0x61, 0x5f, 0xa6, 0x74, 0x60, 0xa0, 0x70, 0x9b, 0x9e, 0x81, 0x0f, 0x54, 0x76, 0xe8, 0x6a, 0xed, 0x5b, 0xaa, 0xbc, 0x04, 0x96, 0xc1, 0x5d, 0xeb, 0x28, 0xf5, 0x7c, 0xa5, 0x25} +12:05:47.506:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:05:47.973:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:05:48.052:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:05:48.086:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000000ea30550000f09ddeaa32dd01 +12:05:48.121:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0b50726f787920766f746573 +12:05:48.475:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:05:48.527:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:48.588:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:05:48.626:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:05:48.684:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050550726f7879 +12:05:49.069:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040204000000000000004100000000000000050a46494f2048616e646c65 +12:05:49.487:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:49.550:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:05:50.005:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:05:50.058:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:05:50.110:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:05:50.473:seproxyhal: printf: Integrity check for: {0xf8, 0x4d, 0xac, 0xa3, 0xb0, 0x93, 0xa7, 0x32, 0x47, 0x21, 0x4c, 0x7e, 0xf1, 0xfb, 0x99, 0x0a, 0xb5, 0x4f, 0xf0, 0x6b, 0x9d, 0x3b, 0x69, 0xac, 0x73, 0xd9, 0x91, 0xf9, 0xdf, 0x79, 0x54, 0x4c} +12:05:51.495 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionOtherEosio +12:05:55.279 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv testStart() // snapshots/signTransactionOtherFioOracle +12:05:55.886:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:05:56.332:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:05:56.373:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:05:56.407:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00808ac85c0aa85b00c07446d254cde501 +12:05:56.460:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0f577261702046494f20446f6d61696e +12:05:56.903:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:05:56.951:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:57.000:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:05:57.055:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:05:57.100:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000003f00000000000000050a46494f20446f6d61696e +12:05:57.588:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +12:05:58.072:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050e5075626c69632041646472657373 +12:05:58.439:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f050e4d6178206f7261636c6520666565 +12:05:58.830:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:05:59.262:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:05:59.313:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:05:59.362:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:05:59.402:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:05:59.465:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:05:59.847:seproxyhal: printf: Integrity check for: {0x15, 0x20, 0xa0, 0x1b, 0x8c, 0x14, 0xc1, 0x46, 0x2c, 0xe2, 0xcb, 0x55, 0x20, 0x7c, 0xef, 0xba, 0x6d, 0x77, 0x56, 0x5f, 0xec, 0xe1, 0xbf, 0xe9, 0x0a, 0x60, 0xf9, 0xa2, 0xe1, 0x2d, 0x33, 0xf8} +12:06:01.076:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 01. p2: 00, constdata: +12:06:01.574:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 01020a000000000000000a000000000000000200 +12:06:01.624:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 0000000001 +12:06:01.673:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 00808ac85c0aa85b00009e0ad25ccde501 +12:06:01.708:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 03. p2: 00, constdata: 06416374696f6e0b5772617020546f6b656e73 +12:06:02.126:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 07. p2: 01, constdata: +12:06:02.170:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:06:02.221:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000000200 +12:06:02.261:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 05. p2: 00, constdata: 17030000000000000000ffffffff00000000 +12:06:02.315:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f0506416d6f756e74 +12:06:02.678:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040202000000000000000b00000000000000050a436861696e20636f6465 +12:06:03.078:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 040201000000000000000400000001000000050e5075626c69632041646472657373 +12:06:03.473:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f050e4d6178206f7261636c6520666565 +12:06:03.801:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 10030000000000000000ffffffffffffff7f05074d617820666565 +12:06:04.188:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0402010000000000000004000000010000000200 +12:06:04.249:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 04. p2: 00, constdata: 0102080000000000000008000000000000001200 +12:06:04.292:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 06. p2: 00, constdata: +12:06:04.327:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 02. p2: 00, constdata: 000000000000000000000000000000000000000000000000000000000000000000 +12:06:04.369:seproxyhal: printf: [integrityCheckProcessInstruction:322] p1: 10. p2: 00, constdata: +12:06:04.765:seproxyhal: printf: Integrity check for: {0x97, 0xb8, 0xd1, 0xc4, 0x89, 0x18, 0x9b, 0xbc, 0xcb, 0xc6, 0xb1, 0x8e, 0x54, 0x0c, 0xba, 0x73, 0x37, 0xd2, 0xe3, 0x8f, 0x04, 0x3e, 0x98, 0xad, 0xb9, 0x7e, 0x6d, 0xba, 0xaa, 0xae, 0xef, 0xa0} +12:06:06.421 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testEnd() // snapshots/signTransactionOtherFioOracle + diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index 5a935d20..f7beebca 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -381,7 +381,7 @@ Ends Diffie-Hellman encrypted block. ### FINISH | Field | Value | -| ---------------- | +| ------|--------- | | P1 | `0x10` | | P2 | unused | diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index 2a92cbcc..ad7b8a66 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -319,6 +319,7 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * sha_256_append(&ctx, constData, constDataLength); sha_256_finalize(&ctx, integrity->integrityHash, SIZEOF(integrity->integrityHash)); + TRACE("p1: %02x. p2: %02x, constdata: %.*h", p1, p2, constDataLength, constData); TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index 7f86174b..9ce46d40 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -96,14 +96,15 @@ static void displayMemoHash(const uint8_t *value, TRACE_BUFFER(value, valueLen); VALIDATE(valueLen >= 1, ERR_INVALID_DATA); if (value[0] == 1) { // has memo - VALIDATE(valueLen >= 2, ERR_INVALID_DATA); // this also checks that memo has length at least 1 + VALIDATE(valueLen >= 2, + ERR_INVALID_DATA); // this also checks that memo has length at least 1 size_t memoLen = value[1]; VALIDATE(memoLen < 127, ERR_INVALID_DATA); VALIDATE(valueLen == memoLen + 4, ERR_INVALID_DATA); // has memo, memo length, memo, no hash, no url - VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); //no hash - VALIDATE(value[3 + memoLen] == 0, ERR_INVALID_DATA); //no offline_url - } else if (value[0] == 0) { // no memo + VALIDATE(value[2 + memoLen] == 0, ERR_INVALID_DATA); // no hash + VALIDATE(value[3 + memoLen] == 0, ERR_INVALID_DATA); // no offline_url + } else if (value[0] == 0) { // no memo TRACE("No memo"); VALIDATE(valueLen >= 3, ERR_INVALID_DATA); VALIDATE(value[1] == 1, ERR_INVALID_DATA); // has hash From 9b282abbb74524bdd82b41ef124cacc53c60c84b Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sun, 22 Jan 2023 14:43:14 +0100 Subject: [PATCH 68/83] NanoX icon update --- icon_fio_nanox.gif | Bin 79 -> 85 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icon_fio_nanox.gif b/icon_fio_nanox.gif index ed6bd41056797cd39629dc6f2995201c2d2e48e1..fc5969d0af5a06588d29037018f355544f810258 100644 GIT binary patch delta 63 zcmeYdm2mfTv#?C$W8h=>z{mgu|NsA2{K>+=Fi}8O0VK-6B;L}$a`wY>_qrPuGkVY5 QPKrxCaJ=(bBm;vr093gZ`~Uy| delta 57 zcmWIb7jXAs*$}$Y2cs?G6%r From a412d736a30fb34b558e1e3dbbee5094633ecd79 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 23 Jan 2023 11:14:08 +0100 Subject: [PATCH 69/83] Add fuzzing --- fuzzing/.gitignore | 4 + fuzzing/CMakeLists.txt | 119 +++++++++++ fuzzing/build.sh | 14 ++ .../0bf54da288603365b3c019a266d2f56a8db731ec | Bin 0 -> 14 bytes .../110b031960b2087b696805d578dc858764613d3a | Bin 0 -> 15 bytes .../18d7e29f9a7b5e90c073b021013e7cb852de3d9c | Bin 0 -> 28 bytes .../1d7112ad8410ed55d3d2e904378d2edba7162bc1 | Bin 0 -> 6 bytes .../24b0a452b41f74d1c6119119dd31a6e14634e02d | Bin 0 -> 32 bytes .../38135bfdd5f38e2e6fdaf019cfd0cb267ef60598 | Bin 0 -> 11 bytes .../388d2fe45b4cb2c7d4f7b8c5240e27e9f094116a | Bin 0 -> 5 bytes .../3ce0a1af90b6e7a3dd8d45e410884b588ea2d04c | 1 + .../42b47bb6a589be12ed92861cd44c3fb4aaf34ff2 | Bin 0 -> 5 bytes .../5a9cf2d7d6b5567a5859b560cf53ab432900c7c7 | Bin 0 -> 5 bytes .../61399f000a50c0e043aaccb9305c7f7379c17ffa | Bin 0 -> 5 bytes .../7d88a3357ad624a005f50c68adf8613289912626 | Bin 0 -> 5 bytes .../8583b7a25a96ff4e966ea4a7fb46ba444dcd07be | Bin 0 -> 8 bytes .../872dd54bcc59b990125562f1f82d7f438b5ac3bd | Bin 0 -> 10 bytes .../ade5825f4f88086aa0e55d19e724285cb60a0691 | Bin 0 -> 5 bytes .../bc9bacb3237fe5b1fa630c3f96ed06f04ae4910d | Bin 0 -> 6 bytes .../bf4418fc8b4adce25d777ceb4869bdccccf48fcd | Bin 0 -> 9 bytes .../cce855677a784643d7b36826bf0f8179c0e3b8d8 | 1 + .../e1e135a079540f6fa0ae4ddb0eb8f588aefc2976 | Bin 0 -> 6 bytes .../fcece056443a868894b3f903d66ab597b81fe26c | Bin 0 -> 8 bytes fuzzing/corpus/get_pubkey | Bin 0 -> 26 bytes fuzzing/corpus/get_serial | Bin 0 -> 5 bytes fuzzing/corpus/get_version | Bin 0 -> 5 bytes fuzzing/corpus/sign_1 | Bin 0 -> 38 bytes fuzzing/corpus/sign_2 | Bin 0 -> 15 bytes fuzzing/corpus/sign_3 | Bin 0 -> 21 bytes fuzzing/corpus/sign_4 | Bin 0 -> 21 bytes fuzzing/corpus/sign_5 | Bin 0 -> 36 bytes fuzzing/corpus/sign_6 | Bin 0 -> 26 bytes fuzzing/coverage.sh | 21 ++ ...h-2fc1a6f934a4be9509169e45e99f3529697f8009 | Bin 0 -> 21 bytes ...h-697c3622b79ac32872c0746c7622d76a82166f1b | Bin 0 -> 5 bytes fuzzing/fuzz_fio.c | 49 +++++ fuzzing/os_mocks.c | 191 ++++++++++++++++++ fuzzing/run.sh | 10 + src/hash.h | 1 + src/signTransaction.c | 6 +- src/signTransactionParse.c | 8 +- 41 files changed, 418 insertions(+), 7 deletions(-) create mode 100644 fuzzing/.gitignore create mode 100644 fuzzing/CMakeLists.txt create mode 100755 fuzzing/build.sh create mode 100644 fuzzing/corpus/0bf54da288603365b3c019a266d2f56a8db731ec create mode 100644 fuzzing/corpus/110b031960b2087b696805d578dc858764613d3a create mode 100644 fuzzing/corpus/18d7e29f9a7b5e90c073b021013e7cb852de3d9c create mode 100644 fuzzing/corpus/1d7112ad8410ed55d3d2e904378d2edba7162bc1 create mode 100644 fuzzing/corpus/24b0a452b41f74d1c6119119dd31a6e14634e02d create mode 100644 fuzzing/corpus/38135bfdd5f38e2e6fdaf019cfd0cb267ef60598 create mode 100644 fuzzing/corpus/388d2fe45b4cb2c7d4f7b8c5240e27e9f094116a create mode 100644 fuzzing/corpus/3ce0a1af90b6e7a3dd8d45e410884b588ea2d04c create mode 100644 fuzzing/corpus/42b47bb6a589be12ed92861cd44c3fb4aaf34ff2 create mode 100644 fuzzing/corpus/5a9cf2d7d6b5567a5859b560cf53ab432900c7c7 create mode 100644 fuzzing/corpus/61399f000a50c0e043aaccb9305c7f7379c17ffa create mode 100644 fuzzing/corpus/7d88a3357ad624a005f50c68adf8613289912626 create mode 100644 fuzzing/corpus/8583b7a25a96ff4e966ea4a7fb46ba444dcd07be create mode 100644 fuzzing/corpus/872dd54bcc59b990125562f1f82d7f438b5ac3bd create mode 100644 fuzzing/corpus/ade5825f4f88086aa0e55d19e724285cb60a0691 create mode 100644 fuzzing/corpus/bc9bacb3237fe5b1fa630c3f96ed06f04ae4910d create mode 100644 fuzzing/corpus/bf4418fc8b4adce25d777ceb4869bdccccf48fcd create mode 100644 fuzzing/corpus/cce855677a784643d7b36826bf0f8179c0e3b8d8 create mode 100644 fuzzing/corpus/e1e135a079540f6fa0ae4ddb0eb8f588aefc2976 create mode 100644 fuzzing/corpus/fcece056443a868894b3f903d66ab597b81fe26c create mode 100644 fuzzing/corpus/get_pubkey create mode 100644 fuzzing/corpus/get_serial create mode 100644 fuzzing/corpus/get_version create mode 100644 fuzzing/corpus/sign_1 create mode 100644 fuzzing/corpus/sign_2 create mode 100644 fuzzing/corpus/sign_3 create mode 100644 fuzzing/corpus/sign_4 create mode 100644 fuzzing/corpus/sign_5 create mode 100644 fuzzing/corpus/sign_6 create mode 100755 fuzzing/coverage.sh create mode 100644 fuzzing/crash-2fc1a6f934a4be9509169e45e99f3529697f8009 create mode 100644 fuzzing/crash-697c3622b79ac32872c0746c7622d76a82166f1b create mode 100644 fuzzing/fuzz_fio.c create mode 100644 fuzzing/os_mocks.c create mode 100755 fuzzing/run.sh diff --git a/fuzzing/.gitignore b/fuzzing/.gitignore new file mode 100644 index 00000000..4b7a8764 --- /dev/null +++ b/fuzzing/.gitignore @@ -0,0 +1,4 @@ +/cmake-build-fuzz/ +/cmake-build-fuzz-coverage/ +!/corpus/*.raw +/html-coverage/ diff --git a/fuzzing/CMakeLists.txt b/fuzzing/CMakeLists.txt new file mode 100644 index 00000000..3860754d --- /dev/null +++ b/fuzzing/CMakeLists.txt @@ -0,0 +1,119 @@ +cmake_minimum_required(VERSION 3.10) + +project(FioFuzzer VERSION 0.1 LANGUAGES C) + +set(CMAKE_C_STANDARD 11) + +# BOLOS SDK +set(BOLOS_SDK $ENV{BOLOS_SDK}) +add_compile_definitions(IO_HID_EP_LENGTH=64) + +add_compile_definitions(HAVE_ECC HAVE_HASH HAVE_HMAC HAVE_SHA256 HAVE_SHA512 HAVE_AES HAVE_ECDH HAVE_RNG HAVE_RIPEMD160 HAVE_ECDSA HAVE_ECC_WEIERSTRASS HAVE_SECP256K1_CURVE ) +include_directories(. + ../src + "${BOLOS_SDK}/include" + "${BOLOS_SDK}/lib_cxng/include" + "${BOLOS_SDK}/lib_ux/include" +) + +add_compile_options(-g -ggdb2 -O3) + +# Build with code coverage generation +if(CODE_COVERAGE) + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + add_compile_options(-fprofile-instr-generate -fcoverage-mapping) + add_link_options(-fprofile-instr-generate -fcoverage-mapping) + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU") + add_compile_options(-fprofile-arcs -ftest-coverage) + link_libraries(gcov) + else() + message(FATAL_ERROR "Unsupported compiler used with code coverage generation") + endif() +endif() + +# Fuzzer target +set(APP_SRC_DIR "../src") + +add_definitions( + -DAPPNAME="FIO" + -DMAJOR_VERSION=1 + -DMINOR_VERSION=0 + -DPATCH_VERSION=6 + -DAPPVERSION="1.0.6" + + -DOS_IO_SEPROXYHAL + -DIO_SEPROXYHAL_BUFFER_SIZE_B=128 + -DRESET_ON_CRASH + + -DHAVE_BAGL + -DHAVE_SPRINTF + -DHAVE_SNPRINTF_FORMAT_U + -DHAVE_PENDING_REVIEW_SCREEN + -DHAVE_IO_USB + -DHAVE_L4_USBLIB + -DIO_USB_MAX_ENDPOINTS=4 + -DIO_HID_EP_LENGTH=64 + -DHAVE_USB_APDU + -DHAVE_WEBUSB + -DWEBUSB_URL_SIZE_B=0 + -DWEBUSB_URL="" + -DHAVE_BOLOS_APP_STACK_CANARY +) + +set(APP_SOURCES + ${APP_SRC_DIR}/assert.h + ${APP_SRC_DIR}/assert.c + ${APP_SRC_DIR}/bip44.h + ${APP_SRC_DIR}/bip44.c + ${APP_SRC_DIR}/decodeDH.h + ${APP_SRC_DIR}/decodeDH.c + ${APP_SRC_DIR}/diffieHellman.h + ${APP_SRC_DIR}/diffieHellman.c + ${APP_SRC_DIR}/eos_utils.h + ${APP_SRC_DIR}/eos_utils.c + ${APP_SRC_DIR}/fio.h + ${APP_SRC_DIR}/fio.c + ${APP_SRC_DIR}/getPublicKey.h + ${APP_SRC_DIR}/getPublicKey.c + ${APP_SRC_DIR}/getSerial.h + ${APP_SRC_DIR}/getSerial.c + ${APP_SRC_DIR}/getVersion.h + ${APP_SRC_DIR}/getVersion.c + ${APP_SRC_DIR}/hash.h + ${APP_SRC_DIR}/handlers.h + ${APP_SRC_DIR}/handlers.c + ${APP_SRC_DIR}/hexUtils.h + ${APP_SRC_DIR}/hexUtils.c + ${APP_SRC_DIR}/keyDerivation.h + ${APP_SRC_DIR}/keyDerivation.c + ${APP_SRC_DIR}/securityPolicy.h + ${APP_SRC_DIR}/securityPolicy.c + ${APP_SRC_DIR}/signTransaction.h + ${APP_SRC_DIR}/signTransaction.c + ${APP_SRC_DIR}/signTransactionCountedSection.h + ${APP_SRC_DIR}/signTransactionCountedSection.c + ${APP_SRC_DIR}/signTransactionIntegrity.h + ${APP_SRC_DIR}/signTransactionIntegrity.c + ${APP_SRC_DIR}/signTransactionParse.h + ${APP_SRC_DIR}/signTransactionParse.c + ${APP_SRC_DIR}/state.h + ${APP_SRC_DIR}/state.c + ${APP_SRC_DIR}/textUtils.h + ${APP_SRC_DIR}/textUtils.c + ${APP_SRC_DIR}/uiHelpers.h + ${APP_SRC_DIR}/uiHelpers.c + ${APP_SRC_DIR}/uiHelpers_nanos.c + ${APP_SRC_DIR}/uiScreens.h + ${APP_SRC_DIR}/uiScreens.c + ${APP_SRC_DIR}/utils.h +) + +add_executable(fuzz_message + fuzz_fio.c + os_mocks.c + ${APP_SOURCES} +) + +target_include_directories(fuzz_message PUBLIC ../src) +target_compile_options(fuzz_message PUBLIC -fsanitize=fuzzer,address,undefined -fno-sanitize-recover=undefined) +target_link_options(fuzz_message PUBLIC -fsanitize=fuzzer,address,undefined -fno-sanitize-recover=undefined) diff --git a/fuzzing/build.sh b/fuzzing/build.sh new file mode 100755 index 00000000..38ff962d --- /dev/null +++ b/fuzzing/build.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +SCRIPTDIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)" +BUILDDIR="$SCRIPTDIR/cmake-build-fuzz" + +# Compile fuzzer +rm -rf "$BUILDDIR" +mkdir "$BUILDDIR" +cd "$BUILDDIR" + +cmake -DCMAKE_C_COMPILER=clang .. +make clean +make fuzz_message \ No newline at end of file diff --git a/fuzzing/corpus/0bf54da288603365b3c019a266d2f56a8db731ec b/fuzzing/corpus/0bf54da288603365b3c019a266d2f56a8db731ec new file mode 100644 index 0000000000000000000000000000000000000000..83aa726f39fd604d8643a30ee05aa7c9cc237080 GIT binary patch literal 14 PcmcaEz{nuV$^Zob4XXhI literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/110b031960b2087b696805d578dc858764613d3a b/fuzzing/corpus/110b031960b2087b696805d578dc858764613d3a new file mode 100644 index 0000000000000000000000000000000000000000..e9c76ef52a20f39676bdde8b4276eb8db875fba8 GIT binary patch literal 15 Scmcc4z#zcLAj;an00saN*a3q8 literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/18d7e29f9a7b5e90c073b021013e7cb852de3d9c b/fuzzing/corpus/18d7e29f9a7b5e90c073b021013e7cb852de3d9c new file mode 100644 index 0000000000000000000000000000000000000000..58f6e1399ba6fb37d7fe5494d8fddc202f485367 GIT binary patch literal 28 Ycmcc4z#zcLAj;anz@P)fuYnj2076;=ng9R* literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/1d7112ad8410ed55d3d2e904378d2edba7162bc1 b/fuzzing/corpus/1d7112ad8410ed55d3d2e904378d2edba7162bc1 new file mode 100644 index 0000000000000000000000000000000000000000..c259175b1baafe7f18cf76326648350a89b4b939 GIT binary patch literal 6 Ncmcbvz{SA8000Hp0RjL3 literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/24b0a452b41f74d1c6119119dd31a6e14634e02d b/fuzzing/corpus/24b0a452b41f74d1c6119119dd31a6e14634e02d new file mode 100644 index 0000000000000000000000000000000000000000..ef2073c87f37bd76b72b1afc16b63f9be69ae3df GIT binary patch literal 32 ccmcaEz|0`Z+Q7h|^B)X=tk*yc0sPx# literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/388d2fe45b4cb2c7d4f7b8c5240e27e9f094116a b/fuzzing/corpus/388d2fe45b4cb2c7d4f7b8c5240e27e9f094116a new file mode 100644 index 0000000000000000000000000000000000000000..5f194cf624e1ed49dff869abff9c8a48cb7b5d9a GIT binary patch literal 5 Mcmcc4z#zZ?00dY7=l}o! literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/3ce0a1af90b6e7a3dd8d45e410884b588ea2d04c b/fuzzing/corpus/3ce0a1af90b6e7a3dd8d45e410884b588ea2d04c new file mode 100644 index 00000000..2a2a526d --- /dev/null +++ b/fuzzing/corpus/3ce0a1af90b6e7a3dd8d45e410884b588ea2d04c @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fuzzing/corpus/42b47bb6a589be12ed92861cd44c3fb4aaf34ff2 b/fuzzing/corpus/42b47bb6a589be12ed92861cd44c3fb4aaf34ff2 new file mode 100644 index 0000000000000000000000000000000000000000..eb3b2c79565732179d6f2a89b3d6d9557c96c563 GIT binary patch literal 5 McmZQ&U|?7P006!KrT_o{ literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/5a9cf2d7d6b5567a5859b560cf53ab432900c7c7 b/fuzzing/corpus/5a9cf2d7d6b5567a5859b560cf53ab432900c7c7 new file mode 100644 index 0000000000000000000000000000000000000000..dca3150ee8f1ca7fd8028f127f505c6b7bbc2d54 GIT binary patch literal 5 McmZP&xPF}x00emfzyJUM literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/61399f000a50c0e043aaccb9305c7f7379c17ffa b/fuzzing/corpus/61399f000a50c0e043aaccb9305c7f7379c17ffa new file mode 100644 index 0000000000000000000000000000000000000000..3abc3ae50a034897b176b8cd4fe2470fbb8df26c GIT binary patch literal 5 Mcmcc4@L%CS00?vf_5c6? literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/7d88a3357ad624a005f50c68adf8613289912626 b/fuzzing/corpus/7d88a3357ad624a005f50c68adf8613289912626 new file mode 100644 index 0000000000000000000000000000000000000000..40d0d7abddfb82e95029a9e77b288ab8ec54948b GIT binary patch literal 5 Mcmd0_WoTyr00a~PE&u=k literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/8583b7a25a96ff4e966ea4a7fb46ba444dcd07be b/fuzzing/corpus/8583b7a25a96ff4e966ea4a7fb46ba444dcd07be new file mode 100644 index 0000000000000000000000000000000000000000..d0503ca32b7f838c29fb22b24402f6c2a5855be5 GIT binary patch literal 8 Pcmcc4z#zcLz`y_i2NVG5 literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/872dd54bcc59b990125562f1f82d7f438b5ac3bd b/fuzzing/corpus/872dd54bcc59b990125562f1f82d7f438b5ac3bd new file mode 100644 index 0000000000000000000000000000000000000000..d847bb6239207f649b35b065d1663f0fa2de7996 GIT binary patch literal 10 Ocmcbvz{J4C00ICB+yMjt literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/ade5825f4f88086aa0e55d19e724285cb60a0691 b/fuzzing/corpus/ade5825f4f88086aa0e55d19e724285cb60a0691 new file mode 100644 index 0000000000000000000000000000000000000000..bb490c982131b564a20ade12a306917f3c57281a GIT binary patch literal 5 McmcCh*ucO500YYb4*&oF literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/bc9bacb3237fe5b1fa630c3f96ed06f04ae4910d b/fuzzing/corpus/bc9bacb3237fe5b1fa630c3f96ed06f04ae4910d new file mode 100644 index 0000000000000000000000000000000000000000..10e4a7aa3a255691a53df777e36c3eaa23d3b033 GIT binary patch literal 6 NcmZP&xXy5$5dZ~Y0l)wN literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/bf4418fc8b4adce25d777ceb4869bdccccf48fcd b/fuzzing/corpus/bf4418fc8b4adce25d777ceb4869bdccccf48fcd new file mode 100644 index 0000000000000000000000000000000000000000..920a8a820336957dd4249f7560ea8c4f38903ceb GIT binary patch literal 9 Ocmcbvz{J4C00aOC*Z~9p literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/cce855677a784643d7b36826bf0f8179c0e3b8d8 b/fuzzing/corpus/cce855677a784643d7b36826bf0f8179c0e3b8d8 new file mode 100644 index 00000000..7cf675dd --- /dev/null +++ b/fuzzing/corpus/cce855677a784643d7b36826bf0f8179c0e3b8d8 @@ -0,0 +1 @@ +00ÿöÿ \ No newline at end of file diff --git a/fuzzing/corpus/e1e135a079540f6fa0ae4ddb0eb8f588aefc2976 b/fuzzing/corpus/e1e135a079540f6fa0ae4ddb0eb8f588aefc2976 new file mode 100644 index 0000000000000000000000000000000000000000..611b8a8a8c1b910f9ec1edf977042c02e14f505f GIT binary patch literal 6 Ncmcc4z#zcD000F*0O$Y! literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/fcece056443a868894b3f903d66ab597b81fe26c b/fuzzing/corpus/fcece056443a868894b3f903d66ab597b81fe26c new file mode 100644 index 0000000000000000000000000000000000000000..354b1fe4b0d9e8d074971be41a40e8606145adde GIT binary patch literal 8 Pcmcbvz{J4Cz`y_i2h;%s literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/get_pubkey b/fuzzing/corpus/get_pubkey new file mode 100644 index 0000000000000000000000000000000000000000..c6526428bb6ac8107a081d9ea06567c188c78c0b GIT binary patch literal 26 WcmcaEz{nuV+Q7h|1H`X^7!CkHssow; literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/get_serial b/fuzzing/corpus/get_serial new file mode 100644 index 0000000000000000000000000000000000000000..551360f925d56bf90af721556095d5141fe0fdd8 GIT binary patch literal 5 Mcmcc4$iTn=00cY$*#H0l literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/get_version b/fuzzing/corpus/get_version new file mode 100644 index 0000000000000000000000000000000000000000..2ae437cdc24b3346cfce39b555ea17958429dc1c GIT binary patch literal 5 Kcmcc400aO8H~`oH literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_1 b/fuzzing/corpus/sign_1 new file mode 100644 index 0000000000000000000000000000000000000000..12147263ef7a50c935adf382771e00d041c7834d GIT binary patch literal 38 ucmcbvz{sEwqj+bX(*X%3hL`qJz1STDf3kFysT}*)c==?ARH9eMUKs!owGTG{ literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_2 b/fuzzing/corpus/sign_2 new file mode 100644 index 0000000000000000000000000000000000000000..a56c8bfbb5336fa7ffc6757b2cf271e2b033c4d5 GIT binary patch literal 15 Ocmcbvz{J4C00#gL@Bst> literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_3 b/fuzzing/corpus/sign_3 new file mode 100644 index 0000000000000000000000000000000000000000..f45457a1f646e65e64e783928873d1e4046c3fa3 GIT binary patch literal 21 dcmcbvz|0`Pz%YaB63>e02M;e!-PQX1EC5b=38(-7 literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_4 b/fuzzing/corpus/sign_4 new file mode 100644 index 0000000000000000000000000000000000000000..5d3bc2132f7cea937af5fe7542058da89cbe36cb GIT binary patch literal 21 Ocmcbvz``KFfCc~+lmQF? literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_5 b/fuzzing/corpus/sign_5 new file mode 100644 index 0000000000000000000000000000000000000000..9ba26cf3f2bde88c8073b4accfe43e159b67f85c GIT binary patch literal 36 Zcmcbvz{(&m!>GUj1&lBTjAm3|001t-0eb)d literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_6 b/fuzzing/corpus/sign_6 new file mode 100644 index 0000000000000000000000000000000000000000..4e4d62528914696a7cf5a69952293a454d7343d2 GIT binary patch literal 26 WcmcbvAiyBX+Q7h|1H`X^7!CkKq64`A literal 0 HcmV?d00001 diff --git a/fuzzing/coverage.sh b/fuzzing/coverage.sh new file mode 100755 index 00000000..eb7c4baf --- /dev/null +++ b/fuzzing/coverage.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Generate code coverage reports from fuzzing results + +set -e + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +BUILDDIR="$SCRIPTDIR/cmake-build-fuzz-coverage" +CORPUSDIR="$SCRIPTDIR/corpus" +HTMLCOVDIR="$SCRIPTDIR/html-coverage" + +# Compile the fuzzer with code coverage support +rm -rf "$BUILDDIR" "$HTMLCOVDIR" +cmake -DCMAKE_C_COMPILER=clang -DCODE_COVERAGE=1 -B"$BUILDDIR" -H. +cmake --build "$BUILDDIR" --target fuzz_message + +# Run the fuzzer on the corpus files +export LLVM_PROFILE_FILE="$BUILDDIR/fuzz_message.profraw" +"$BUILDDIR/fuzz_message" "$CORPUSDIR"/* +llvm-profdata merge --sparse "$LLVM_PROFILE_FILE" -o "$BUILDDIR/fuzz_message.profdata" +llvm-cov show "$BUILDDIR/fuzz_message" -instr-profile="$BUILDDIR/fuzz_message.profdata" -show-line-counts-or-regions -output-dir="$HTMLCOVDIR" -format=html +llvm-cov report "$BUILDDIR/fuzz_message" -instr-profile="$BUILDDIR/fuzz_message.profdata" diff --git a/fuzzing/crash-2fc1a6f934a4be9509169e45e99f3529697f8009 b/fuzzing/crash-2fc1a6f934a4be9509169e45e99f3529697f8009 new file mode 100644 index 0000000000000000000000000000000000000000..5d3bc2132f7cea937af5fe7542058da89cbe36cb GIT binary patch literal 21 Ocmcbvz``KFfCc~+lmQF? literal 0 HcmV?d00001 diff --git a/fuzzing/crash-697c3622b79ac32872c0746c7622d76a82166f1b b/fuzzing/crash-697c3622b79ac32872c0746c7622d76a82166f1b new file mode 100644 index 0000000000000000000000000000000000000000..9fe9d62827380473b9b244d66585e3c4e759d037 GIT binary patch literal 5 Mcmcca$iTn=00le&82|tP literal 0 HcmV?d00001 diff --git a/fuzzing/fuzz_fio.c b/fuzzing/fuzz_fio.c new file mode 100644 index 00000000..f493384b --- /dev/null +++ b/fuzzing/fuzz_fio.c @@ -0,0 +1,49 @@ +#include "handlers.h" +#include "state.h" + +#include + +static const int INS_NONE = -1; + +typedef struct { + uint8_t cla; + uint8_t ins; + uint8_t p1; + uint8_t p2; + uint8_t lc; +} header_t; + +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + // The size of the data should exceed the length of the header + if (Size >= sizeof(header_t)){ + header_t * header = (header_t *) Data; + + uint8_t* data = (uint8_t *)(Data + sizeof(*header)); + + BEGIN_TRY { + TRY { + handler_fn_t* handlerFn = lookupHandler(header->ins); + + VALIDATE(handlerFn != NULL, ERR_UNKNOWN_INS); + + bool isNewCall = false; + if (currentInstruction == INS_NONE) { + explicit_bzero(&instructionState, SIZEOF(instructionState)); + isNewCall = true; + currentInstruction = header->ins; + } else { + VALIDATE(header->ins == currentInstruction, ERR_STILL_IN_CALL); + } + + handlerFn(header->p1, header->p2, data, header->lc, isNewCall); + } + CATCH_OTHER(e) { + } + FINALLY { + } + } + END_TRY; + } + + return 0; +} diff --git a/fuzzing/os_mocks.c b/fuzzing/os_mocks.c new file mode 100644 index 00000000..5458cca9 --- /dev/null +++ b/fuzzing/os_mocks.c @@ -0,0 +1,191 @@ +#include "cx.h" + +unsigned char G_io_apdu_buffer[260]; + +void os_longjmp(unsigned int exception) { + longjmp(try_context_get()->jmp_buf, exception); +} + +try_context_t *current_context = NULL; +try_context_t *try_context_get(void) { + return current_context; +} + +try_context_t *try_context_set(try_context_t *ctx) { + try_context_t *previous_ctx = current_context; + current_context = ctx; + return previous_ctx; +} + +size_t cx_hash_get_size(const cx_hash_t *ctx) { + return 32; +} + +cx_err_t cx_sha256_init_no_throw(cx_sha256_t *hash) { + return CX_OK; +} + +cx_err_t cx_hash_no_throw(cx_hash_t *hash, uint32_t mode, const uint8_t *in, size_t len, uint8_t *out, size_t out_len) { + return CX_OK; +} + +cx_err_t cx_ecdsa_sign_no_throw(const cx_ecfp_private_key_t *pvkey, + uint32_t mode, + cx_md_t hashID, + const uint8_t * hash, + size_t hash_len, + uint8_t * sig, + size_t * sig_len, + uint32_t * info){ + return CX_OK; +} + +unsigned int os_serial(unsigned char *serial PLENGTH(maxlength), + unsigned int maxlength){ + return 7; +} + +typedef enum bolos_ux_e { + BOLOS_UX_INITIALIZE = 0, + BOLOS_UX_EVENT, + BOLOS_UX_KEYBOARD, + BOLOS_UX_WAKE_UP, + BOLOS_UX_VALIDATE_PIN = 14, + BOLOS_UX_LAST_ID, +} bolos_ux_t; + +typedef struct bolos_ux_params_s { + bolos_ux_t ux_id; + unsigned int len; +} bolos_ux_params_t; + +unsigned int os_ux ( bolos_ux_params_t * params ) { + return 1; +} + +typedef unsigned char bolos_task_status_t; + +bolos_task_status_t os_sched_last_status ( unsigned int task_idx ) { + return 0; +} + +typedef char bolos_bool_t; + +bolos_bool_t os_perso_isonboarded ( void ) { + return 1; +} + +cx_err_t cx_ecfp_init_private_key_no_throw(cx_curve_t curve, + const uint8_t * rawkey, + size_t key_len, + cx_ecfp_private_key_t *pvkey) +{ + return CX_OK; +} + +cx_err_t cx_ecfp_init_public_key_no_throw(cx_curve_t curve, + const uint8_t * rawkey, + size_t key_len, + cx_ecfp_public_key_t *key) +{ + return CX_OK; +} + +cx_err_t cx_ecfp_generate_pair_no_throw(cx_curve_t curve, + cx_ecfp_public_key_t * pubkey, + cx_ecfp_private_key_t *privkey, + bool keepprivate) +{ + return CX_OK; +} + +cx_err_t cx_hmac_sha256_init_no_throw(cx_hmac_sha256_t *hmac, const uint8_t *key, size_t key_len){ + //hmac->hash_ctx.header.info->md_type = 3; + return CX_OK; +} + +cx_err_t cx_hmac_no_throw(cx_hmac_t *hmac, uint32_t mode, const uint8_t *in, size_t len, uint8_t *mac, size_t mac_len){ + return CX_OK; +} + +cx_err_t cx_ripemd160_init_no_throw(cx_ripemd160_t *hash){ + return CX_OK; +} + +cx_err_t cx_ecdh_no_throw(const cx_ecfp_private_key_t *pvkey, + uint32_t mode, + const uint8_t * P, + size_t P_len, + uint8_t * secret, + size_t secret_len) { + return CX_OK; +} + +cx_err_t cx_sha512_init_no_throw(cx_sha512_t *hash) { + return CX_OK; +} + +cx_err_t cx_aes_init_key_no_throw(const uint8_t *rawkey, size_t key_len, cx_aes_key_t *key) { + return CX_OK; +} + +cx_err_t cx_hmac_update(cx_hmac_t *hmac, const uint8_t *in, size_t in_len) { + return CX_OK; +} + +cx_err_t cx_aes_enc_block(const cx_aes_key_t *key, const uint8_t *inblock, uint8_t *outblock) { + return CX_OK; +} + +cx_err_t cx_hmac_final(cx_hmac_t *ctx, uint8_t *out, size_t *out_len) { + return CX_OK; +} + +cx_err_t cx_aes_dec_block(const cx_aes_key_t *key, const uint8_t *inblock, uint8_t *outblock) { + return CX_OK; +} + +void cx_rng_no_throw(uint8_t *buffer, size_t len) { +} + + + +void os_perso_derive_node_bip32 ( cx_curve_t curve, const unsigned int * path, unsigned int pathLength, unsigned char * privateKey, unsigned char * chain ) {} + +void ui_idle(void) {} + +void io_seproxyhal_se_reset(void) {} + +void io_seproxyhal_io_heartbeat(void) {} + +void io_send_buf(uint16_t code, uint8_t* buffer, size_t bufferSize){} + +void io_seproxyhal_init_ux(void) {} + +typedef int bagl_element_t; +void io_seproxyhal_display(const bagl_element_t* element) {} + +void io_seproxyhal_init_button(void) {} + +unsigned int io_seph_is_status_sent ( void ) { + return 1; +} + +typedef enum { + // We are doing IO, display handlers should not fire + IO_EXPECT_IO = 42, // Note: random constants + // We are displaying things, IO handlers should not fire + IO_EXPECT_UI = 47, + // We should not be handling events + IO_EXPECT_NONE = 49, +} io_state_t; + +io_state_t io_state = IO_EXPECT_NONE; + +bool device_is_unlocked() { + return true; +} + +void *pic(void *link_address) { + return link_address; +} diff --git a/fuzzing/run.sh b/fuzzing/run.sh new file mode 100755 index 00000000..87fdc911 --- /dev/null +++ b/fuzzing/run.sh @@ -0,0 +1,10 @@ + +#!/usr/bin/env bash + +set -e + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +BUILDDIR="$SCRIPTDIR/cmake-build-fuzz" +CORPUSDIR="$SCRIPTDIR/corpus" + +"$BUILDDIR"/fuzz_message "$CORPUSDIR" "$@" > /dev/null diff --git a/src/hash.h b/src/hash.h index 3e3c1756..141abb96 100644 --- a/src/hash.h +++ b/src/hash.h @@ -2,6 +2,7 @@ #define H_FIO_APP_HASH #include "common.h" +#include "lcx_sha512.h" // This file provides convenience functions for using firmware hashing api diff --git a/src/signTransaction.c b/src/signTransaction.c index 17abf4a6..b7e7f37c 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -367,7 +367,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, #define CASE_STORAGE_EQUALS(n) \ case VALUE_STORAGE_CHECK_R##n: { \ ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ - ASSERT(ctx->storage.storedValueLen##n <= SIZEOF(ctx->storage.storedValue##n)); \ + ASSERT(ctx->storage.storedValueLen##n <= sizeof(ctx->storage.storedValue##n)); \ VALIDATE(ctx->storage.storedValueLen##n == varSize, ERR_INVALID_DATA); \ VALIDATE(!memcmp(ctx->storage.storedValue##n, varData->value, varSize), ERR_INVALID_DATA); \ break; \ @@ -377,7 +377,7 @@ __noinline_due_to_stack__ void signTx_handleAppendDataAPDU(uint8_t p2, CASE_STORAGE_EQUALS(3); case VALUE_STORAGE_CHECK_R1_DECODE_NAME: { ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); - ASSERT(ctx->storage.storedValueLen1 <= SIZEOF(ctx->storage.storedValue1)); + ASSERT(ctx->storage.storedValueLen1 <= sizeof(ctx->storage.storedValue1)); char buffer[14]; uint8array_name_to_string(ctx->storage.storedValue1, ctx->storage.storedValueLen1, @@ -598,7 +598,7 @@ __noinline_due_to_stack__ void signTx_handleStoreValueAPDU( #define CASE(n) \ case n: { \ ASSERT(ctx->storage.initialized_magic == TX_STORAGE_INITIALIZED_MAGIC); \ - VALIDATE(varSize <= SIZEOF(ctx->storage.storedValue##n), ERR_INVALID_DATA); \ + VALIDATE(varSize <= sizeof(ctx->storage.storedValue##n), ERR_INVALID_DATA); \ ctx->storage.storedValueLen##n = varSize; \ memcpy(ctx->storage.storedValue##n, varData->value, varSize); \ break; \ diff --git a/src/signTransactionParse.c b/src/signTransactionParse.c index 9ce46d40..29bb4177 100644 --- a/src/signTransactionParse.c +++ b/src/signTransactionParse.c @@ -152,9 +152,9 @@ static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, snprintf(display, MAX_DISPLAY_VALUE_LENGTH, "%.*s:%.*s:%.*s", - chainCodeLen, + (int) chainCodeLen, value + tokenCodeLen + 2, - tokenCodeLen, + (int) tokenCodeLen, value + 1, (int) publicAddrLen, value + publicAddrStart); @@ -163,8 +163,8 @@ static void displayChainCodeTokenCodePublicAddr(const uint8_t *value, //-------------------- NUMBER PARSING FUNCTIONS ---------------------- static void parseUInt64(const uint8_t *value, uint8_t valueLen, uint64_t *number) { - VALIDATE(valueLen == SIZEOF(*number), ERR_INVALID_DATA); - memcpy(number, value, SIZEOF(*number)); + VALIDATE(valueLen == sizeof(*number), ERR_INVALID_DATA); + memcpy(number, value, sizeof(*number)); } static void parseVarUInt32(const uint8_t *value, uint8_t valueLen, uint64_t *number) { From 46b2edf75009697267a6403b8f3846510608d3eb Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 23 Jan 2023 13:06:22 +0100 Subject: [PATCH 70/83] Fuzzer modified with very basic new corpus --- fuzzing/corpus/get_pubkey | Bin 26 -> 26 bytes fuzzing/corpus/sign_1 | Bin 38 -> 60 bytes fuzzing/corpus/sign_10 | Bin 0 -> 7 bytes fuzzing/corpus/sign_2 | Bin 15 -> 12 bytes fuzzing/corpus/sign_3 | Bin 21 -> 28 bytes fuzzing/corpus/sign_4 | Bin 21 -> 37 bytes fuzzing/corpus/sign_5 | Bin 36 -> 27 bytes fuzzing/corpus/sign_6 | Bin 26 -> 7 bytes fuzzing/corpus/sign_7 | Bin 0 -> 15 bytes fuzzing/corpus/sign_8 | Bin 0 -> 72 bytes fuzzing/corpus/sign_9 | Bin 0 -> 7 bytes fuzzing/fuzz_fio.c | 27 ++++++++++++++------------- 12 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 fuzzing/corpus/sign_10 create mode 100644 fuzzing/corpus/sign_7 create mode 100644 fuzzing/corpus/sign_8 create mode 100644 fuzzing/corpus/sign_9 diff --git a/fuzzing/corpus/get_pubkey b/fuzzing/corpus/get_pubkey index c6526428bb6ac8107a081d9ea06567c188c78c0b..3c4fa7164298be80481e8e95a3bf81eba15bf791 100644 GIT binary patch literal 26 acmcaEz{nuVs>8t0@EV92AQ(t7FaQ8QZv&bD literal 26 WcmcaEz{nuV+Q7h|1H`X^7!CkHssow; diff --git a/fuzzing/corpus/sign_1 b/fuzzing/corpus/sign_1 index 12147263ef7a50c935adf382771e00d041c7834d..7eed16a43b7c58088db1fd64f4bc594428525974 100644 GIT binary patch literal 60 zcmcbvz{p_EV7iHu(SqxX-`6>j63(;aXF1+5%Vc7fT)|qhgJtQ@n7wtZIt&aAuYs5W Jf`JqR0{}?a5WxTd literal 38 ucmcbvz{sEwqj+bX(*X%3hL`qJz1STDf3kFysT}*)c==?ARH9eMUKs!owGTG{ diff --git a/fuzzing/corpus/sign_10 b/fuzzing/corpus/sign_10 new file mode 100644 index 0000000000000000000000000000000000000000..4e13951d27aae0361a918e29c2c049c6bc385181 GIT binary patch literal 7 OcmcbvAi%)HzyJUS{s9UA literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_2 b/fuzzing/corpus/sign_2 index a56c8bfbb5336fa7ffc6757b2cf271e2b033c4d5..fea7a2d7ba9c1e4a93dcbf8c76df8fb3aeaadf2e 100644 GIT binary patch literal 12 Qcmcbvz{J4L$^Zh401NN|2LJ#7 literal 15 Ocmcbvz{J4C00#gL@Bst> diff --git a/fuzzing/corpus/sign_3 b/fuzzing/corpus/sign_3 index f45457a1f646e65e64e783928873d1e4046c3fa3..646e188b47b101e6a3fa147e6df41cb6e34b5956 100644 GIT binary patch literal 28 jcmcbvz|0^n%E0EBT#}ie#~YMdSejZ~qTp7Vmr@J>Y?uh4 literal 21 dcmcbvz|0`Pz%YaB63>e02M;e!-PQX1EC5b=38(-7 diff --git a/fuzzing/corpus/sign_4 b/fuzzing/corpus/sign_4 index 5d3bc2132f7cea937af5fe7542058da89cbe36cb..b6ebacb7d774b428696836e406725eb54f4a0995 100644 GIT binary patch literal 37 hcmcbvz`~#)!o|qM#Q*^?nu$TyP%BYMFfG)@7yvo11Cam# literal 21 Ocmcbvz``KFfCc~+lmQF? diff --git a/fuzzing/corpus/sign_5 b/fuzzing/corpus/sign_5 index 9ba26cf3f2bde88c8073b4accfe43e159b67f85c..73f8b0a4b02a2b5bf6e96be1d1c03971301b2bd1 100644 GIT binary patch literal 27 Zcmcbvz{(&d#3atl00sYn0K|O22mnLb1|9$a literal 36 Zcmcbvz{(&m!>GUj1&lBTjAm3|001t-0eb)d diff --git a/fuzzing/corpus/sign_6 b/fuzzing/corpus/sign_6 index 4e4d62528914696a7cf5a69952293a454d7343d2..b8dbcc142008af676a513e7ba3f608eadeb7f4ce 100644 GIT binary patch literal 7 Ocmcbvz{bGDzyJUS%mDxZ literal 26 WcmcbvAiyBX+Q7h|1H`X^7!CkKq64`A diff --git a/fuzzing/corpus/sign_7 b/fuzzing/corpus/sign_7 new file mode 100644 index 0000000000000000000000000000000000000000..76c839ffd6afd776a012dd0e8cfa50f6b532c7ce GIT binary patch literal 15 Wcmcbvz|P3Uz@gCM#vA|ivk?FsNd$5L literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_8 b/fuzzing/corpus/sign_8 new file mode 100644 index 0000000000000000000000000000000000000000..9bb5fdb98f45b96f4301fe69685e46510aec110f GIT binary patch literal 72 zcmV-O0Js0wAP4|M06_#HRaA<=!fR_vmsJXp=+fYG@9agKX{jnDzad(Vqkg#_Lr&d_ e-YMW3`-q(p`?s6)(w#|7_&`R>LxySRlcD^T!6Wei literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/sign_9 b/fuzzing/corpus/sign_9 new file mode 100644 index 0000000000000000000000000000000000000000..e0ef81a4ef6238a7835ff2c27d5ebaf0136dd9dd GIT binary patch literal 7 Ocmcbvz{$YGzyJUS+W`Xr literal 0 HcmV?d00001 diff --git a/fuzzing/fuzz_fio.c b/fuzzing/fuzz_fio.c index f493384b..4f9085f0 100644 --- a/fuzzing/fuzz_fio.c +++ b/fuzzing/fuzz_fio.c @@ -3,6 +3,8 @@ #include +#include + static const int INS_NONE = -1; typedef struct { @@ -10,39 +12,38 @@ typedef struct { uint8_t ins; uint8_t p1; uint8_t p2; - uint8_t lc; + uint8_t lc; //will be ignored } header_t; int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { // The size of the data should exceed the length of the header if (Size >= sizeof(header_t)){ header_t * header = (header_t *) Data; - uint8_t* data = (uint8_t *)(Data + sizeof(*header)); - + size_t data_size = Size - sizeof(*header); + + printf("%hhx, %hhx, %hhx, %hhx\n", header->cla, header->ins, header->p1, header->p2); + BEGIN_TRY { TRY { handler_fn_t* handlerFn = lookupHandler(header->ins); VALIDATE(handlerFn != NULL, ERR_UNKNOWN_INS); + printf("Hander found\n"); - bool isNewCall = false; - if (currentInstruction == INS_NONE) { - explicit_bzero(&instructionState, SIZEOF(instructionState)); - isNewCall = true; - currentInstruction = header->ins; - } else { - VALIDATE(header->ins == currentInstruction, ERR_STILL_IN_CALL); - } + explicit_bzero(&instructionState, SIZEOF(instructionState)); + currentInstruction = header->ins; - handlerFn(header->p1, header->p2, data, header->lc, isNewCall); + printf("Running handler\n"); + handlerFn(header->p1, header->p2, data, data_size, true); + printf("Handler ran\n"); } CATCH_OTHER(e) { } FINALLY { } - } END_TRY; + } } return 0; From cc8ef81e02c0d3956f93a174e2ca4fdc001ffe34 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Mon, 23 Jan 2023 22:45:01 +0100 Subject: [PATCH 71/83] Improve fuzzing --- doc/ins_decrypt.md | 2 +- fuzzing/CMakeLists.txt | 2 +- fuzzing/corpus/decode_1 | Bin 0 -> 117 bytes fuzzing/corpus/decode_2 | Bin 0 -> 91 bytes fuzzing/corpus/decode_3 | Bin 0 -> 91 bytes fuzzing/fuzz_fio.c | 1 - fuzzing/os_mocks.c | 13 ++++++++++++- 7 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 fuzzing/corpus/decode_1 create mode 100644 fuzzing/corpus/decode_2 create mode 100644 fuzzing/corpus/decode_3 diff --git a/doc/ins_decrypt.md b/doc/ins_decrypt.md index ac24a741..3e440099 100644 --- a/doc/ins_decrypt.md +++ b/doc/ins_decrypt.md @@ -14,7 +14,7 @@ Decrypt shared secret. Decryption of shared secret spanns several APDU commands. | P2 | unused | | Lc | data | -Data contains part of the encrypted data (after base64 decoding). This command nad be sent multiple times, but reasonably, it should be used at most twice at this moment (the longest addmissible message has length 324 bytes after base 64 decoding). +Data contains part of the encrypted data (after base64 decoding). This command can be sent multiple times, but reasonably, it should be used at most twice at this moment (the longest addmissible message has length 324 bytes after base 64 decoding). **Command 2** diff --git a/fuzzing/CMakeLists.txt b/fuzzing/CMakeLists.txt index 3860754d..15aa9bd4 100644 --- a/fuzzing/CMakeLists.txt +++ b/fuzzing/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD 11) set(BOLOS_SDK $ENV{BOLOS_SDK}) add_compile_definitions(IO_HID_EP_LENGTH=64) -add_compile_definitions(HAVE_ECC HAVE_HASH HAVE_HMAC HAVE_SHA256 HAVE_SHA512 HAVE_AES HAVE_ECDH HAVE_RNG HAVE_RIPEMD160 HAVE_ECDSA HAVE_ECC_WEIERSTRASS HAVE_SECP256K1_CURVE ) +add_compile_definitions(HAVE_ECC HAVE_HASH HAVE_HMAC HAVE_SHA256 HAVE_SHA512 HAVE_AES HAVE_ECDH HAVE_RNG HAVE_RIPEMD160 HAVE_ECDSA HAVE_ECC_WEIERSTRASS HAVE_SECP256K1_CURVE DEVEL NO_INTEGRITY_CHECK HEADLESS) include_directories(. ../src "${BOLOS_SDK}/include" diff --git a/fuzzing/corpus/decode_1 b/fuzzing/corpus/decode_1 new file mode 100644 index 0000000000000000000000000000000000000000..b168489faf2f02dc18db5c76fd000568dedcfb40 GIT binary patch literal 117 zcmV-*0E++DFaZE?oYSL8Tw%7Dfu8A)$Jt%(v#&u5SN-fp>icx)w>vqaH``zujr};qY qcgI}8-`i(@xir_)_lJYqY3H`g=aU!yVbx(^Xm}083=j;Y7#IMcb|z{7 literal 0 HcmV?d00001 diff --git a/fuzzing/corpus/decode_3 b/fuzzing/corpus/decode_3 new file mode 100644 index 0000000000000000000000000000000000000000..029b4e1c4996344db82e93a9459614382ac91685 GIT binary patch literal 91 zcmca^z{C{Bq8J*|b>L8Tw%7Dfu8A)$Jt%(v#&u5SN-fp>icx)w>vqaH``zujr};qY qcgI}8-`i(@xir_)_lJYqY3H`g=aU!yVbx(^Xm}083=j;Y7#IMc&L(RB literal 0 HcmV?d00001 diff --git a/fuzzing/fuzz_fio.c b/fuzzing/fuzz_fio.c index 4f9085f0..1ebf75bc 100644 --- a/fuzzing/fuzz_fio.c +++ b/fuzzing/fuzz_fio.c @@ -36,7 +36,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { printf("Running handler\n"); handlerFn(header->p1, header->p2, data, data_size, true); - printf("Handler ran\n"); } CATCH_OTHER(e) { } diff --git a/fuzzing/os_mocks.c b/fuzzing/os_mocks.c index 5458cca9..3bb01173 100644 --- a/fuzzing/os_mocks.c +++ b/fuzzing/os_mocks.c @@ -1,6 +1,7 @@ #include "cx.h" unsigned char G_io_apdu_buffer[260]; +unsigned int app_stack_canary = 0xDEAD0031; void os_longjmp(unsigned int exception) { longjmp(try_context_get()->jmp_buf, exception); @@ -148,7 +149,12 @@ cx_err_t cx_aes_dec_block(const cx_aes_key_t *key, const uint8_t *inblock, uint8 void cx_rng_no_throw(uint8_t *buffer, size_t len) { } - +void handleRunTests(uint8_t p1, + uint8_t p2, + uint8_t *wireBuffer, + size_t wireSize, + bool isNewCall) { +} void os_perso_derive_node_bip32 ( cx_curve_t curve, const unsigned int * path, unsigned int pathLength, unsigned char * privateKey, unsigned char * chain ) {} @@ -189,3 +195,8 @@ bool device_is_unlocked() { void *pic(void *link_address) { return link_address; } + +typedef void timeout_callback_fn_t(bool ux_allowed); +void nanos_set_timer(int ms, timeout_callback_fn_t* cb) { +} + From 5b05c9ba918a273bb38d7ee5af4740deba09cc49 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 27 Jan 2023 15:37:32 +0100 Subject: [PATCH 72/83] Security review documentation and minor fixes Various code improvements fixing issues found during internal security reveiw, --- doc/design_doc.md | 2 +- doc/{ins_decrypt.md => ins_decode.md} | 2 +- doc/ins_sign_tx.md | 39 +++-- doc/security/security_doc.md | 220 ++++++++++++++++++++++++++ doc/security/security_sign.md | 183 +++++++++++++++++++++ src/decodeDH.c | 200 +++++++++++------------ src/decodeDH.h | 22 +++ src/diffieHellman.c | 55 ++++--- src/diffieHellman.h | 4 +- src/eos_utils.c | 2 +- src/main.c | 3 + src/signTransaction.c | 97 +++++++----- src/signTransaction.h | 1 + src/signTransactionCountedSection.c | 2 +- 14 files changed, 640 insertions(+), 192 deletions(-) rename doc/{ins_decrypt.md => ins_decode.md} (99%) create mode 100644 doc/security/security_doc.md create mode 100644 doc/security/security_sign.md diff --git a/doc/design_doc.md b/doc/design_doc.md index 38367ebc..5e57f158 100644 --- a/doc/design_doc.md +++ b/doc/design_doc.md @@ -80,4 +80,4 @@ Instructions related to debug mode of the app. These instructions *must not* be In order to ensure safe forward compatibility, sender *must* set any *unused* field to zero. When upgrading protocol, any unused field that is no longer unused *must* define only values != 0. This will ensure that clients using old protocol will receive errors instead of an unexpected behavior. -â“(VL): Do we want to force clients to check app version (mis)match, e.g. by having an explicit handshake? A custom (non `ledgerjs`-based) client app might omit version checks which might lead to potential problems + diff --git a/doc/ins_decrypt.md b/doc/ins_decode.md similarity index 99% rename from doc/ins_decrypt.md rename to doc/ins_decode.md index 3e440099..2e1e2e30 100644 --- a/doc/ins_decrypt.md +++ b/doc/ins_decode.md @@ -1,4 +1,4 @@ -# Get Public Key +# decode shared secret **Description** diff --git a/doc/ins_sign_tx.md b/doc/ins_sign_tx.md index f7beebca..bd6161b7 100644 --- a/doc/ins_sign_tx.md +++ b/doc/ins_sign_tx.md @@ -4,7 +4,7 @@ Construct and sign a transaction (returns just the signature). -For FIO app main use cases it is instrumental that the app is as small as possible, while we need to have >20 different workflows for various actions. To accomplish this we designed several commands to serialize transaction while displaying (or not) parts of it. Each command is divided into constant part and variable part. Constant parts of the commands are used to calculate integrity hash by contatenating integrity hash of the previous command with constant parts of current command to produce new integrity hash. This process creates a Merkle tree and at every critical step (signing transaction, finishing DH encryption) we compare the integrity hash to one stored in the app. This guarantees that to get ether a signature or encrypted message, the constant parts of theinstructions and the ordering of the instructions have to match exactly. +For FIO app main use cases it is instrumental that the app is as small as possible, while we need to have >20 different workflows for various actions. To accomplish this we designed several commands to serialize transaction while displaying (or not) parts of it. Each command is divided into constant part and variable part. Constant parts of the commands are used to calculate integrity hash by concatenating integrity hash of the previous command with constant parts of current command to produce new integrity hash. This process creates a Merkle tree and at every critical step (signing transaction, finishing DH encryption) we compare the integrity hash to one stored in the app. This guarantees that to get ether a signature or encrypted message, the constant parts of theinstructions and the ordering of the instructions have to match exactly. For the list of allowed command sequences, see [List of allowed command sequences](allowed_command_sequences.md) @@ -55,6 +55,20 @@ All other commands either do return nothing, or if we are within DH-encoded sect ## List of commands +| Command | P1 | Brief description | +| ----------------------- |------- |-------------------------------------------------------| +| INIT | `0x01` | Initiates transaction signing | +| APPEND_CONST_DATA | `0x02` | Appends constant data do the transaction | +| SHOW_MESSAGE | `0x03` | Show message on ledger screen | +| APPEND_DATA | `0x04` | Append variable data to the transaction | +| START_COUNTED_SECTION | `0x05` | Initiates transaction section of given length | +| END_COUNTED_SECTION | `0x06` | Ends transaction section of given length | +| STORE_VALUE | `0x07` | Store value into a register | +| DH_START | `0x08` | Starts transaction section encrypted by shared secret | +| DH_END | `0x09` | Ends transaction section encrypted by shared secret | +| FINISH | `0x10` | Finishes and signs the transaction | + + ### INIT | Field | Value | @@ -163,8 +177,8 @@ Value formats: - VALUE_FORMAT_BUFFER_SHOW_AS_HEX = 0x01 - VALUE_FORMAT_ASCII_STRING = 0x02, -- VALUE_FORMAT_NAME = 0x03: Special FIO name format. To be converted to string before displau -- VALUE_FORMAT_ASCII_STRING_WITH_LENGTH = 0x04: String prefixed with VarUInt lengrh +- VALUE_FORMAT_NAME = 0x03: Special FIO name format. To be converted to string before display +- VALUE_FORMAT_ASCII_STRING_WITH_LENGTH = 0x04: String prefixed with VarUInt length - VALUE_FORMAT_FIO_AMOUNT = 0x10: FIO currency amount stored as UINT64 - VALUE_FORMAT_UINT64 = 0x14, - VALUE_FORMAT_VARUINT32 = 0x17, @@ -184,7 +198,7 @@ Value validation: - VALUE_VALIDATION_NONE = 0x01 - VALUE_VALIDATION_INBUFFER_LENGTH = 0x02: Validates that the length of value is between ValueValidationArg 1 and ValueValidationArg 2 -- VALUE_VALIDATION_NUMBER = 0x03: Value has to be a number (VALUE_FIO_AMOUNT, VALUE_UINT64, VALUE_FORMAT_VARUINT32). Validates that the numeric value is between ValueValidationArg 1 and ValueValidationArg 2 +- VALUE_VALIDATION_NUMBER = 0x03: Value has to be a number (VALUE_FIO_AMOUNT, VALUE_UINT64, VALUE_FORMAT_VARUINT32). Validates that the numeric value is between ValueValidationArg1 and ValueValidationArg2 Storage bites: @@ -213,7 +227,7 @@ Storage is used to guarantee that certain elements in the transaction match. Sto ### START_COUNTED_SECTION -Counted sections append a VARINT to the transaction and then validate that the total length of buffers appended to the transaction between START_COUNTED_SECTION and END_COUNTED_SECTION matches the value. Matching paits of commands have to be both either outside or within DH encrypted segment. Note that DH encoding modifies thelength of what is appedded to the transaction so counted section takes this into account. +Counted sections append a VARINT to the transaction and then validate that the total length of buffers appended to the transaction between START_COUNTED_SECTION and END_COUNTED_SECTION matches the value. Matching pairs of commands have to be both either outside or within DH encrypted segment. Note that DH encoding modifies the length of what is appended to the transaction so counted section takes this into account. | Field | Value | | ------|--------- | @@ -226,8 +240,8 @@ Counted sections append a VARINT to the transaction and then validate that the t | --------------------------------- | -------- | ------------------------------------------ | | Value Format | 1 | NAME, STRING, UINT64 | | ValueValidation | 1 | NONE, LENGTH, EQUALS_STORED | -| ValueValidationArg 1 | 8 | | -| ValueValidationArg 2 | 8 | | +| ValueValidationArg1 | 8 | | +| ValueValidationArg2 | 8 | | Value formats: - VALUE_FORMAT_FIO_AMOUNT = 0x10: FIO currency amount stored as UINT64 @@ -248,7 +262,7 @@ See APPEND_DATA instruction - Checks if the limit on nested counted section was not surpassed (MAX_NESTED_COUNTED_SECTIONS = 5) - Parse and validate the value - Append value to tx (includes counted section validation update and possible DH encoding) -- Initiate new counted section validation (Value itseld does not count into the new counted section) +- Initiate new counted section validation (Value itself does not count into the new counted section) - Continue integrity validation @@ -279,7 +293,7 @@ See APPEND_DATA instruction ### STORE_VALUE -Stores Value into one of the registers. APPEND_DATA may compare its value with the register. This mechanism allows to guarantee match of certain transaction ellements. +Stores Value into one of the registers. APPEND_DATA may compare its value with the register. This mechanism allows to guarantee match of certain transaction elements. | Field | Value | | ------|------------------------------ | @@ -340,9 +354,9 @@ Starts Diffie-Hellman encrypted block. Note that all commands within DH encrypted section that append value to the transaction have to: - Initiate and wipe out AES key -- Instead of appending the data to the transaction, append them to DH encryption, and apend the finished blocks to the transaction +- Instead of appending the data to the transaction, append them to DH encryption, and append the finished blocks to the transaction - Return finished blocks -Also note that partial DH encrypted cypher text is of no cryptographical use before final HMAC is sent (which is only done at the end ). +Also note that partial DH encrypted cypher text is of no cryptographic use before final HMAC is sent (which is only done at the end ). ### DH_END @@ -399,7 +413,7 @@ Ends Diffie-Hellman encrypted block. **Ledger actions** -- Validate htat DH is not active and there is no running counted section +- Validate that DH is not active and there is no running counted section - Continue integrity validation - Validate the integrity hash against the list of known hashes - Request confirmation to sign the transaction @@ -411,3 +425,4 @@ Ends Diffie-Hellman encrypted block. | --------- | ------ | ------------------ | | Signature | 65 | Witness signature | | Hash | 32 | Serialized Tx hash | + diff --git a/doc/security/security_doc.md b/doc/security/security_doc.md new file mode 100644 index 00000000..1f5c97e7 --- /dev/null +++ b/doc/security/security_doc.md @@ -0,0 +1,220 @@ +# FIO Ledger App security documentation + +For purpose of this documentation we divide the app into following parts: +- Main app +- Common components +- Simple calls (getSerial, getVersion, runTests) +- Get public key call +- DecodeDH call +- Sign transaction call + +## Main app + +- `handlers.c/h` +Lookup handler function. +Tests: Speculos tests for respective calls +Change: Add decode_handleAPDU handler + +- `menu*.c/h` +Menu. +Testing: Manual on device test +No change + +- `state.c/h` +App state. +Security concerns: +- It is important to wipe out the state when new APDU sequence is initiated. (handled by main.c) +Testing: Speculos tests for respective calls +Change: Add state for DH decoding + +- `main.c` +Main app +Security concerns: +- Wipe out app state when new APDU sequence is initiated +- Terminate APDU sequence in case of an error (so that the state is wiped out). +Testing: Speculos tests for respective calls +Change: Minor cleanup + + +## Common components + +The files in this section offer services to the rest of the app. + +- `assert.c/h` +Introduces assert function and macros. +Testing: Speculos tests for respective calls +No modification. + +- `bip44.c/h` +Types and function working with BIP44 derivation paths +Testing: Unit tests present +Change: LE to BE transition + +- `common.h` +Header to be included in many source files +No modification. + +- `diffieHellman.c/h` +Diffie-Hellman key derivation, encoding, and decoding function and related types. +Encoding works as a stream with two buffers. One buffer is for DH encoding itself, second buffer is for base64 encoding. Decoding occurs in one go. +Security concerns: +- Wipe out intermediate secrets even in the case of failure +- Callers must wipe out retrieved secrets even in the case of failure +Testing: This files have unit tests covering all aspects of their functionality +These files are new. + +- `eos_utils.c/h` +Helpers for FIO signature calculation / conversion. +Security concerns: +- Functions use cryptographicaly sensitive data, but do not create any new secrets/coppies of secrets. +- Caller is responsible for wiping out the secrets provided to these functions. +Testing: Speculos tests for signTx calls +No modification. + +- `errors.h` +List of error codes +Change: New error codes for integrity check and HMAC validation failure. + +- `fio.c/h` +FIO chain helper functions. +Testing: Speculos tests for signTx calls +Minor cleanup. + +- `glyphs.c/h` +Generated files containing icons + +- `hash.h` +Hash calculation helper functions. +Testing: Speculos tests for signTx calls (including DH encryption) +Change: Added SHA-512. + +- `hexUtils.c/h` +Hex encoding and decoding. +Testing: Covered by unit tests. +Change: Formatting change. + +- `io.c/h` +IO helper functions +Testing: Speculos tests for various calls +No change + +- `keyDerivation.c/h` +Key derivation functions +Security concerns: +- Wipe out intermediate secrets even in the case of failure +- Callers must wipe out retrieved secrets even in the case of failure +Testing: This files have unit tests +Minor cleanup. + +- `securityPolicy.c/h` +Defines security policies for all relevant aspects of the app +Change: Policies modified doe to app changes with the focus on cryptographicaly sensitive events. + +- `testUtils.h` +Test utils. +No change. + +- `textUtils.c/h` +Text utils +Testing: Unit tests present +Change: Formatting change. + +- `uiElements.h` +Helpers to declare UI elements +No change. + +- `uiHelpers*.c/h` +Helpers for UI steps declaration +Change: wipes out the value to be returned in case of reject. + +- `uiScreens.c/h` +Helpers for displaying UI screens. +Testing: Speculos tests for various calls +Minor cleanup. + +- `utils.h` +Defines various macros used in the code. +Testing: Speculos tests for various calls +Change: New MARK_UNUSED_NO_DEVEL macro, formatting. + + +## Simple calls (getSerial, getVersion, runTests) + +- `getSerial.c/h` +Get serial call +Testing: Speculos tests for getSerial call +No change + +- `getVersion.c/h` +Get version call +Testing: Speculos tests for getVersion call +No change + +- `runTests.c/h` +Run tests call. +Testing: For DEVEL mode only, unit tests are ran in Speculos. +Changes: Add new unit tests: run_diffieHellman_test(), run_integrityCheck_test(), run_countedSection_test(), remove endian unit tests (functions were removed) + + +## Get public key call + +- `getPublicKey.c/h` +Get public key call. To store data `instructionState.getKeyContext` is used (see `state.h`). +Testing: Speculos tests for getPublicKey call +New debugging printouts. + + +## DecodeDH call + +- `decodeDH.c/h` +Decode DH call. To store data `instructionState.decodeContext` (`*ctx`) is used (see `state.h`). +The call is served using multi APDU sequence. +- APDUs with `P1=0x01` are used to receive data and store it into `ctx->buffer`. Further APDUs extend the buffer. +- APDU with `P1=0x02` asks for decodes the message and shows its content (interpretation depending on `P2`) and asks for confirmation. +- APDUs with `P1=0x03` the device to send next chunk of decoded data. +Security concerns: +- Wipe out secrets. For decoding, all secrets are handled solely by`diffieHellman.c/h`. +- Wipe out the decoded buffer in case user rejects sending the decoded message or in case of an error. +Testing: Speculos tests for decodeDH call +New file + + +## Sign transaction call + +- `signTransaction*.c/h` +See [Sign Transaction](security_sign.md) + + +## C source files index + +References to where source files are covered: +- `assert.c/h` - Common components +- `bip44.c/h` - Common components +- `common.h` - Common components +- `decodeDH.c/h`- Decode call +- `diffieHellman.c/h`- Common components +- `eos_utils.c/h` - Common components +- `errors.h` - Common components +- `fio.c/h` - Common components +- `getPublicKey.c/h` - Get public key call +- `getSerial.c/h` - Simple calls +- `getVersion.c/h` - Simple calls +- `glyphs.c/h` - Common components +- `handlers.c/h` - Main app +- `hash.h` - Common components +- `hexUtils.c/h` - Common components +- `io.c/h` - Common components +- `keyDerivation.c/h` - Common components +- `main.c` - Main app +- `menu*.c/h` - Main app +- `runTests.c/h` - simple calls +- `securityPolicy.c/h` - Common components +- `signTransaction*.c/h` - Sign transaction call +- `state.c/h` - Main app +- `testUtils.h` - Common components +- `textUtils.c/h` - Common components +- `uiElements.h` - Common components +- `uiHelpers*.c/h` - Common components +- `uiScreens.c/h` - Common components +- `utils.h` - Common components + diff --git a/doc/security/security_sign.md b/doc/security/security_sign.md new file mode 100644 index 00000000..838c3d6f --- /dev/null +++ b/doc/security/security_sign.md @@ -0,0 +1,183 @@ +# FIO Ledger App Sign transaction call security documentation + +For purpose of this documentation we divide the call source into following parts: +- App integrity component +- Parsing component +- Counted section component +- MAIN HANDLER +- INIT and FINISH subcalls +- APPEND_CONST_DATA subcall +- SHOW_MESSAGE subcall +- STORE_VALUE subcall +- APPEND_DATA subcall +- Counted section subcalls +- DH subcalls + +Sign transaction is a multiAPDU call. The call sequence starts with an INIT call and ends with FINISH call. Between these calls, there may be an arbitrary sequence of calls, however, paired commands have to match(`START COUNTED SECTION`-`END COUNTED SECTION`, `START DH ENCODING`- `END DH ENCODING`). That is if we replace counted section commands with `(` and `)`, DH commands with `[` and `]`, and remove other commands, we need to obtain a correct parentheses-bracket sequence. + +Each command has constant part and variable part. There is a list of allowed command sequences (`../allowed_command_sequences.md`). Constant part of the command must be constant within the command sequence (this includes P1, P2), variable parts may vary, thus only constant parts of the commands are documented. + +The app uses the mechanism of integrity hashes (see app integrity component) to validate that the command sequence is allowed. Init initializes integirity component and each subsequent call sends its constant data to the integrity component. On cryptographically important occasions, integrity components compares its state with a list of known states to validate that thw whole previous command sequence is correct. The occasions are: +- `END DH ENCODING` subcall - This subcall finishes DH encoding and produces final HMAC. Note that without HMAC, the part of encoded message is of no cryptographic use. Thus it is OK to return parts of encoded H message without integrity validation (and also without confirmation). +- `FINISH` subcall - We produce signature only if a correct sequence of commands was executed. + + +## App integrity component + +The integrity check component is implemented in`signTransactionIntegrity.c/h`. +The integrity check component works as a linear Merkle tree using SHA-256. + +`integrityCheckInit` - Initiates integrity context. sets hash to `0`'s. This corresponds to the leaf of the Merkle tree +`integrityCheckProcessInstruction` - Takes current integrity hash, concatenates it with p1, p2, constant data length, and constant data. Note that this concatenation is injective. Then calculates hash of the result. Thanks to SHA-256 second preimage resistance and the injectivity of the concatenation, it is not feasible to construct the resulting hash in a different way. +`integrityCheckEvaluate` - Verifies, if current hash is among the known list of integrity hashes (known Merkle tree roots). + +Security consideration: +- First APDU in a sequence must initialize integrity check with `integrityCheckInit` (done by MAIN HANDLER). +- Each instruction (including `INIT`) must call `integrityCheckProcessInstruction` (done by MAIN HANDLER). +- `END DH ENCODING` and `FINISH` must call `integrityCheckEvaluate` after calling `integrityCheckProcessInstruction` (done by END DH ENCODING and FINISH). + +Testing: This component is covered by a unit test validating most aspects of its functionality. +The component is new. + + +## Counted section component + +The counted section component is implemented in`signTransactionCountedSection.c/h`. +On many places, transaction contains length of the next element (which may be a sting or a more complex structure). Counted sections are created to guarantee that the length of the element matches the length appended to the transaction. + +Counted section component does not directly handle issues arising from DH encoded sections. Counted sections inside DH encoded section need to count data before DH encoding, and those that include DH encoded section must calculate the encoded data length. We achieve this behavior by "fixing" the length difference using `countedSectionProcess` call when handling END DH ENCODING subcall. + +`countedSectionInit` - Initializes counted section variable +`countedSectionBegin` - Starts new counted section +`countedSectionProcess` - Adds given number of bytes to all currently running counted section +`countedSectionEnd` - Finishes topmost counted section. Validates that its length matches the sum of lengths given in `countedSectionProcess` calls. +`countedSectionFinalize` - Validates that all counted sections are finished + +Security consideration: +- First APDU in sequence must call `integrityCheckInit` (done by MAIN HANDLER). +- All other calls must use `countedSectionBegin`/ `countedSectionProcess` / `countedSectionEnd` to guarantee transaction integrity. +- Allowed APDU sequences must be defined in such a way that there is a bijection from resulting transaction to variable data in respective calls + - This is attained by fixing length of everything that goes into the transaction (either due to the fact that the length is constant or due to being in a counted section). + - See `allowed_command_sequences.md` and `ledferjs-fio/src/interactions/transactionTemplates/` for command sequences description. +- FINISH must call `countedSectionFinalize` (done by FINISH) + +Testing: This component is covered by a unit test validating most aspects of its functionality. +The component is new. + + +## Parsing component + +The counted section component is implemented in `signTransactionParse.c/h`. +This component parses and validates data given in various formats. +Testing: This component is tested as part of integration tests as they the functions present are used to parse various transaction elements. +The component is new. + + +## MAIN HANDLER + +This covers `MISC` and `MAIN HANDLER` sections of `signTransaction.c/h`. + +- `lookup_subhandler` - Finds correct subhandler given the value of `P1`. +- `signTransaction_handleAPDU` + - Initiates everything if the call is new. + - Integrity variable + - Counted section variable + - Storage variable + - Validates and splits input to constant and variable parts + - Updates integrity check +- `processShaAndPosibleDHAndPrepareResponse` - Helper function to update rolling hash of the transaction. This includes possible DH encoding if we are within DH encoded section (this includes calculating the difference of DH encrypted data and plain data, so we can adjust counted sections once we leave DH encoded section). +- `prepareOurPubkeyForDisplay` - Helper function to get our public key in a readable format. +- `signTx_ui_runStep_simple` - Defines simple and reusable UI screen sequence. It uses `ctx->key` and `ctx->value` as the source of data/ + +Testing: This component is tested as part of integration tests. +The component is new. + + +## INIT and FINISH subcalls + +This covers `INIT` and `FINISH` sections of `signTransaction.c/h`. + +Testing: Primary test for this part is `signTransactionCommandsBasic.js` Speculos test. +- `INIT` subcall must + - Parse derivation path and chain. + - Show chain to the user. +- `FINISH` subcall must + - Validate command sequence integrity + - Validate that there are no running counted sections + - Validate that DH encoded section is not running + - Display public key used to sign the transaction + - Ask user for confirmation before sending the response +The component is new. + + +## APPEND_CONST_DATA subcall + +This covers `APPEND_CONST_DATA` section of `signTransaction.c/h`. + +Testing: Primary test for this part is `signTransactionCommandsBasic.js` Speculos test. +The component is new. + + +## SHOW_MESSAGE subcall + +This covers `SHOW_MESSAGE` section of `signTransaction.c/h`. + +Testing: Primary test for this part is `signTransactionCommandsBasic.js` Speculos test. +The component is new. + + +## STORE_VALUE subcall + +The app has three register variables. The purpose of this subcall is to write variable part of the instruction into one of the registers + +Testing: Primary test for this part is `signTransactionCommandsStorage.js` Speculos test. +The component is new. + + +## APPEND_DATA subcall + +Append data to transaction, parse, validate it, and possibly display it. This may include value validation again one of register variables. + +Testing: Primary test for this part is `signTransactionCommandsShowData.js` Speculos test. Various modes of function of this call is tested in Speculos transaction tests. +The component is new. + + +## Counted section subcalls + +This covers `START COUNTED SECTION` and `END COUNTED SECTION` sections of `signTransaction.c/h`. + +Testing: Primary test for this part is `signTransactionCommandsCountedSection.js` Speculos test. Various modes of function of this call is tested in Speculos transaction tests. +The component is new. + + +## DH subcalls + +This covers `START DH ENCODING` and `END DH ENCODING` sections of `signTransaction.c/h`. + +Security consideration: + - `END DH ENCODING` encoding must adjust the length of outstanding counted section for the different length of DH encoded data compared to plain data. + - `END DH ENCODING` must ask for confirmation before returning the last blocks (which include HMAC). + - `END DH ENCODING` must wipe out encoded buffer in case user rejects encoding. +Testing: Primary test for this part is `signTransactionCommandsDH.js` and `signTransactionCommandsDHAndCountedSections.js` +The component is new. + + +## C source files index + +- `signTransaction.c/h` - Source file divided into sections. + - `MISC`- Main handler + - `INIT` - INIT and FINISH subcalls + - `APPEND_CONST_DATA` - APPEND_CONST_DATA subcall + - `APPEND_DATA` - APPEND_DATA subcall + - `SHOW_MESSAGE` - SHOW_MESSAGE subcall + - `START COUNTED SECTION` - Counted section subcalls + - `END COUNTED SECTION` - Counted section subcalls + - `STORE_VALUE` - STORE_VALUE subcall + - `START DH ENCODING` - DH subcalls + - `END DH ENCODING` - DH subcalls + - `FINISH` - INIT and FINISH subcalls + - `MAIN HANDLER` - MAIN HANDLER +- `signTransactionCountedSections.c/h` - Counted section component +- `signTransactionIntegrity.c/h` - App integrity component +- `signTransactionParse.c/h` - Parsing component + diff --git a/src/decodeDH.c b/src/decodeDH.c index c157f205..7e1a28cf 100644 --- a/src/decodeDH.c +++ b/src/decodeDH.c @@ -31,28 +31,11 @@ static void dh_respond_with_user_reject() { // it should be set to this value at the beginning and after a UI state machine is finished static int UI_STEP_NONE = 0; -typedef struct { - uint8_t length; - uint8_t data[]; -} string_with_length_t; - -static struct { - string_with_length_t *payee_public_address; - string_with_length_t *payer_public_address; - string_with_length_t *amount; - string_with_length_t *chain_code; - string_with_length_t *token_code; - string_with_length_t *status; - string_with_length_t *obt_id; - string_with_length_t *memo; - string_with_length_t *hash; - string_with_length_t *offline_url; -} parsedContent; - static void readStringWithLength(size_t *read, string_with_length_t **result) { VALIDATE(ctx->bufferLen >= 1 + *read, ERR_INVALID_DATA); *result = (string_with_length_t *) (ctx->buffer + *read); *read += (*result)->length + 1; //+1 for actual length + VALIDATE(ctx->bufferLen >= *read, ERR_INVALID_DATA); TRACE("%d, %d", (*result)->length, *read); } @@ -98,33 +81,33 @@ static void decodeNewfundsreqMemo_ui_runStep() { } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, + ctx->parsedContent.payee_public_address->data, + ctx->parsedContent.payee_public_address->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_AMOUNT) { ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, + ctx->parsedContent.amount->data, + ctx->parsedContent.amount->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CHAIN_CODE) { ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, + ctx->parsedContent.chain_code->data, + ctx->parsedContent.chain_code->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_TOKEN_CODE) { ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, + ctx->parsedContent.token_code->data, + ctx->parsedContent.token_code->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MEMO) { - ASSERT(parsedContent.memo != NULL); + ASSERT(ctx->parsedContent.memo != NULL); ui_displayAsciiBufferScreen("Memo", - parsedContent.memo->data, - parsedContent.memo->length, + ctx->parsedContent.memo->data, + ctx->parsedContent.memo->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_MEMO_UI_STEP_CONFIRM) { @@ -166,40 +149,40 @@ static void decodeNewfundsreqHash_ui_runStep() { } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, + ctx->parsedContent.payee_public_address->data, + ctx->parsedContent.payee_public_address->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_AMOUNT) { ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, + ctx->parsedContent.amount->data, + ctx->parsedContent.amount->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CHAIN_CODE) { ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, + ctx->parsedContent.chain_code->data, + ctx->parsedContent.chain_code->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_TOKEN_CODE) { ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, + ctx->parsedContent.token_code->data, + ctx->parsedContent.token_code->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_HASH) { - ASSERT(parsedContent.hash != NULL); + ASSERT(ctx->parsedContent.hash != NULL); ui_displayAsciiBufferScreen("Hash", - parsedContent.hash->data, - parsedContent.hash->length, + ctx->parsedContent.hash->data, + ctx->parsedContent.hash->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_OFFLINE_URL) { - ASSERT(parsedContent.offline_url != NULL); + ASSERT(ctx->parsedContent.offline_url != NULL); ui_displayAsciiBufferScreen("Offline URL", - parsedContent.offline_url->data, - parsedContent.offline_url->length, + ctx->parsedContent.offline_url->data, + ctx->parsedContent.offline_url->length, this_fn); } UI_STEP(DECODE_NEWFUNDSREQ_HASH_UI_STEP_CONFIRM) { @@ -217,23 +200,23 @@ static void decodeNewfundsreqHash_ui_runStep() { static void decodeNewfundsreqUIFlow() { ASSERT(ctx->ui_step == UI_STEP_NONE); // make sure no ui state machine is running - explicit_bzero(&parsedContent, SIZEOF(parsedContent)); + explicit_bzero(&ctx->parsedContent, SIZEOF(ctx->parsedContent)); size_t read = 0; - readStringWithLength(&read, &parsedContent.payee_public_address); - readStringWithLength(&read, &parsedContent.amount); - readStringWithLength(&read, &parsedContent.chain_code); - readStringWithLength(&read, &parsedContent.token_code); - readOptionalStringWithLength(&read, &parsedContent.memo); - readOptionalStringWithLength(&read, &parsedContent.hash); - readOptionalStringWithLength(&read, &parsedContent.offline_url); + readStringWithLength(&read, &ctx->parsedContent.payee_public_address); + readStringWithLength(&read, &ctx->parsedContent.amount); + readStringWithLength(&read, &ctx->parsedContent.chain_code); + readStringWithLength(&read, &ctx->parsedContent.token_code); + readOptionalStringWithLength(&read, &ctx->parsedContent.memo); + readOptionalStringWithLength(&read, &ctx->parsedContent.hash); + readOptionalStringWithLength(&read, &ctx->parsedContent.offline_url); VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); - if (parsedContent.memo != NULL && parsedContent.hash == NULL && - parsedContent.offline_url == NULL) { + if (ctx->parsedContent.memo != NULL && ctx->parsedContent.hash == NULL && + ctx->parsedContent.offline_url == NULL) { ctx->ui_step = DECODE_NEWFUNDSREQ_MEMO_UI_STEP_MESSAGE1; decodeNewfundsreqMemo_ui_runStep(); - } else if (parsedContent.memo == NULL && parsedContent.hash != NULL && - parsedContent.offline_url != NULL) { + } else if (ctx->parsedContent.memo == NULL && ctx->parsedContent.hash != NULL && + ctx->parsedContent.offline_url != NULL) { ctx->ui_step = DECODE_NEWFUNDSREQ_HASH_UI_STEP_MESSAGE1; decodeNewfundsreqHash_ui_runStep(); @@ -276,51 +259,51 @@ static void decodeRecordobtMemo_ui_runStep() { } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, + ctx->parsedContent.payee_public_address->data, + ctx->parsedContent.payee_public_address->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_PAYER_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payer public address", - parsedContent.payer_public_address->data, - parsedContent.payer_public_address->length, + ctx->parsedContent.payer_public_address->data, + ctx->parsedContent.payer_public_address->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_AMOUNT) { ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, + ctx->parsedContent.amount->data, + ctx->parsedContent.amount->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CHAIN_CODE) { ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, + ctx->parsedContent.chain_code->data, + ctx->parsedContent.chain_code->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_TOKEN_CODE) { ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, + ctx->parsedContent.token_code->data, + ctx->parsedContent.token_code->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_STATUS) { ui_displayAsciiBufferScreen("Status", - parsedContent.status->data, - parsedContent.status->length, + ctx->parsedContent.status->data, + ctx->parsedContent.status->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_OBT_ID) { ui_displayAsciiBufferScreen("Obt ID", - parsedContent.obt_id->data, - parsedContent.obt_id->length, + ctx->parsedContent.obt_id->data, + ctx->parsedContent.obt_id->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_MEMO) { - ASSERT(parsedContent.memo != NULL); + ASSERT(ctx->parsedContent.memo != NULL); ui_displayAsciiBufferScreen("Memo", - parsedContent.memo->data, - parsedContent.memo->length, + ctx->parsedContent.memo->data, + ctx->parsedContent.memo->length, this_fn); } UI_STEP(DECODE_RECORDOBT_MEMO_UI_STEP_CONFIRM) { @@ -367,58 +350,58 @@ static void decodeRecordobtHash_ui_runStep() { } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYEE_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payee public address", - parsedContent.payee_public_address->data, - parsedContent.payee_public_address->length, + ctx->parsedContent.payee_public_address->data, + ctx->parsedContent.payee_public_address->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_PAYER_PUBLIC_ADDRESS) { ui_displayAsciiBufferScreen("Payer public address", - parsedContent.payer_public_address->data, - parsedContent.payer_public_address->length, + ctx->parsedContent.payer_public_address->data, + ctx->parsedContent.payer_public_address->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_AMOUNT) { ui_displayAsciiBufferScreen("Amount", - parsedContent.amount->data, - parsedContent.amount->length, + ctx->parsedContent.amount->data, + ctx->parsedContent.amount->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CHAIN_CODE) { ui_displayAsciiBufferScreen("Chain code", - parsedContent.chain_code->data, - parsedContent.chain_code->length, + ctx->parsedContent.chain_code->data, + ctx->parsedContent.chain_code->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_TOKEN_CODE) { ui_displayAsciiBufferScreen("Token code", - parsedContent.token_code->data, - parsedContent.token_code->length, + ctx->parsedContent.token_code->data, + ctx->parsedContent.token_code->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_STATUS) { ui_displayAsciiBufferScreen("Status", - parsedContent.status->data, - parsedContent.status->length, + ctx->parsedContent.status->data, + ctx->parsedContent.status->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OBT_ID) { ui_displayAsciiBufferScreen("Obt ID", - parsedContent.obt_id->data, - parsedContent.obt_id->length, + ctx->parsedContent.obt_id->data, + ctx->parsedContent.obt_id->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_HASH) { - ASSERT(parsedContent.hash != NULL); + ASSERT(ctx->parsedContent.hash != NULL); ui_displayAsciiBufferScreen("Hash", - parsedContent.hash->data, - parsedContent.hash->length, + ctx->parsedContent.hash->data, + ctx->parsedContent.hash->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_OFFLINE_URL) { - ASSERT(parsedContent.offline_url != NULL); + ASSERT(ctx->parsedContent.offline_url != NULL); ui_displayAsciiBufferScreen("Offline URL", - parsedContent.offline_url->data, - parsedContent.offline_url->length, + ctx->parsedContent.offline_url->data, + ctx->parsedContent.offline_url->length, this_fn); } UI_STEP(DECODE_RECORDOBT_HASH_UI_STEP_CONFIRM) { @@ -436,26 +419,26 @@ static void decodeRecordobtHash_ui_runStep() { static void decodeRecordobtUIFlow() { ASSERT(ctx->ui_step == UI_STEP_NONE); // make sure no ui state machine is running - explicit_bzero(&parsedContent, SIZEOF(parsedContent)); + explicit_bzero(&ctx->parsedContent, SIZEOF(ctx->parsedContent)); size_t read = 0; - readStringWithLength(&read, &parsedContent.payer_public_address); - readStringWithLength(&read, &parsedContent.payee_public_address); - readStringWithLength(&read, &parsedContent.amount); - readStringWithLength(&read, &parsedContent.chain_code); - readStringWithLength(&read, &parsedContent.token_code); - readStringWithLength(&read, &parsedContent.status); - readStringWithLength(&read, &parsedContent.obt_id); - readOptionalStringWithLength(&read, &parsedContent.memo); - readOptionalStringWithLength(&read, &parsedContent.hash); - readOptionalStringWithLength(&read, &parsedContent.offline_url); + readStringWithLength(&read, &ctx->parsedContent.payer_public_address); + readStringWithLength(&read, &ctx->parsedContent.payee_public_address); + readStringWithLength(&read, &ctx->parsedContent.amount); + readStringWithLength(&read, &ctx->parsedContent.chain_code); + readStringWithLength(&read, &ctx->parsedContent.token_code); + readStringWithLength(&read, &ctx->parsedContent.status); + readStringWithLength(&read, &ctx->parsedContent.obt_id); + readOptionalStringWithLength(&read, &ctx->parsedContent.memo); + readOptionalStringWithLength(&read, &ctx->parsedContent.hash); + readOptionalStringWithLength(&read, &ctx->parsedContent.offline_url); VALIDATE(read == ctx->bufferLen, ERR_INVALID_DATA); - if (parsedContent.memo != NULL && parsedContent.hash == NULL && - parsedContent.offline_url == NULL) { + if (ctx->parsedContent.memo != NULL && ctx->parsedContent.hash == NULL && + ctx->parsedContent.offline_url == NULL) { ctx->ui_step = DECODE_RECORDOBT_MEMO_UI_STEP_MESSAGE1; decodeRecordobtMemo_ui_runStep(); - } else if (parsedContent.memo == NULL && parsedContent.hash != NULL && - parsedContent.offline_url != NULL) { + } else if (ctx->parsedContent.memo == NULL && ctx->parsedContent.hash != NULL && + ctx->parsedContent.offline_url != NULL) { ctx->ui_step = DECODE_RECORDOBT_HASH_UI_STEP_MESSAGE1; decodeRecordobtHash_ui_runStep(); @@ -520,12 +503,13 @@ void decode_handleAPDU(uint8_t p1, TRACE("Decoding DH"); ASSERT(ctx->bufferLen <= SIZEOF(ctx->buffer)); TRACE_BUFFER(ctx->buffer, ctx->bufferLen); - ctx->messageDecodedMagic = DECODING_FINISHED_MAGIC; ctx->bufferLen = dh_decode(&ctx->pathSpec, &ctx->otherPubKey, ctx->buffer, ctx->bufferLen); + ctx->messageDecodedMagic = DECODING_FINISHED_MAGIC; ctx->bufferSentLen = 0; TRACE_BUFFER(ctx->buffer, ctx->bufferLen); // Call parsing function + // These functions set stage to DECODE_STAGE_SEND_REST on success if (p2 == P2_NEWFUNDSREQ) { decodeNewfundsreqUIFlow(); return; diff --git a/src/decodeDH.h b/src/decodeDH.h index 6ad3b795..7e68ba05 100644 --- a/src/decodeDH.h +++ b/src/decodeDH.h @@ -14,6 +14,26 @@ typedef enum { DECODE_STAGE_SEND_REST = 3, } decode_stage_t; +typedef struct { + uint8_t length; + uint8_t data[]; +} string_with_length_t; + +// These pointers will point to decoded message where strings are stored in string_with_length_t +// format +typedef struct { + string_with_length_t *payee_public_address; + string_with_length_t *payer_public_address; + string_with_length_t *amount; + string_with_length_t *chain_code; + string_with_length_t *token_code; + string_with_length_t *status; + string_with_length_t *obt_id; + string_with_length_t *memo; + string_with_length_t *hash; + string_with_length_t *offline_url; +} parsed_context_t; + typedef struct { decode_stage_t stage; @@ -26,6 +46,8 @@ typedef struct { uint16_t messageDecodedMagic; int ui_step; + + parsed_context_t parsedContent; } ins_decode_context_t; handler_fn_t decode_handleAPDU; diff --git a/src/diffieHellman.c b/src/diffieHellman.c index 9415c05a..fa8bc9c0 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -47,6 +47,7 @@ static size_t processDHOneBlockFromCache(dh_context_t* ctx, uint8_t* outBuffer, size_t outSize) { ASSERT(ctx->cacheLength == CX_AES_BLOCK_SIZE); + STATIC_ASSERT(SIZEOF(ctx->IV) == CX_AES_BLOCK_SIZE, "Incompatible IV size"); // We work in CBC mode // 1. IV xor plaintext @@ -331,34 +332,42 @@ __noinline_due_to_stack__ size_t dh_decode(bip44_path_t* pathSpec, VALIDATE(inSize >= DH_AES_IV_SIZE + CX_AES_BLOCK_SIZE + DH_HMAC_SIZE, ERR_INVALID_DATA); VALIDATE(inSize % CX_AES_BLOCK_SIZE == 0, ERR_INVALID_DATA); - dh_aes_key_t aes_key; - dh_init_aes_key(&aes_key, pathSpec, publicKey); - - // validate HMAC - validateHmac(&aes_key, buffer, inSize); - TRACE("HMAC validation succesfull."); - - // initiate DH decryptions - uint8_t IV[CX_AES_BLOCK_SIZE]; - memcpy(IV, buffer, SIZEOF(IV)); size_t read = DH_AES_IV_SIZE; // we do not decode IV, this also creates a buffer so we can decode inplace size_t written = 0; - - for (; read < inSize - DH_HMAC_SIZE; read += CX_AES_BLOCK_SIZE) { - // 1. Decode next block - ASSERT(read - written == CX_AES_BLOCK_SIZE); - cx_err_t err = cx_aes_dec_block(&aes_key.aesKey, buffer + read, buffer + written); - ASSERT(err == CX_OK); - // 2. XOR with IV - for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { - buffer[written + i] ^= IV[i]; + dh_aes_key_t aes_key; + BEGIN_TRY { + TRY { + dh_init_aes_key(&aes_key, pathSpec, publicKey); + + // validate HMAC + validateHmac(&aes_key, buffer, inSize); + TRACE("HMAC validation succesfull."); + + // initiate DH decryptions + uint8_t IV[CX_AES_BLOCK_SIZE]; + memcpy(IV, buffer, SIZEOF(IV)); + + for (; read < inSize - DH_HMAC_SIZE; read += CX_AES_BLOCK_SIZE) { + // 1. Decode next block + ASSERT(read - written == CX_AES_BLOCK_SIZE); + cx_err_t err = cx_aes_dec_block(&aes_key.aesKey, buffer + read, buffer + written); + ASSERT(err == CX_OK); + // 2. XOR with IV + for (size_t i = 0; i < CX_AES_BLOCK_SIZE; i++) { + buffer[written + i] ^= IV[i]; + } + // 3. Cyphertext is the new IV ... we do not care that we copy part of HMAC in last + // iteration here + memcpy(IV, buffer + read, CX_AES_BLOCK_SIZE); + written += CX_AES_BLOCK_SIZE; + } + } + FINALLY { + explicit_bzero(&aes_key, sizeof(aes_key)); } - // 3. Cyphertext is the new IV ... we do not care that we copy part of HMAC in last - // iteration here - memcpy(IV, buffer + read, CX_AES_BLOCK_SIZE); - written += CX_AES_BLOCK_SIZE; } + END_TRY; TRACE("Finishing decription, written:%d, lastCharacter:%d", written, buffer[written - 1]); // Calculate redulting length based on the last decoded value diff --git a/src/diffieHellman.h b/src/diffieHellman.h index 2c1fe388..4006ed2c 100644 --- a/src/diffieHellman.h +++ b/src/diffieHellman.h @@ -8,7 +8,7 @@ #include "keyDerivation.h" #include "hash.h" -// This file provides convenience functions for using firmware hashing api +// This file provides functions for Diffie-Hellmann encoding and decoding // Note: We would like to make this static const but // it does not play well with inline functions @@ -99,4 +99,4 @@ __noinline_due_to_stack__ size_t dh_decode(bip44_path_t* pathSpec, __noinline_due_to_stack__ void run_diffieHellman_test(); #endif // DEVEL -#endif \ No newline at end of file +#endif diff --git a/src/eos_utils.c b/src/eos_utils.c index 5052a51e..66e4a011 100644 --- a/src/eos_utils.c +++ b/src/eos_utils.c @@ -70,7 +70,7 @@ int ecdsa_der_to_sig(const uint8_t *der, uint8_t *sig) { /** * The nonce generated by internal library CX_RND_RFC6979 is not compatible * with EOS. So this is the way to generate nonve for EOS. - * Arguments (by rele): + * Arguments (by relatko): * - rnd - out * - h1 - hash, in * - x - private key, in diff --git a/src/main.c b/src/main.c index a3dd45ae..142c7a2f 100644 --- a/src/main.c +++ b/src/main.c @@ -153,6 +153,7 @@ static void fio_main(void) { // Note(ppershing): assertions should not auto-respond #ifdef RESET_ON_CRASH // Reset device + currentInstruction = INS_NONE; io_seproxyhal_se_reset(); #endif } @@ -165,6 +166,7 @@ static void fio_main(void) { PRINTF("Uncaught error 0x%x", (unsigned) e); #ifdef RESET_ON_CRASH // Reset device + currentInstruction = INS_NONE; io_seproxyhal_se_reset(); #endif } @@ -185,6 +187,7 @@ static void fio_main(void) { static void app_exit(void) { BEGIN_TRY_L(exit) { TRY_L(exit) { + currentInstruction = INS_NONE; os_sched_exit(-1); } FINALLY_L(exit) { diff --git a/src/signTransaction.c b/src/signTransaction.c index b7e7f37c..6b8495be 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -16,6 +16,8 @@ static ins_sign_transaction_context_t* ctx = &(instructionState.signTransactionContext); +// ============================== MISC ============================== + typedef enum { VALUE_STORAGE_CHECK_NO = 0x00, VALUE_STORAGE_CHECK_R1 = 0x10, @@ -28,7 +30,9 @@ enum { TX_STORAGE_INITIALIZED_MAGIC = 12345, }; -// ============================== MISC ============================== +enum { + TX_INIT_WAS_CALLED_INITIALIZED_MAGIC = 12346, +}; // Taken from EOS app. Needed to produce signatures. static uint8_t const SECP256K1_N[] = { @@ -55,6 +59,9 @@ static void processShaAndPosibleDHAndPrepareResponse() { G_io_apdu_buffer, SIZEOF(G_io_apdu_buffer)); sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + VALIDATE( + ctx->countedSectionDifference + ctx->responseLength >= ctx->dataToAppendToTxLen, + ERR_INVALID_STATE); ctx->countedSectionDifference = ctx->countedSectionDifference + ctx->responseLength - ctx->dataToAppendToTxLen; TRACE("CS diff %d from:%d, %d", @@ -89,8 +96,7 @@ static void prepareOurPubkeyForDisplay() { ctx->value[outlen] = 0; } -// =====SIMPLE UI STEP SHOWING JUST ONE OR NO SCREEN ================= - +// Simple reusable UI step with one or no screens enum { HANDLE_SIMPLE_STEP_DISPLAY_DETAILS = 100, HANDLE_SIMPLE_STEP_RESPOND, @@ -797,61 +803,64 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( } // Reading data finished, from now on we use G_io_apdu_buffer for output - - // Apend data to hash (final blocks of DH encryption) and prepare response { - // To be sure that we are encoding correct DH data - VALIDATE(integrityCheckEvaluate(&ctx->integrity), ERR_INTEGRITY_CHECK_FAILED); + // Apend data to hash (final blocks of DH encryption) and prepare response + { + // To be sure that we are encoding correct DH data + VALIDATE(integrityCheckEvaluate(&ctx->integrity), ERR_INTEGRITY_CHECK_FAILED); - VALIDATE(ctx->dhIsActive, ERR_INVALID_STATE); - // Counted section that started within DH encoding cannot end after DH encoding - VALIDATE(ctx->dhCountedSectionEntryLevel == ctx->countedSections.currentLevel, - ERR_INVALID_STATE); + VALIDATE(ctx->dhIsActive, ERR_INVALID_STATE); + // Counted section that started within DH encoding cannot end after DH encoding + VALIDATE(ctx->dhCountedSectionEntryLevel == ctx->countedSections.currentLevel, + ERR_INVALID_STATE); - dh_aes_key_t aesKey; - BEGIN_TRY { - TRY { - // Compute AES key - dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); + dh_aes_key_t aesKey; + BEGIN_TRY { + TRY { + // Compute AES key + dh_init_aes_key(&aesKey, &ctx->wittnessPath, &ctx->otherPubkey); - ctx->responseLength = dh_encode_finalize(&ctx->dhContext, - &aesKey, - G_io_apdu_buffer, - SIZEOF(G_io_apdu_buffer)); - } - FINALLY { - explicit_bzero(&aesKey, SIZEOF(aesKey)); + ctx->responseLength = dh_encode_finalize(&ctx->dhContext, + &aesKey, + G_io_apdu_buffer, + SIZEOF(G_io_apdu_buffer)); + } + FINALLY { + explicit_bzero(&aesKey, SIZEOF(aesKey)); + } } - } - END_TRY; + END_TRY; - ctx->countedSectionDifference += ctx->responseLength; - TRACE("CS diff %d from:%d", (int) ctx->countedSectionDifference, (int) ctx->responseLength); - VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->countedSectionDifference), - ERR_INVALID_STATE); + ctx->countedSectionDifference += ctx->responseLength; + TRACE("CS diff %d from:%d", + (int) ctx->countedSectionDifference, + (int) ctx->responseLength); + VALIDATE(countedSectionProcess(&ctx->countedSections, ctx->countedSectionDifference), + ERR_INVALID_STATE); - sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); - ctx->dhIsActive = false; - } + sha_256_append(&ctx->hashContext, G_io_apdu_buffer, ctx->responseLength); + ctx->dhIsActive = false; + } - // Security policy - { - security_policy_t policy = POLICY_DENY; - policy = policyForSignTxDHEnd(); - TRACE("Policy: %d", (int) policy); - ENSURE_NOT_DENIED(policy); + // Security policy { - // select UI steps - switch (policy) { + security_policy_t policy = POLICY_DENY; + policy = policyForSignTxDHEnd(); + TRACE("Policy: %d", (int) policy); + ENSURE_NOT_DENIED(policy); + { + // select UI steps + switch (policy) { #define CASE(POLICY, UI_STEP) \ case POLICY: { \ ctx->ui_step = UI_STEP; \ break; \ } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_CONFIRM); - default: - THROW(ERR_NOT_IMPLEMENTED); + CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_CONFIRM); + default: + THROW(ERR_NOT_IMPLEMENTED); #undef CASE + } } } } @@ -1089,7 +1098,9 @@ void signTransaction_handleAPDU(uint8_t p1, ctx->storage.initialized_magic = TX_STORAGE_INITIALIZED_MAGIC; TRACE("DH inactive"); ctx->dhIsActive = false; + ctx->initWasCalledMagic = TX_INIT_WAS_CALLED_INITIALIZED_MAGIC; } + VALIDATE(TX_INIT_WAS_CALLED_INITIALIZED_MAGIC, ERR_INVALID_DATA); // Parse APDU into const and non-const part ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); diff --git a/src/signTransaction.h b/src/signTransaction.h index 8ab40278..8436a08d 100644 --- a/src/signTransaction.h +++ b/src/signTransaction.h @@ -31,6 +31,7 @@ typedef struct { } tx_value_storage_t; typedef struct { + uint16_t initWasCalledMagic; bip44_path_t wittnessPath; sha_256_context_t hashContext; tx_integrity_t integrity; diff --git a/src/signTransactionCountedSection.c b/src/signTransactionCountedSection.c index 434486ae..bd284c85 100644 --- a/src/signTransactionCountedSection.c +++ b/src/signTransactionCountedSection.c @@ -34,7 +34,7 @@ __noinline_due_to_stack__ bool countedSectionProcess(tx_counted_section_t *cs, ASSERT(cs->currentLevel <= MAX_NESTED_COUNTED_SECTIONS); for (size_t i = 0; i < cs->currentLevel; i++) { - TRACE("%d/%d: We have %d, use %d.", + TRACE("Counted section %d/%d: We have %d, use %d.", (int) (i + 1), (int) cs->currentLevel, (int) cs->count[i], From 43264af5740fab3c2c277dc5eae7d5bfc6c41e22 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Fri, 27 Jan 2023 16:48:07 +0100 Subject: [PATCH 73/83] Fix on device get app version test --- MakefileTest.mk | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/MakefileTest.mk b/MakefileTest.mk index 8f1d5dea..84e2029a 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -87,20 +87,20 @@ get_allowed_sequences_from_logs: .PHONY: ledger_test ledger_test: $(call run_announce,$@) - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getVersion.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getSerial.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node getPublicKey.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node decodeMessage.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionTrnsfiopubky.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionNewfundsreq.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRecordobt.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionAddaddress.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRemaddress.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionAddnft.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionRemaddress.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioAddress.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioReqobt.js - @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node signTransactionOtherFioStaking.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node getVersion.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node getSerial.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node getPublicKey.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node decodeMessage.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionTrnsfiopubky.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionNewfundsreq.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionRecordobt.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionAddaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionRemaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionAddnft.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionRemaddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionOtherFioAddress.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) node signTransactionOtherFioReqobt.js + @cd $(TESTS_SPECULOS_DIR) && TEST_ON_DEVICE=LEDGER TEST_DEVICE=$(TEST_DEVICE) node APPVERSION_M=$(APPVERSION_M) APPVERSION_N=$(APPVERSION_N) APPVERSION_P=$(APPVERSION_P) signTransactionOtherFioStaking.js #We don't do signTransactionEosio as it is too time consuming $(call run_nodejs_test,5001,40001,signTransactionOtherEosio.js) @echo "# ALL TESTS COMPLETED!" From 9bf9a7b30192793f95a4bf21cf416eb07bb757a6 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 30 May 2023 12:07:14 +0200 Subject: [PATCH 74/83] Add guidelines enforcer --- .github/workflows/guidelines_enforcer.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/guidelines_enforcer.yml diff --git a/.github/workflows/guidelines_enforcer.yml b/.github/workflows/guidelines_enforcer.yml new file mode 100644 index 00000000..32cfd201 --- /dev/null +++ b/.github/workflows/guidelines_enforcer.yml @@ -0,0 +1,19 @@ +name: Ensure compliance with Ledger guidelines + +# This workflow is mandatory in all applications +# It calls a reusable workflow guidelines_enforcer developed by Ledger's internal developer team. +# The successful completion of the reusable workflow is a mandatory step for an app to be available on the Ledger +# application store. +# +# More information on the guidelines can be found in the repository: +# LedgerHQ/ledger-app-workflows/ + +on: + workflow_dispatch: + push: + pull_request: + +jobs: + guidelines_enforcer: + name: Call Ledger guidelines_enforcer + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1 From 1b228f8ba553cac056da159146b12081b1378472 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 30 May 2023 12:25:38 +0200 Subject: [PATCH 75/83] Easy code style fixes --- src/getSerial.c | 3 ++- src/hexUtils.c | 3 ++- src/signTransactionIntegrity.c | 13 +++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/getSerial.c b/src/getSerial.c index c8c530df..eef53adf 100644 --- a/src/getSerial.c +++ b/src/getSerial.c @@ -4,6 +4,8 @@ #include "getSerial.h" #include "uiHelpers.h" +#define SERIAL_LENGTH 7 // if too short, exception 2 is thrown by os_serial + void getSerial_handleAPDU(uint8_t p1, uint8_t p2, uint8_t *wireDataBuffer MARK_UNUSED, @@ -18,7 +20,6 @@ void getSerial_handleAPDU(uint8_t p1, TRACE(); - const size_t SERIAL_LENGTH = 7; // if too short, exception 2 is thrown by os_serial uint8_t response[SERIAL_LENGTH]; size_t len = os_serial(response, SERIAL_LENGTH); ASSERT(len == SERIAL_LENGTH); diff --git a/src/hexUtils.c b/src/hexUtils.c index 13715f3a..14008529 100644 --- a/src/hexUtils.c +++ b/src/hexUtils.c @@ -51,6 +51,8 @@ size_t encode_hex(const uint8_t* bytes, size_t bytesLength, char* out, size_t ou return 2 * bytesLength; } +#ifdef DEVEL + void test_hex_nibble_parsing() { struct { char nibble; @@ -102,7 +104,6 @@ void test_hex_parsing() { } } -#ifdef DEVEL void run_hex_test() { test_hex_nibble_parsing(); test_hex_parsing(); diff --git a/src/signTransactionIntegrity.c b/src/signTransactionIntegrity.c index ad7b8a66..7438ad95 100644 --- a/src/signTransactionIntegrity.c +++ b/src/signTransactionIntegrity.c @@ -323,9 +323,10 @@ __noinline_due_to_stack__ void integrityCheckProcessInstruction(tx_integrity_t * TRACE_BUFFER(&integrity->integrityHash, SIZEOF(integrity->integrityHash)); } -__noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity, - const uint8_t (*allowedHashes)[SHA_256_SIZE], - uint16_t allowedHashesLength) { +__noinline_due_to_stack__ bool _integrityCheckEvaluate( + tx_integrity_t *integrity, + const uint8_t (*allowedHashList)[SHA_256_SIZE], + uint16_t allowedHashListLength) { PRINTF("Integrity check for: {"); for (size_t i = 0; i < SIZEOF(integrity->integrityHash) - 1; i++) { PRINTF("0x%02x, ", integrity->integrityHash[i]); @@ -336,10 +337,10 @@ __noinline_due_to_stack__ bool _integrityCheckEvaluate(tx_integrity_t *integrity return true; #endif ASSERT(integrity->initialized_magic == TX_INTEGRITY_HASH_INITIALIZED_MAGIC); - for (uint16_t i = 0; i < allowedHashesLength; i++) { - STATIC_ASSERT(SIZEOF(allowedHashes[i]) == SIZEOF(integrity->integrityHash), + for (uint16_t i = 0; i < allowedHashListLength; i++) { + STATIC_ASSERT(SIZEOF(allowedHashList[i]) == SIZEOF(integrity->integrityHash), "Incompatible hashes."); - if (memcmp(integrity->integrityHash, allowedHashes[i], SIZEOF(allowedHashes[i])) == 0) { + if (memcmp(integrity->integrityHash, allowedHashList[i], SIZEOF(allowedHashList[i])) == 0) { TRACE("Integrity check passed"); return true; } From 76297daf17d8dbf006c719eeb3f09f4061659eda Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 30 May 2023 13:36:24 +0200 Subject: [PATCH 76/83] eos_utils guideline_enforcer fix --- src/eos_utils.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/eos_utils.c b/src/eos_utils.c index 66e4a011..438776b9 100644 --- a/src/eos_utils.c +++ b/src/eos_utils.c @@ -167,6 +167,8 @@ unsigned char const BASE58ALPHABET[58] = { 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; +#define MAX_B58ENC_LENGTH 60 + bool b58enc(uint8_t *bin, uint32_t binsz, char *b58, uint32_t *b58sz) { int carry; uint32_t i, j, high, zcount = 0; @@ -175,9 +177,10 @@ bool b58enc(uint8_t *bin, uint32_t binsz, char *b58, uint32_t *b58sz) { while (zcount < binsz && !bin[zcount]) ++zcount; size = (binsz - zcount) * 138 / 100 + 1; - uint8_t buf[size]; - memset(buf, 0, size); - + uint8_t buf[MAX_B58ENC_LENGTH]; + ASSERT(size <= MAX_B58ENC_LENGTH); + memset(buf, 0, sizeof(buf)); + for (i = zcount, high = size - 1; i < binsz; ++i, high = j) { for (carry = bin[i], j = size - 1; (j > high) || carry; --j) { ASSERT(j < size); From 230398ee0a6b8857bd65978d0fa95b214b9c645f Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 10 Jun 2023 15:33:13 +0200 Subject: [PATCH 77/83] Fix build --- .github/workflows/ci-workflow.yml | 8 ++++---- MakefileContainer.mk | 2 +- MakefileLocal.mk | 3 +++ src/eos_utils.c | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 73d3c0db..103403dc 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 steps: - name: Clone @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 steps: - name: Clone @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 steps: - name: Clone @@ -72,7 +72,7 @@ jobs: needs: job_nanoS_build_debug container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:sha-229b03c + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 steps: - uses: actions/checkout@v2 diff --git a/MakefileContainer.mk b/MakefileContainer.mk index 3e026036..7fd51384 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -19,7 +19,7 @@ ifneq ($(BOLOS_SDK),) $(error Containerized build, BOLOS_SDK should be empty) endif -APP_BUILDER_IMAGE = ledger-app-builder:sha-229b03c +APP_BUILDER_IMAGE = ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 default_target: build diff --git a/MakefileLocal.mk b/MakefileLocal.mk index c23aea33..f3ee1c63 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -156,6 +156,9 @@ endif ############## build: bin/app.elf + @cp $(DBG_DIR)/app.asm debug/app.asm + @cp $(DBG_DIR)/app.map debug/app.map + @cp $(BIN_DIR)/app.hex bin/app.hex @mkdir -p pkg @echo "#!/usr/bin/env bash" > $(CURDIR)/pkg/loadingtool.sh @echo "APPNAME=\"${APPNAME}\"" >> $(CURDIR)/pkg/loadingtool.sh diff --git a/src/eos_utils.c b/src/eos_utils.c index 438776b9..930ac214 100644 --- a/src/eos_utils.c +++ b/src/eos_utils.c @@ -180,7 +180,7 @@ bool b58enc(uint8_t *bin, uint32_t binsz, char *b58, uint32_t *b58sz) { uint8_t buf[MAX_B58ENC_LENGTH]; ASSERT(size <= MAX_B58ENC_LENGTH); memset(buf, 0, sizeof(buf)); - + for (i = zcount, high = size - 1; i < binsz; ++i, high = j) { for (carry = bin[i], j = size - 1; (j > high) || carry; --j) { ASSERT(j < size); From 760ad8856c67a78829e4a91443d016bf7d100473 Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 10 Jun 2023 15:55:14 +0200 Subject: [PATCH 78/83] Minor testing fixes --- src/diffieHellmann_test.c | 6 +++--- src/hexUtils.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/diffieHellmann_test.c b/src/diffieHellmann_test.c index 07a41840..76d7fd31 100644 --- a/src/diffieHellmann_test.c +++ b/src/diffieHellmann_test.c @@ -238,10 +238,10 @@ __noinline_due_to_stack__ static void run_dh_decode_tests() { #define TESTCASE(msgHex_, expectedDecMsgHex_) \ { \ - char* msgHex = msgHex_; \ + const char* msgHex = msgHex_; \ uint8_t msg[120]; \ size_t msgLen = decode_hex(msgHex, msg, SIZEOF(msg)); \ - char* expectedDecMsgHex = expectedDecMsgHex_; \ + const char* expectedDecMsgHex = expectedDecMsgHex_; \ uint8_t expectedDecMsg[100]; \ size_t expectedMsgLen = \ decode_hex(expectedDecMsgHex, expectedDecMsg, SIZEOF(expectedDecMsg)); \ @@ -316,7 +316,7 @@ __noinline_due_to_stack__ static void run_dh_decode_failed_hmac_tests() { //"000102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a005576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69be21718ab07bc639172663927cb075fa777797e0c1c4";we // change first byte - char* msgHex = + const char* msgHex = "100102030405060708090a0b0c0d0e0f9508b492f96f067cc72ef8c7c24ac2072310c4e1d36bd6737958f0a3a0" "05576d60a63b30e52db993fdb53f67ba03cd0abed894f54929ac6addfd7076970597a43a36c525ad1fc4349c69" "be21718ab07bc639172663927cb075fa777797e0c1c4"; diff --git a/src/hexUtils.c b/src/hexUtils.c index 14008529..85dfde0a 100644 --- a/src/hexUtils.c +++ b/src/hexUtils.c @@ -85,7 +85,7 @@ void test_hex_nibble_parsing() { void test_hex_parsing() { struct { - char* hex; + const char* hex; uint8_t raw; } testVectors[] = { {"ff", 0xff}, From ab29900b916db5f48d3be76a82cb0a5c5f6aadcf Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Sat, 10 Jun 2023 16:33:05 +0200 Subject: [PATCH 79/83] Update speculos container --- .gitignore | 1 + Makefile | 6 +++--- MakefileSpeculos.mk | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index dfc06c4f..43e19adb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ docs_generated/ ledger bin debug +build dep obj src/u2f_crypto_data.h diff --git a/Makefile b/Makefile index e818eef0..dbb733d3 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ NANO_ICON_GIF=nanos_icon.gif BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk TARGET_NAME=TARGET_NANOS TEST_DEVICE=nanos -SPECULOS_SDK=2.1 +SPECULOS_SDK_STRING= --sdk 2.1 ifeq ($(TARGET_DEVICE), NANO_X) $(info Targeting NanoX) SPECULOS_MODEL_SWITCH=nanox @@ -41,7 +41,7 @@ ifeq ($(TARGET_DEVICE), NANO_X) BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk TARGET_NAME=TARGET_NANOX TEST_DEVICE=nanox - SPECULOS_SDK=2.0.2 + SPECULOS_SDK_STRING= endif ifeq ($(TARGET_DEVICE), NANO_SP) $(info Targeting NanoSPlus) @@ -50,7 +50,7 @@ ifeq ($(TARGET_DEVICE), NANO_SP) BOLOS_SDK_DIRECTORY=/opt/nanosplus-secure-sdk TARGET_NAME=TARGET_NANOS2 TEST_DEVICE=nanosp - SPECULOS_SDK=1.0 + SPECULOS_SDK_STRING= endif diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk index f512ca99..161e26a1 100644 --- a/MakefileSpeculos.mk +++ b/MakefileSpeculos.mk @@ -15,7 +15,7 @@ # limitations under the License. #******************************************************************************* -SPECULOS_IMAGE = speculos:sha-5a8e49b +SPECULOS_IMAGE = speculos:sha-335cca3 define run_announce @perl -e 'use Time::HiRes; use POSIX; $$ts = sprintf qq[%f], Time::HiRes::time(); ($$f) = $$ts =~ m~(\....)~; printf qq[%s%s %s make: %s\n], POSIX::strftime("%H:%M:%S", gmtime), $$f, q[-] x 126, $$ARGV[0];' "$(1)" @@ -30,7 +30,7 @@ endif define start_speculos_container $(DOCKER_SPECULOS_PULL_COMMAND) docker image tag ghcr.io/ledgerhq/$(SPECULOS_IMAGE) speculos - docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(3):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) --sdk $(SPECULOS_SDK) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) /speculos/app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & + docker run --detach --name speculos-port-$(1) --rm -it -v $(CURDIR)$(3):/speculos/app/bin --publish $(1):$(1) --publish $(2):$(2) speculos --model $(SPECULOS_MODEL_SWITCH) $(SPECULOS_SDK_STRING) --seed $(WORDS) --display headless --apdu-port $(2) --api-port $(1) /speculos/app/bin/app.elf ; rm -f $(CURDIR)/speculos-port-$(1).log ; docker logs --follow speculos-port-$(1) 2>&1 | tee -a $(CURDIR)/speculos-port-$(1).log > /dev/null 2>&1 & @perl -e 'use Time::HiRes; $$t1=Time::HiRes::time(); while(1){ $$o=`cat $(CURDIR)/speculos-port-$(1).log`; if($$o =~ m~Running on .*\:$(1)~s){ printf qq[# detected -- via log -- speculos listening after %f seconds; spy on emulated device via http://localhost:$(1)/\n], Time::HiRes::time() - $$t1; exit; } Time::HiRes::sleep(0.01); };' endef From 9fddc72d1947c9785cac2b516ae4a8f58456c0cd Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Tue, 18 Jul 2023 15:03:55 +0200 Subject: [PATCH 80/83] Vulnerability fixes Fixed: - Missing input value validation - Potential missing secret wiping from stack after use - String manipulation - Pointer arithmetic on void pointer - Trivial swich-case statements were removed - Replaced certain other memset calls --- src/diffieHellman.c | 4 ++- src/eos_utils.c | 6 ++-- src/getPublicKey.c | 22 +-------------- src/getPublicKey.h | 6 ---- src/signTransaction.c | 66 ++++++++++++++----------------------------- 5 files changed, 28 insertions(+), 76 deletions(-) diff --git a/src/diffieHellman.c b/src/diffieHellman.c index fa8bc9c0..667fd134 100644 --- a/src/diffieHellman.c +++ b/src/diffieHellman.c @@ -370,6 +370,8 @@ __noinline_due_to_stack__ size_t dh_decode(bip44_path_t* pathSpec, END_TRY; TRACE("Finishing decription, written:%d, lastCharacter:%d", written, buffer[written - 1]); - // Calculate redulting length based on the last decoded value + // Calculate resulting length based on the last decoded value + ASSERT(written != 0); + ASSERT(written >= buffer[written - 1]); return written - buffer[written - 1]; } diff --git a/src/eos_utils.c b/src/eos_utils.c index 930ac214..c1e0d52e 100644 --- a/src/eos_utils.c +++ b/src/eos_utils.c @@ -179,7 +179,7 @@ bool b58enc(uint8_t *bin, uint32_t binsz, char *b58, uint32_t *b58sz) { size = (binsz - zcount) * 138 / 100 + 1; uint8_t buf[MAX_B58ENC_LENGTH]; ASSERT(size <= MAX_B58ENC_LENGTH); - memset(buf, 0, sizeof(buf)); + explicit_bzero(buf, sizeof(buf)); for (i = zcount, high = size - 1; i < binsz; ++i, high = j) { for (carry = bin[i], j = size - 1; (j > high) || carry; --j) { @@ -223,7 +223,7 @@ uint32_t compressed_public_key_to_wif(const uint8_t *publicKey, ASSERT(outLength >= 40); uint8_t temp[37]; - memset(temp, 0, sizeof(temp)); + explicit_bzero(temp, sizeof(temp)); memcpy(temp, publicKey, 33); uint8_t check[20]; @@ -232,7 +232,7 @@ uint32_t compressed_public_key_to_wif(const uint8_t *publicKey, cx_hash(&riprip.header, CX_LAST, temp, 33, check, sizeof(check)); memcpy(temp + 33, check, 4); - memset(out, 0, outLength); + explicit_bzero(out, outLength); out[0] = 'F'; out[1] = 'I'; out[2] = 'O'; diff --git a/src/getPublicKey.c b/src/getPublicKey.c index 55deb937..aa5357c1 100644 --- a/src/getPublicKey.c +++ b/src/getPublicKey.c @@ -14,24 +14,6 @@ static ins_get_key_context_t* ctx = &(instructionState.getKeyContext); // it should be set to this value at the beginning and after a UI state machine is finished static int UI_STEP_NONE = 0; -static inline void CHECK_STAGE(get_key_stage_t expected) { - VALIDATE(ctx->stage == expected, ERR_INVALID_STATE); -} - -static void advanceStage() { - TRACE("Advancing from stage: %d", ctx->stage); - - switch (ctx->stage) { - case GET_KEY_STAGE_INIT: - ctx->stage = GET_KEY_STAGE_NONE; - ui_idle(); // we are done with this key export - break; - - default: - ASSERT(false); - } -} - // ============================== Derivation and UI state machine ============================== enum { @@ -77,7 +59,7 @@ static void getPublicKey_ui_runStep() { TRACE("Export done."); - advanceStage(); + ui_idle(); // we are done with this key export } UI_STEP_END(GET_KEY_UI_STEP_INVALID); } @@ -128,10 +110,8 @@ void getPublicKey_handleAPDU(uint8_t p1, VALIDATE(p2 == P2_UNUSED, ERR_INVALID_REQUEST_PARAMETERS); explicit_bzero(ctx, SIZEOF(*ctx)); - ctx->stage = GET_KEY_STAGE_INIT; ctx->ui_step = UI_STEP_NONE; - CHECK_STAGE(GET_KEY_STAGE_INIT); ASSERT(wireDataSize < BUFFER_SIZE_PARANOIA); { diff --git a/src/getPublicKey.h b/src/getPublicKey.h index 8c53d06f..35f36959 100644 --- a/src/getPublicKey.h +++ b/src/getPublicKey.h @@ -8,18 +8,12 @@ #define MAX_PUBLIC_KEYS 1000 -typedef enum { - GET_KEY_STAGE_NONE = 0, - GET_KEY_STAGE_INIT = 20, -} get_key_stage_t; - typedef enum { P1_SHOW_PUBKEY = 1, P1_DO_NOT_SHOW_PUBKEY = 2, } get_key_p1_t; typedef struct { - get_key_stage_t stage; get_key_p1_t show_or_not; bip44_path_t pathSpec; diff --git a/src/signTransaction.c b/src/signTransaction.c index 6b8495be..f706e289 100644 --- a/src/signTransaction.c +++ b/src/signTransaction.c @@ -173,10 +173,10 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, TRACE_STACK_USAGE(); snprintf(ctx->key, MAX_DISPLAY_KEY_LENGTH, "Chain"); switch (network) { -#define CASE(NETWORK, CHAIN_STRING) \ - case NETWORK: { \ - snprintf(ctx->value, MAX_DISPLAY_KEY_LENGTH, CHAIN_STRING); \ - break; \ +#define CASE(NETWORK, CHAIN_STRING) \ + case NETWORK: { \ + snprintf(ctx->value, MAX_DISPLAY_VALUE_LENGTH, CHAIN_STRING); \ + break; \ } CASE(NETWORK_MAINNET, "Mainnet"); CASE(NETWORK_TESTNET, "Testnet"); @@ -204,19 +204,11 @@ __noinline_due_to_stack__ void signTx_handleInitAPDU(uint8_t p2, policy = policyForSignTxInit(&ctx->wittnessPath); TRACE("Policy: %d", (int) policy); ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_SHOW_BEFORE_RESPONSE, HANDLE_SIMPLE_STEP_DISPLAY_DETAILS); - default: - THROW(ERR_NOT_IMPLEMENTED); -#undef CASE - } + // select UI step + if (policy == POLICY_SHOW_BEFORE_RESPONSE) { + ctx->ui_step = HANDLE_SIMPLE_STEP_DISPLAY_DETAILS; + } else { + THROW(ERR_NOT_IMPLEMENTED); } } @@ -296,7 +288,7 @@ __noinline_due_to_stack__ void signTx_handleShowMessageAPDU( struct { uint8_t displayValueLen; uint8_t displayValue[MAX_DISPLAY_VALUE_LENGTH]; - }* constData2 = (void*) constDataBuffer + 1 + constData->displayKeyLen; + }* constData2 = (void*) (constDataBuffer + 1 + constData->displayKeyLen); VALIDATE(constData2->displayValueLen < MAX_DISPLAY_VALUE_LENGTH - 1, ERR_INVALID_DATA); VALIDATE(constSize == 2 + constData->displayKeyLen + constData2->displayValueLen, ERR_INVALID_DATA); @@ -848,19 +840,11 @@ __noinline_due_to_stack__ void signTx_handleEndDHEncodingAPDU( policy = policyForSignTxDHEnd(); TRACE("Policy: %d", (int) policy); ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_DH_END_STEP_CONFIRM); - default: - THROW(ERR_NOT_IMPLEMENTED); -#undef CASE - } + // select UI step + if (policy == POLICY_PROMPT_BEFORE_RESPONSE) { + ctx->ui_step = HANDLE_DH_END_STEP_CONFIRM; + } else { + THROW(ERR_NOT_IMPLEMENTED); } } } @@ -952,19 +936,11 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( policy = policyForSignTxFinish(); TRACE("Policy: %d", (int) policy); ENSURE_NOT_DENIED(policy); - { - // select UI steps - switch (policy) { -#define CASE(POLICY, UI_STEP) \ - case POLICY: { \ - ctx->ui_step = UI_STEP; \ - break; \ - } - CASE(POLICY_PROMPT_BEFORE_RESPONSE, HANDLE_FINISH_STEP_DISPLAY_DETAILS); - default: - THROW(ERR_NOT_IMPLEMENTED); -#undef CASE - } + // select UI step + if (policy == POLICY_PROMPT_BEFORE_RESPONSE) { + ctx->ui_step = HANDLE_FINISH_STEP_DISPLAY_DETAILS; + } else { + THROW(ERR_NOT_IMPLEMENTED); } } @@ -1032,7 +1008,7 @@ __noinline_due_to_stack__ void signTx_handleFinishAPDU( } } FINALLY { - memset(&privateKey, 0, sizeof(privateKey)); + explicit_bzero(&privateKey, sizeof(privateKey)); } } END_TRY; From d4cf90eb722f4d94a3395bccac0ec6319b3d43ef Mon Sep 17 00:00:00 2001 From: Robert Lukotka Date: Wed, 6 Sep 2023 10:10:04 +0200 Subject: [PATCH 81/83] Bump containers --- .github/workflows/ci-workflow.yml | 8 ++-- MakefileContainer.mk | 2 +- MakefileSpeculos.mk | 2 +- MakefileTest.mk | 2 +- .../snapshots/decodeMessage/nanosp.01.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanosp.02.png | Bin 0 -> 346 bytes .../snapshots/decodeMessage/nanosp.03.png | Bin 0 -> 592 bytes .../snapshots/decodeMessage/nanosp.04.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanosp.05.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanosp.06.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanosp.07.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanosp.08.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanosp.09.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanosp.10.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanosp.11.png | Bin 0 -> 346 bytes .../snapshots/decodeMessage/nanosp.12.png | Bin 0 -> 592 bytes .../snapshots/decodeMessage/nanosp.13.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanosp.14.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanosp.15.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanosp.16.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanosp.17.png | Bin 0 -> 380 bytes .../snapshots/decodeMessage/nanosp.18.png | Bin 0 -> 345 bytes .../snapshots/decodeMessage/nanosp.19.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanosp.20.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanosp.21.png | Bin 0 -> 346 bytes .../snapshots/decodeMessage/nanosp.22.png | Bin 0 -> 724 bytes .../snapshots/decodeMessage/nanosp.23.png | Bin 0 -> 539 bytes .../snapshots/decodeMessage/nanosp.24.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanosp.25.png | Bin 0 -> 544 bytes .../snapshots/decodeMessage/nanosp.26.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanosp.27.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanosp.28.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanosp.29.png | Bin 0 -> 330 bytes .../snapshots/decodeMessage/nanosp.30.png | Bin 0 -> 308 bytes .../snapshots/decodeMessage/nanosp.31.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanosp.32.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanosp.33.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanosp.34.png | Bin 0 -> 346 bytes .../snapshots/decodeMessage/nanosp.35.png | Bin 0 -> 724 bytes .../snapshots/decodeMessage/nanosp.36.png | Bin 0 -> 539 bytes .../snapshots/decodeMessage/nanosp.37.png | Bin 0 -> 760 bytes .../snapshots/decodeMessage/nanosp.38.png | Bin 0 -> 743 bytes .../snapshots/decodeMessage/nanosp.39.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanosp.40.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanosp.41.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanosp.42.png | Bin 0 -> 330 bytes .../snapshots/decodeMessage/nanosp.43.png | Bin 0 -> 308 bytes .../snapshots/decodeMessage/nanosp.44.png | Bin 0 -> 480 bytes .../snapshots/decodeMessage/nanosp.45.png | Bin 0 -> 555 bytes .../snapshots/decodeMessage/nanosp.46.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanosp.47.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanosp.48.png | Bin 0 -> 346 bytes .../snapshots/decodeMessage/nanosp.49.png | Bin 0 -> 592 bytes .../snapshots/decodeMessage/nanosp.50.png | Bin 0 -> 557 bytes .../snapshots/decodeMessage/nanosp.51.png | Bin 0 -> 358 bytes .../snapshots/decodeMessage/nanosp.52.png | Bin 0 -> 385 bytes .../snapshots/decodeMessage/nanosp.53.png | Bin 0 -> 393 bytes .../snapshots/decodeMessage/nanosp.54.png | Bin 0 -> 347 bytes .../snapshots/decodeMessage/nanosp.55.png | Bin 0 -> 455 bytes .../snapshots/decodeMessage/nanosp.56.png | Bin 0 -> 390 bytes .../snapshots/decodeMessage/nanosp.57.png | Bin 0 -> 405 bytes .../snapshots/decodeMessage/nanox.01.png | Bin 405 -> 403 bytes .../snapshots/decodeMessage/nanox.02.png | Bin 346 -> 345 bytes .../snapshots/decodeMessage/nanox.03.png | Bin 592 -> 591 bytes .../snapshots/decodeMessage/nanox.04.png | Bin 557 -> 562 bytes .../snapshots/decodeMessage/nanox.05.png | Bin 358 -> 358 bytes .../snapshots/decodeMessage/nanox.10.png | Bin 405 -> 403 bytes .../snapshots/decodeMessage/nanox.11.png | Bin 346 -> 345 bytes .../snapshots/decodeMessage/nanox.12.png | Bin 592 -> 591 bytes .../snapshots/decodeMessage/nanox.13.png | Bin 557 -> 562 bytes .../snapshots/decodeMessage/nanox.14.png | Bin 358 -> 358 bytes .../snapshots/decodeMessage/nanox.20.png | Bin 405 -> 403 bytes .../snapshots/decodeMessage/nanox.21.png | Bin 346 -> 345 bytes .../snapshots/decodeMessage/nanox.22.png | Bin 724 -> 723 bytes .../snapshots/decodeMessage/nanox.23.png | Bin 539 -> 538 bytes .../snapshots/decodeMessage/nanox.24.png | Bin 557 -> 562 bytes .../snapshots/decodeMessage/nanox.25.png | Bin 544 -> 547 bytes .../snapshots/decodeMessage/nanox.26.png | Bin 358 -> 358 bytes .../snapshots/decodeMessage/nanox.30.png | Bin 308 -> 308 bytes .../snapshots/decodeMessage/nanox.33.png | Bin 405 -> 403 bytes .../snapshots/decodeMessage/nanox.34.png | Bin 346 -> 345 bytes .../snapshots/decodeMessage/nanox.35.png | Bin 724 -> 723 bytes .../snapshots/decodeMessage/nanox.36.png | Bin 539 -> 538 bytes .../snapshots/decodeMessage/nanox.37.png | Bin 760 -> 756 bytes .../snapshots/decodeMessage/nanox.38.png | Bin 743 -> 745 bytes .../snapshots/decodeMessage/nanox.39.png | Bin 358 -> 358 bytes .../snapshots/decodeMessage/nanox.43.png | Bin 308 -> 308 bytes .../snapshots/decodeMessage/nanox.44.png | Bin 480 -> 479 bytes .../snapshots/decodeMessage/nanox.45.png | Bin 555 -> 552 bytes .../snapshots/decodeMessage/nanox.47.png | Bin 405 -> 403 bytes .../snapshots/decodeMessage/nanox.48.png | Bin 346 -> 345 bytes .../snapshots/decodeMessage/nanox.49.png | Bin 592 -> 591 bytes .../snapshots/decodeMessage/nanox.50.png | Bin 557 -> 562 bytes .../snapshots/decodeMessage/nanox.51.png | Bin 358 -> 358 bytes .../snapshots/decodeMessage/nanox.56.png | Bin 390 -> 389 bytes .../snapshots/decodeMessage/nanox.57.png | Bin 405 -> 403 bytes .../snapshots/getPublicKey/nanosp.01.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanosp.02.png | Bin 0 -> 936 bytes .../snapshots/getPublicKey/nanosp.03.png | Bin 0 -> 476 bytes .../snapshots/getPublicKey/nanosp.04.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanosp.05.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanosp.06.png | Bin 0 -> 936 bytes .../snapshots/getPublicKey/nanosp.07.png | Bin 0 -> 476 bytes .../snapshots/getPublicKey/nanosp.08.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanosp.09.png | Bin 0 -> 390 bytes .../snapshots/getPublicKey/nanosp.10.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanosp.11.png | Bin 0 -> 498 bytes .../snapshots/getPublicKey/nanosp.12.png | Bin 0 -> 507 bytes .../snapshots/getPublicKey/nanosp.13.png | Bin 0 -> 980 bytes .../snapshots/getPublicKey/nanosp.14.png | Bin 0 -> 427 bytes .../snapshots/getPublicKey/nanosp.15.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanosp.16.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanosp.17.png | Bin 0 -> 498 bytes .../snapshots/getPublicKey/nanosp.18.png | Bin 0 -> 507 bytes .../snapshots/getPublicKey/nanosp.19.png | Bin 0 -> 980 bytes .../snapshots/getPublicKey/nanosp.20.png | Bin 0 -> 427 bytes .../snapshots/getPublicKey/nanosp.21.png | Bin 0 -> 553 bytes .../snapshots/getPublicKey/nanosp.22.png | Bin 0 -> 405 bytes .../snapshots/getPublicKey/nanox.01.png | Bin 405 -> 403 bytes .../snapshots/getPublicKey/nanox.02.png | Bin 936 -> 940 bytes .../snapshots/getPublicKey/nanox.03.png | Bin 476 -> 465 bytes .../snapshots/getPublicKey/nanox.04.png | Bin 553 -> 553 bytes .../snapshots/getPublicKey/nanox.05.png | Bin 405 -> 403 bytes .../snapshots/getPublicKey/nanox.06.png | Bin 936 -> 940 bytes .../snapshots/getPublicKey/nanox.07.png | Bin 476 -> 465 bytes .../snapshots/getPublicKey/nanox.08.png | Bin 553 -> 553 bytes .../snapshots/getPublicKey/nanox.09.png | Bin 390 -> 389 bytes .../snapshots/getPublicKey/nanox.10.png | Bin 405 -> 403 bytes .../snapshots/getPublicKey/nanox.12.png | Bin 507 -> 504 bytes .../snapshots/getPublicKey/nanox.13.png | Bin 980 -> 979 bytes .../snapshots/getPublicKey/nanox.14.png | Bin 427 -> 426 bytes .../snapshots/getPublicKey/nanox.15.png | Bin 553 -> 553 bytes .../snapshots/getPublicKey/nanox.16.png | Bin 405 -> 403 bytes .../snapshots/getPublicKey/nanox.18.png | Bin 507 -> 504 bytes .../snapshots/getPublicKey/nanox.19.png | Bin 980 -> 979 bytes .../snapshots/getPublicKey/nanox.20.png | Bin 427 -> 426 bytes .../snapshots/getPublicKey/nanox.21.png | Bin 553 -> 553 bytes .../snapshots/getPublicKey/nanox.22.png | Bin 405 -> 403 bytes .../snapshots/getSerial/nanosp.01.png | Bin 0 -> 405 bytes .../snapshots/getSerial/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionAddaddress/nanosp.03.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanosp.04.png | Bin 0 -> 950 bytes .../signTransactionAddaddress/nanosp.05.png | Bin 0 -> 409 bytes .../signTransactionAddaddress/nanosp.06.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanosp.07.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanosp.08.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanosp.09.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanosp.10.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanosp.11.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanosp.12.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanosp.13.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanosp.14.png | Bin 0 -> 950 bytes .../signTransactionAddaddress/nanosp.15.png | Bin 0 -> 409 bytes .../signTransactionAddaddress/nanosp.16.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanosp.17.png | Bin 0 -> 604 bytes .../signTransactionAddaddress/nanosp.18.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanosp.19.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanosp.20.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanosp.21.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanosp.22.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanosp.23.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanosp.24.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanosp.25.png | Bin 0 -> 950 bytes .../signTransactionAddaddress/nanosp.26.png | Bin 0 -> 409 bytes .../signTransactionAddaddress/nanosp.27.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanosp.28.png | Bin 0 -> 437 bytes .../signTransactionAddaddress/nanosp.29.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanosp.30.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanosp.31.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanosp.32.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanosp.33.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanosp.34.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanosp.35.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanosp.36.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanosp.37.png | Bin 0 -> 950 bytes .../signTransactionAddaddress/nanosp.38.png | Bin 0 -> 409 bytes .../signTransactionAddaddress/nanosp.39.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanosp.40.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanosp.41.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanosp.42.png | Bin 0 -> 569 bytes .../signTransactionAddaddress/nanosp.43.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanosp.44.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanosp.45.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanosp.46.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanosp.47.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanosp.48.png | Bin 0 -> 379 bytes .../signTransactionAddaddress/nanosp.49.png | Bin 0 -> 407 bytes .../signTransactionAddaddress/nanosp.50.png | Bin 0 -> 950 bytes .../signTransactionAddaddress/nanosp.51.png | Bin 0 -> 409 bytes .../signTransactionAddaddress/nanosp.52.png | Bin 0 -> 575 bytes .../signTransactionAddaddress/nanosp.53.png | Bin 0 -> 595 bytes .../signTransactionAddaddress/nanosp.54.png | Bin 0 -> 578 bytes .../signTransactionAddaddress/nanosp.55.png | Bin 0 -> 569 bytes .../signTransactionAddaddress/nanosp.56.png | Bin 0 -> 587 bytes .../signTransactionAddaddress/nanosp.57.png | Bin 0 -> 462 bytes .../signTransactionAddaddress/nanosp.58.png | Bin 0 -> 937 bytes .../signTransactionAddaddress/nanosp.59.png | Bin 0 -> 472 bytes .../signTransactionAddaddress/nanosp.60.png | Bin 0 -> 476 bytes .../signTransactionAddaddress/nanosp.61.png | Bin 0 -> 405 bytes .../signTransactionAddaddress/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanox.03.png | Bin 407 -> 407 bytes .../signTransactionAddaddress/nanox.04.png | Bin 950 -> 957 bytes .../signTransactionAddaddress/nanox.05.png | Bin 409 -> 409 bytes .../signTransactionAddaddress/nanox.06.png | Bin 575 -> 572 bytes .../signTransactionAddaddress/nanox.08.png | Bin 937 -> 941 bytes .../signTransactionAddaddress/nanox.09.png | Bin 472 -> 462 bytes .../signTransactionAddaddress/nanox.10.png | Bin 476 -> 471 bytes .../signTransactionAddaddress/nanox.11.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanox.13.png | Bin 407 -> 407 bytes .../signTransactionAddaddress/nanox.14.png | Bin 950 -> 957 bytes .../signTransactionAddaddress/nanox.15.png | Bin 409 -> 409 bytes .../signTransactionAddaddress/nanox.16.png | Bin 575 -> 572 bytes .../signTransactionAddaddress/nanox.17.png | Bin 604 -> 605 bytes .../signTransactionAddaddress/nanox.19.png | Bin 937 -> 941 bytes .../signTransactionAddaddress/nanox.20.png | Bin 472 -> 462 bytes .../signTransactionAddaddress/nanox.21.png | Bin 476 -> 471 bytes .../signTransactionAddaddress/nanox.22.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanox.24.png | Bin 407 -> 407 bytes .../signTransactionAddaddress/nanox.25.png | Bin 950 -> 957 bytes .../signTransactionAddaddress/nanox.26.png | Bin 409 -> 409 bytes .../signTransactionAddaddress/nanox.27.png | Bin 575 -> 572 bytes .../signTransactionAddaddress/nanox.28.png | Bin 437 -> 435 bytes .../signTransactionAddaddress/nanox.29.png | Bin 578 -> 574 bytes .../signTransactionAddaddress/nanox.31.png | Bin 937 -> 941 bytes .../signTransactionAddaddress/nanox.32.png | Bin 472 -> 462 bytes .../signTransactionAddaddress/nanox.33.png | Bin 476 -> 471 bytes .../signTransactionAddaddress/nanox.34.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanox.36.png | Bin 407 -> 407 bytes .../signTransactionAddaddress/nanox.37.png | Bin 950 -> 957 bytes .../signTransactionAddaddress/nanox.38.png | Bin 409 -> 409 bytes .../signTransactionAddaddress/nanox.39.png | Bin 575 -> 572 bytes .../signTransactionAddaddress/nanox.40.png | Bin 595 -> 593 bytes .../signTransactionAddaddress/nanox.41.png | Bin 578 -> 574 bytes .../signTransactionAddaddress/nanox.42.png | Bin 569 -> 566 bytes .../signTransactionAddaddress/nanox.44.png | Bin 937 -> 941 bytes .../signTransactionAddaddress/nanox.45.png | Bin 472 -> 462 bytes .../signTransactionAddaddress/nanox.46.png | Bin 476 -> 471 bytes .../signTransactionAddaddress/nanox.47.png | Bin 405 -> 403 bytes .../signTransactionAddaddress/nanox.49.png | Bin 407 -> 407 bytes .../signTransactionAddaddress/nanox.50.png | Bin 950 -> 957 bytes .../signTransactionAddaddress/nanox.51.png | Bin 409 -> 409 bytes .../signTransactionAddaddress/nanox.52.png | Bin 575 -> 572 bytes .../signTransactionAddaddress/nanox.53.png | Bin 595 -> 593 bytes .../signTransactionAddaddress/nanox.54.png | Bin 578 -> 574 bytes .../signTransactionAddaddress/nanox.55.png | Bin 569 -> 566 bytes .../signTransactionAddaddress/nanox.56.png | Bin 587 -> 585 bytes .../signTransactionAddaddress/nanox.58.png | Bin 937 -> 941 bytes .../signTransactionAddaddress/nanox.59.png | Bin 472 -> 462 bytes .../signTransactionAddaddress/nanox.60.png | Bin 476 -> 471 bytes .../signTransactionAddaddress/nanox.61.png | Bin 405 -> 403 bytes .../signTransactionAddnft/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionAddnft/nanosp.03.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanosp.04.png | Bin 0 -> 950 bytes .../signTransactionAddnft/nanosp.05.png | Bin 0 -> 409 bytes .../signTransactionAddnft/nanosp.06.png | Bin 0 -> 329 bytes .../signTransactionAddnft/nanosp.07.png | Bin 0 -> 376 bytes .../signTransactionAddnft/nanosp.08.png | Bin 0 -> 391 bytes .../signTransactionAddnft/nanosp.09.png | Bin 0 -> 403 bytes .../signTransactionAddnft/nanosp.10.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanosp.11.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanosp.12.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanosp.13.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanosp.14.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanosp.15.png | Bin 0 -> 379 bytes .../signTransactionAddnft/nanosp.16.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanosp.17.png | Bin 0 -> 950 bytes .../signTransactionAddnft/nanosp.18.png | Bin 0 -> 409 bytes .../signTransactionAddnft/nanosp.19.png | Bin 0 -> 329 bytes .../signTransactionAddnft/nanosp.20.png | Bin 0 -> 376 bytes .../signTransactionAddnft/nanosp.21.png | Bin 0 -> 391 bytes .../signTransactionAddnft/nanosp.22.png | Bin 0 -> 403 bytes .../signTransactionAddnft/nanosp.23.png | Bin 0 -> 341 bytes .../signTransactionAddnft/nanosp.24.png | Bin 0 -> 387 bytes .../signTransactionAddnft/nanosp.25.png | Bin 0 -> 425 bytes .../signTransactionAddnft/nanosp.26.png | Bin 0 -> 407 bytes .../signTransactionAddnft/nanosp.27.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanosp.28.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanosp.29.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanosp.30.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanosp.31.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanosp.32.png | Bin 0 -> 379 bytes .../signTransactionAddnft/nanosp.33.png | Bin 0 -> 397 bytes .../signTransactionAddnft/nanosp.34.png | Bin 0 -> 950 bytes .../signTransactionAddnft/nanosp.35.png | Bin 0 -> 409 bytes .../signTransactionAddnft/nanosp.36.png | Bin 0 -> 329 bytes .../signTransactionAddnft/nanosp.37.png | Bin 0 -> 376 bytes .../signTransactionAddnft/nanosp.38.png | Bin 0 -> 391 bytes .../signTransactionAddnft/nanosp.39.png | Bin 0 -> 403 bytes .../signTransactionAddnft/nanosp.40.png | Bin 0 -> 341 bytes .../signTransactionAddnft/nanosp.41.png | Bin 0 -> 387 bytes .../signTransactionAddnft/nanosp.42.png | Bin 0 -> 425 bytes .../signTransactionAddnft/nanosp.43.png | Bin 0 -> 407 bytes .../signTransactionAddnft/nanosp.44.png | Bin 0 -> 336 bytes .../signTransactionAddnft/nanosp.45.png | Bin 0 -> 384 bytes .../signTransactionAddnft/nanosp.46.png | Bin 0 -> 843 bytes .../signTransactionAddnft/nanosp.47.png | Bin 0 -> 525 bytes .../signTransactionAddnft/nanosp.48.png | Bin 0 -> 404 bytes .../signTransactionAddnft/nanosp.49.png | Bin 0 -> 462 bytes .../signTransactionAddnft/nanosp.50.png | Bin 0 -> 937 bytes .../signTransactionAddnft/nanosp.51.png | Bin 0 -> 472 bytes .../signTransactionAddnft/nanosp.52.png | Bin 0 -> 476 bytes .../signTransactionAddnft/nanosp.53.png | Bin 0 -> 405 bytes .../signTransactionAddnft/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionAddnft/nanox.04.png | Bin 950 -> 957 bytes .../signTransactionAddnft/nanox.05.png | Bin 409 -> 409 bytes .../signTransactionAddnft/nanox.06.png | Bin 329 -> 327 bytes .../signTransactionAddnft/nanox.08.png | Bin 391 -> 392 bytes .../signTransactionAddnft/nanox.11.png | Bin 937 -> 941 bytes .../signTransactionAddnft/nanox.12.png | Bin 472 -> 462 bytes .../signTransactionAddnft/nanox.13.png | Bin 476 -> 471 bytes .../signTransactionAddnft/nanox.14.png | Bin 405 -> 403 bytes .../signTransactionAddnft/nanox.17.png | Bin 950 -> 957 bytes .../signTransactionAddnft/nanox.18.png | Bin 409 -> 409 bytes .../signTransactionAddnft/nanox.19.png | Bin 329 -> 327 bytes .../signTransactionAddnft/nanox.21.png | Bin 391 -> 392 bytes .../signTransactionAddnft/nanox.23.png | Bin 341 -> 339 bytes .../signTransactionAddnft/nanox.25.png | Bin 425 -> 423 bytes .../signTransactionAddnft/nanox.28.png | Bin 937 -> 941 bytes .../signTransactionAddnft/nanox.29.png | Bin 472 -> 462 bytes .../signTransactionAddnft/nanox.30.png | Bin 476 -> 471 bytes .../signTransactionAddnft/nanox.31.png | Bin 405 -> 403 bytes .../signTransactionAddnft/nanox.34.png | Bin 950 -> 957 bytes .../signTransactionAddnft/nanox.35.png | Bin 409 -> 409 bytes .../signTransactionAddnft/nanox.36.png | Bin 329 -> 327 bytes .../signTransactionAddnft/nanox.38.png | Bin 391 -> 392 bytes .../signTransactionAddnft/nanox.40.png | Bin 341 -> 339 bytes .../signTransactionAddnft/nanox.42.png | Bin 425 -> 423 bytes .../signTransactionAddnft/nanox.44.png | Bin 336 -> 334 bytes .../signTransactionAddnft/nanox.46.png | Bin 843 -> 843 bytes .../signTransactionAddnft/nanox.47.png | Bin 525 -> 521 bytes .../signTransactionAddnft/nanox.50.png | Bin 937 -> 941 bytes .../signTransactionAddnft/nanox.51.png | Bin 472 -> 462 bytes .../signTransactionAddnft/nanox.52.png | Bin 476 -> 471 bytes .../signTransactionAddnft/nanox.53.png | Bin 405 -> 403 bytes .../signTransactionNewfundsreq/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionNewfundsreq/nanosp.03.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanosp.04.png | Bin 0 -> 539 bytes .../signTransactionNewfundsreq/nanosp.05.png | Bin 0 -> 540 bytes .../signTransactionNewfundsreq/nanosp.06.png | Bin 0 -> 392 bytes .../signTransactionNewfundsreq/nanosp.07.png | Bin 0 -> 580 bytes .../signTransactionNewfundsreq/nanosp.08.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanosp.09.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanosp.10.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanosp.11.png | Bin 0 -> 415 bytes .../signTransactionNewfundsreq/nanosp.12.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanosp.13.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanosp.14.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanosp.15.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanosp.16.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanosp.17.png | Bin 0 -> 379 bytes .../signTransactionNewfundsreq/nanosp.18.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanosp.19.png | Bin 0 -> 539 bytes .../signTransactionNewfundsreq/nanosp.20.png | Bin 0 -> 540 bytes .../signTransactionNewfundsreq/nanosp.21.png | Bin 0 -> 392 bytes .../signTransactionNewfundsreq/nanosp.22.png | Bin 0 -> 580 bytes .../signTransactionNewfundsreq/nanosp.23.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanosp.24.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanosp.25.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanosp.26.png | Bin 0 -> 415 bytes .../signTransactionNewfundsreq/nanosp.27.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanosp.28.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanosp.29.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanosp.30.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanosp.31.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanosp.32.png | Bin 0 -> 390 bytes .../signTransactionNewfundsreq/nanosp.33.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanosp.34.png | Bin 0 -> 539 bytes .../signTransactionNewfundsreq/nanosp.35.png | Bin 0 -> 540 bytes .../signTransactionNewfundsreq/nanosp.36.png | Bin 0 -> 392 bytes .../signTransactionNewfundsreq/nanosp.37.png | Bin 0 -> 580 bytes .../signTransactionNewfundsreq/nanosp.38.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanosp.39.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanosp.40.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanosp.41.png | Bin 0 -> 415 bytes .../signTransactionNewfundsreq/nanosp.42.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanosp.43.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanosp.44.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanosp.45.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanosp.46.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanosp.47.png | Bin 0 -> 379 bytes .../signTransactionNewfundsreq/nanosp.48.png | Bin 0 -> 451 bytes .../signTransactionNewfundsreq/nanosp.49.png | Bin 0 -> 539 bytes .../signTransactionNewfundsreq/nanosp.50.png | Bin 0 -> 540 bytes .../signTransactionNewfundsreq/nanosp.51.png | Bin 0 -> 392 bytes .../signTransactionNewfundsreq/nanosp.52.png | Bin 0 -> 580 bytes .../signTransactionNewfundsreq/nanosp.53.png | Bin 0 -> 445 bytes .../signTransactionNewfundsreq/nanosp.54.png | Bin 0 -> 376 bytes .../signTransactionNewfundsreq/nanosp.55.png | Bin 0 -> 382 bytes .../signTransactionNewfundsreq/nanosp.56.png | Bin 0 -> 415 bytes .../signTransactionNewfundsreq/nanosp.57.png | Bin 0 -> 462 bytes .../signTransactionNewfundsreq/nanosp.58.png | Bin 0 -> 937 bytes .../signTransactionNewfundsreq/nanosp.59.png | Bin 0 -> 472 bytes .../signTransactionNewfundsreq/nanosp.60.png | Bin 0 -> 476 bytes .../signTransactionNewfundsreq/nanosp.61.png | Bin 0 -> 405 bytes .../signTransactionNewfundsreq/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionNewfundsreq/nanox.03.png | Bin 451 -> 451 bytes .../signTransactionNewfundsreq/nanox.07.png | Bin 580 -> 581 bytes .../signTransactionNewfundsreq/nanox.08.png | Bin 445 -> 445 bytes .../signTransactionNewfundsreq/nanox.11.png | Bin 415 -> 415 bytes .../signTransactionNewfundsreq/nanox.13.png | Bin 937 -> 941 bytes .../signTransactionNewfundsreq/nanox.14.png | Bin 472 -> 462 bytes .../signTransactionNewfundsreq/nanox.15.png | Bin 476 -> 471 bytes .../signTransactionNewfundsreq/nanox.16.png | Bin 405 -> 403 bytes .../signTransactionNewfundsreq/nanox.18.png | Bin 451 -> 451 bytes .../signTransactionNewfundsreq/nanox.22.png | Bin 580 -> 581 bytes .../signTransactionNewfundsreq/nanox.23.png | Bin 445 -> 445 bytes .../signTransactionNewfundsreq/nanox.26.png | Bin 415 -> 415 bytes .../signTransactionNewfundsreq/nanox.28.png | Bin 937 -> 941 bytes .../signTransactionNewfundsreq/nanox.29.png | Bin 472 -> 462 bytes .../signTransactionNewfundsreq/nanox.30.png | Bin 476 -> 471 bytes .../signTransactionNewfundsreq/nanox.31.png | Bin 405 -> 403 bytes .../signTransactionNewfundsreq/nanox.33.png | Bin 451 -> 451 bytes .../signTransactionNewfundsreq/nanox.37.png | Bin 580 -> 581 bytes .../signTransactionNewfundsreq/nanox.38.png | Bin 445 -> 445 bytes .../signTransactionNewfundsreq/nanox.41.png | Bin 415 -> 415 bytes .../signTransactionNewfundsreq/nanox.43.png | Bin 937 -> 941 bytes .../signTransactionNewfundsreq/nanox.44.png | Bin 472 -> 462 bytes .../signTransactionNewfundsreq/nanox.45.png | Bin 476 -> 471 bytes .../signTransactionNewfundsreq/nanox.46.png | Bin 405 -> 403 bytes .../signTransactionNewfundsreq/nanox.48.png | Bin 451 -> 451 bytes .../signTransactionNewfundsreq/nanox.52.png | Bin 580 -> 581 bytes .../signTransactionNewfundsreq/nanox.53.png | Bin 445 -> 445 bytes .../signTransactionNewfundsreq/nanox.56.png | Bin 415 -> 415 bytes .../signTransactionNewfundsreq/nanox.58.png | Bin 937 -> 941 bytes .../signTransactionNewfundsreq/nanox.59.png | Bin 472 -> 462 bytes .../signTransactionNewfundsreq/nanox.60.png | Bin 476 -> 471 bytes .../signTransactionNewfundsreq/nanox.61.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.03.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.04.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.05.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.06.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.07.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.08.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.09.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.10.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.100.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.101.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.102.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.103.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.104.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.105.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.106.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.107.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.108.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.109.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.11.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.110.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.111.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.112.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.113.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.114.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.115.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.116.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.117.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.118.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.119.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.12.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.120.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.121.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.122.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.123.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.124.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.125.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.126.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.127.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.128.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.129.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.13.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.130.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.131.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.132.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.133.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.134.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.135.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.136.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.137.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.138.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.139.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.14.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.140.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.141.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.142.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.143.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.144.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.145.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.146.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.147.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.148.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.149.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.15.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.150.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.151.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.152.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.153.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.154.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.155.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.156.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.157.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.158.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.159.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.16.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.160.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.161.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.162.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.163.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.164.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.165.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.166.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.167.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.168.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.169.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.17.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.170.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.171.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.172.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.173.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.174.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.175.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.176.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.177.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.178.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.179.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.18.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.180.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.181.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.182.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.183.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.184.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.185.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.186.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.187.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.188.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.189.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.19.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.190.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.191.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.192.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.193.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.194.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.195.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.196.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.197.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.198.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.199.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.20.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.200.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.201.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.202.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.203.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.204.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.205.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.206.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.207.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.208.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.209.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.21.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.210.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.211.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.212.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.213.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.214.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.215.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.216.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.217.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.218.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.219.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.22.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.220.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.221.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.222.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.223.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.224.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.225.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.226.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.227.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.228.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.229.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.23.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.230.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.231.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.232.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.233.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.234.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.235.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.236.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.237.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.238.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.239.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.24.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.240.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.241.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.242.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.243.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.244.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.245.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.246.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.247.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.248.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.249.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.25.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.250.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.251.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.252.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.253.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.254.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.255.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.256.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.257.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.258.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.259.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.26.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.260.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.261.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.262.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.263.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.264.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.265.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.266.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.267.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.268.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.269.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.27.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.270.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.271.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.272.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.273.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.274.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.275.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.276.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.277.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.278.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.279.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.28.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.280.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.281.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.282.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.283.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.284.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.285.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.286.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.287.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.288.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.289.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.29.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.290.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.291.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.292.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.293.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.294.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.295.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.296.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.297.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.298.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.299.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.30.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.300.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.301.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.302.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.303.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.304.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.305.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.306.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.307.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.308.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.309.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.31.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.310.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.311.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.312.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.313.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.314.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.315.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.316.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.317.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.318.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.319.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.32.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.320.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.321.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.322.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.323.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.324.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.325.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.326.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.327.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.328.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.329.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.33.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.330.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.331.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.332.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.333.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.334.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.335.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.336.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.337.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.338.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.339.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.34.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.340.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.341.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.342.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.343.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.344.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.345.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.346.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.347.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.348.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.349.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.35.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.350.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.351.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.352.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.353.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.354.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.355.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.356.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.357.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.358.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.359.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.36.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.360.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.361.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.362.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.363.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.364.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.365.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.366.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.367.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.368.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.369.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.37.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.370.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.371.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.372.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.373.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.374.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.375.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.376.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.377.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.378.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.379.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.38.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.380.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.381.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.382.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.383.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.384.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.385.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.386.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.387.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.388.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.389.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.39.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.390.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.391.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.392.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.393.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.394.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.395.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.396.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.397.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.398.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.399.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.40.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.400.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.401.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.402.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.403.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.404.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.405.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.406.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.407.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.408.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.409.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.41.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.410.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.411.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.412.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.413.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.414.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.415.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.416.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.417.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.418.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.419.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.42.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.420.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.421.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.422.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.423.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.424.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.425.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.426.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.427.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.428.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.429.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.43.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.430.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.431.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.432.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.433.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.434.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.435.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.436.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.437.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.438.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.439.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.44.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.440.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.441.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.442.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.443.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.444.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.445.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.446.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.447.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.448.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.449.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.45.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.450.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.451.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.452.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.453.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.454.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.455.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.456.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.457.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.458.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.459.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.46.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.460.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.461.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.462.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.463.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.464.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.465.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.466.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.467.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.468.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.469.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.47.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.470.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.471.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.472.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.473.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.474.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.475.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.476.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.477.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.478.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.479.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.48.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.480.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.481.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.482.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.483.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.484.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.485.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.486.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.487.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.488.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.489.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.49.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.490.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.491.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.492.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.493.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.494.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.495.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.496.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.497.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.498.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.499.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.50.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.500.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.501.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.502.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.503.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.504.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.505.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.506.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.507.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.508.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.509.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.51.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.510.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.511.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.512.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.513.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.514.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.515.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.516.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.517.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.518.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.519.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.52.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.520.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.521.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.522.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.523.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.524.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.525.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.526.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.527.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.528.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.529.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.53.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.530.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.531.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.532.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.533.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.534.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.535.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.536.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.537.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.538.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.539.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.54.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.540.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.541.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.542.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.543.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.544.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.545.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.546.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.547.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.548.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.549.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.55.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.550.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.551.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.552.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.553.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.554.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.555.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.556.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.557.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.558.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.559.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.56.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.560.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.561.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.562.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.563.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.564.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.565.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.566.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.567.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.568.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.569.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.57.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.570.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.571.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.572.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.573.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.574.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.575.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.576.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.577.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.578.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.579.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.58.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.580.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.581.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.582.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.583.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.584.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.585.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.586.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.587.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.588.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.589.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.59.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.590.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.591.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.592.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.593.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.594.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.595.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.596.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.597.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.598.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.599.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.60.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.600.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.601.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.602.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.603.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.604.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.605.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.606.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.607.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.608.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.609.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.61.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.610.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.611.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.612.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.613.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.614.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.615.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.616.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.617.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.618.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.619.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.62.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.620.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.621.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.622.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.623.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.624.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.625.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.626.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.627.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.628.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.629.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.63.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.630.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.631.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.632.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.633.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.634.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.635.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.636.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.637.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.638.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.639.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.64.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.640.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.641.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.642.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.643.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.644.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.645.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.646.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.647.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.648.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.649.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.65.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.650.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.651.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.652.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.653.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.654.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.655.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.656.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.657.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.658.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.659.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.66.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.660.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.661.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.662.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.663.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.664.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.665.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.666.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.667.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.668.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.669.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.67.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.670.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.671.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.672.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.673.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.674.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.675.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.676.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.677.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.678.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.679.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.68.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.680.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.681.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.682.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.683.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.684.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.685.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.686.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.687.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.688.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.689.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.69.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.690.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.691.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.692.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.693.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.694.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.695.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.696.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.697.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.698.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.699.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.70.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.700.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.701.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.702.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.703.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.704.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.705.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.706.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.707.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.708.png | Bin 0 -> 381 bytes .../signTransactionOtherEosio/nanosp.709.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.71.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.710.png | Bin 0 -> 376 bytes .../signTransactionOtherEosio/nanosp.711.png | Bin 0 -> 398 bytes .../signTransactionOtherEosio/nanosp.712.png | Bin 0 -> 389 bytes .../signTransactionOtherEosio/nanosp.713.png | Bin 0 -> 395 bytes .../signTransactionOtherEosio/nanosp.714.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.715.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.716.png | Bin 0 -> 383 bytes .../signTransactionOtherEosio/nanosp.717.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.718.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.719.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.72.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.720.png | Bin 0 -> 396 bytes .../signTransactionOtherEosio/nanosp.721.png | Bin 0 -> 388 bytes .../signTransactionOtherEosio/nanosp.722.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.723.png | Bin 0 -> 410 bytes .../signTransactionOtherEosio/nanosp.724.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.725.png | Bin 0 -> 391 bytes .../signTransactionOtherEosio/nanosp.726.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.727.png | Bin 0 -> 392 bytes .../signTransactionOtherEosio/nanosp.728.png | Bin 0 -> 393 bytes .../signTransactionOtherEosio/nanosp.729.png | Bin 0 -> 387 bytes .../signTransactionOtherEosio/nanosp.73.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.730.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.731.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.732.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.733.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.734.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.735.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.736.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.737.png | Bin 0 -> 379 bytes .../signTransactionOtherEosio/nanosp.738.png | Bin 0 -> 412 bytes .../signTransactionOtherEosio/nanosp.739.png | Bin 0 -> 325 bytes .../signTransactionOtherEosio/nanosp.74.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.740.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.741.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.742.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.743.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.744.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.745.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.746.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.75.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.76.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.77.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.78.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.79.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.80.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.81.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.82.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.83.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.84.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanosp.85.png | Bin 0 -> 363 bytes .../signTransactionOtherEosio/nanosp.86.png | Bin 0 -> 950 bytes .../signTransactionOtherEosio/nanosp.87.png | Bin 0 -> 409 bytes .../signTransactionOtherEosio/nanosp.88.png | Bin 0 -> 462 bytes .../signTransactionOtherEosio/nanosp.89.png | Bin 0 -> 937 bytes .../signTransactionOtherEosio/nanosp.90.png | Bin 0 -> 472 bytes .../signTransactionOtherEosio/nanosp.91.png | Bin 0 -> 476 bytes .../signTransactionOtherEosio/nanosp.92.png | Bin 0 -> 405 bytes .../signTransactionOtherEosio/nanosp.93.png | Bin 0 -> 390 bytes .../signTransactionOtherEosio/nanosp.94.png | Bin 0 -> 510 bytes .../signTransactionOtherEosio/nanosp.95.png | Bin 0 -> 360 bytes .../signTransactionOtherEosio/nanosp.96.png | Bin 0 -> 374 bytes .../signTransactionOtherEosio/nanosp.97.png | Bin 0 -> 375 bytes .../signTransactionOtherEosio/nanosp.98.png | Bin 0 -> 380 bytes .../signTransactionOtherEosio/nanosp.99.png | Bin 0 -> 378 bytes .../signTransactionOtherEosio/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.05.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.06.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.08.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.09.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.10.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.103.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.104.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.106.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.107.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.108.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.109.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.11.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.121.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.122.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.124.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.125.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.126.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.127.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.140.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.141.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.143.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.144.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.145.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.146.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.16.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.160.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.161.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.163.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.164.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.165.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.166.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.17.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.181.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.182.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.184.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.185.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.186.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.187.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.19.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.20.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.203.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.204.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.206.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.207.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.208.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.209.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.21.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.22.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.226.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.227.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.229.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.230.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.231.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.232.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.250.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.251.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.253.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.254.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.255.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.256.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.275.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.276.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.278.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.279.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.28.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.280.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.281.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.29.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.301.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.302.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.304.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.305.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.306.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.307.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.31.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.32.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.328.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.329.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.33.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.331.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.332.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.333.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.334.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.34.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.356.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.357.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.359.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.360.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.361.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.362.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.385.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.386.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.388.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.389.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.390.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.391.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.41.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.415.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.416.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.418.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.419.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.42.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.420.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.421.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.44.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.446.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.447.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.449.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.45.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.450.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.451.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.452.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.46.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.47.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.478.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.479.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.481.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.482.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.483.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.484.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.511.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.512.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.514.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.515.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.516.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.517.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.545.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.546.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.548.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.549.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.55.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.550.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.551.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.56.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.58.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.580.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.581.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.583.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.584.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.585.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.586.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.59.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.60.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.61.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.616.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.617.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.619.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.620.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.621.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.622.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.653.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.654.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.656.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.657.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.658.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.659.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.691.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.692.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.694.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.695.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.696.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.697.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.70.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.71.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.73.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.730.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.731.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.733.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.734.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.735.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.736.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.74.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.740.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.741.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.743.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.744.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.745.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.746.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.75.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.76.png | Bin 405 -> 403 bytes .../signTransactionOtherEosio/nanox.86.png | Bin 950 -> 957 bytes .../signTransactionOtherEosio/nanox.87.png | Bin 409 -> 409 bytes .../signTransactionOtherEosio/nanox.89.png | Bin 937 -> 941 bytes .../signTransactionOtherEosio/nanox.90.png | Bin 472 -> 462 bytes .../signTransactionOtherEosio/nanox.91.png | Bin 476 -> 471 bytes .../signTransactionOtherEosio/nanox.92.png | Bin 405 -> 403 bytes .../nanosp.01.png | Bin 0 -> 405 bytes .../nanosp.02.png | Bin 0 -> 390 bytes .../nanosp.03.png | Bin 0 -> 544 bytes .../nanosp.04.png | Bin 0 -> 950 bytes .../nanosp.05.png | Bin 0 -> 409 bytes .../nanosp.06.png | Bin 0 -> 462 bytes .../nanosp.07.png | Bin 0 -> 937 bytes .../nanosp.08.png | Bin 0 -> 472 bytes .../nanosp.09.png | Bin 0 -> 476 bytes .../nanosp.10.png | Bin 0 -> 405 bytes .../nanosp.11.png | Bin 0 -> 390 bytes .../nanosp.12.png | Bin 0 -> 425 bytes .../nanosp.13.png | Bin 0 -> 950 bytes .../nanosp.14.png | Bin 0 -> 409 bytes .../nanosp.15.png | Bin 0 -> 460 bytes .../nanosp.16.png | Bin 0 -> 462 bytes .../nanosp.17.png | Bin 0 -> 937 bytes .../nanosp.18.png | Bin 0 -> 472 bytes .../nanosp.19.png | Bin 0 -> 476 bytes .../nanosp.20.png | Bin 0 -> 405 bytes .../nanosp.21.png | Bin 0 -> 390 bytes .../nanosp.22.png | Bin 0 -> 527 bytes .../nanosp.23.png | Bin 0 -> 950 bytes .../nanosp.24.png | Bin 0 -> 409 bytes .../nanosp.25.png | Bin 0 -> 515 bytes .../nanosp.26.png | Bin 0 -> 462 bytes .../nanosp.27.png | Bin 0 -> 937 bytes .../nanosp.28.png | Bin 0 -> 472 bytes .../nanosp.29.png | Bin 0 -> 476 bytes .../nanosp.30.png | Bin 0 -> 405 bytes .../nanosp.31.png | Bin 0 -> 390 bytes .../nanosp.32.png | Bin 0 -> 510 bytes .../nanosp.33.png | Bin 0 -> 950 bytes .../nanosp.34.png | Bin 0 -> 409 bytes .../nanosp.35.png | Bin 0 -> 515 bytes .../nanosp.36.png | Bin 0 -> 462 bytes .../nanosp.37.png | Bin 0 -> 937 bytes .../nanosp.38.png | Bin 0 -> 472 bytes .../nanosp.39.png | Bin 0 -> 476 bytes .../nanosp.40.png | Bin 0 -> 405 bytes .../nanosp.41.png | Bin 0 -> 379 bytes .../nanosp.42.png | Bin 0 -> 443 bytes .../nanosp.43.png | Bin 0 -> 419 bytes .../nanosp.44.png | Bin 0 -> 515 bytes .../nanosp.45.png | Bin 0 -> 462 bytes .../nanosp.46.png | Bin 0 -> 937 bytes .../nanosp.47.png | Bin 0 -> 472 bytes .../nanosp.48.png | Bin 0 -> 476 bytes .../nanosp.49.png | Bin 0 -> 405 bytes .../nanosp.50.png | Bin 0 -> 379 bytes .../nanosp.51.png | Bin 0 -> 449 bytes .../nanosp.52.png | Bin 0 -> 419 bytes .../nanosp.53.png | Bin 0 -> 462 bytes .../nanosp.54.png | Bin 0 -> 937 bytes .../nanosp.55.png | Bin 0 -> 472 bytes .../nanosp.56.png | Bin 0 -> 476 bytes .../nanosp.57.png | Bin 0 -> 405 bytes .../nanosp.58.png | Bin 0 -> 379 bytes .../nanosp.59.png | Bin 0 -> 598 bytes .../nanosp.60.png | Bin 0 -> 419 bytes .../nanosp.61.png | Bin 0 -> 347 bytes .../nanosp.62.png | Bin 0 -> 462 bytes .../nanosp.63.png | Bin 0 -> 937 bytes .../nanosp.64.png | Bin 0 -> 472 bytes .../nanosp.65.png | Bin 0 -> 476 bytes .../nanosp.66.png | Bin 0 -> 405 bytes .../nanosp.67.png | Bin 0 -> 390 bytes .../nanosp.68.png | Bin 0 -> 598 bytes .../nanosp.69.png | Bin 0 -> 419 bytes .../nanosp.70.png | Bin 0 -> 376 bytes .../nanosp.71.png | Bin 0 -> 462 bytes .../nanosp.72.png | Bin 0 -> 937 bytes .../nanosp.73.png | Bin 0 -> 472 bytes .../nanosp.74.png | Bin 0 -> 476 bytes .../nanosp.75.png | Bin 0 -> 405 bytes .../nanosp.76.png | Bin 0 -> 390 bytes .../nanosp.77.png | Bin 0 -> 410 bytes .../nanosp.78.png | Bin 0 -> 419 bytes .../nanosp.79.png | Bin 0 -> 544 bytes .../nanosp.80.png | Bin 0 -> 462 bytes .../nanosp.81.png | Bin 0 -> 937 bytes .../nanosp.82.png | Bin 0 -> 472 bytes .../nanosp.83.png | Bin 0 -> 476 bytes .../nanosp.84.png | Bin 0 -> 405 bytes .../nanosp.85.png | Bin 0 -> 390 bytes .../nanosp.86.png | Bin 0 -> 483 bytes .../nanosp.87.png | Bin 0 -> 950 bytes .../nanosp.88.png | Bin 0 -> 409 bytes .../nanosp.89.png | Bin 0 -> 462 bytes .../nanosp.90.png | Bin 0 -> 937 bytes .../nanosp.91.png | Bin 0 -> 472 bytes .../nanosp.92.png | Bin 0 -> 476 bytes .../nanosp.93.png | Bin 0 -> 405 bytes .../nanox.01.png | Bin 405 -> 403 bytes .../nanox.03.png | Bin 544 -> 541 bytes .../nanox.04.png | Bin 950 -> 957 bytes .../nanox.05.png | Bin 409 -> 409 bytes .../nanox.07.png | Bin 937 -> 941 bytes .../nanox.08.png | Bin 472 -> 462 bytes .../nanox.09.png | Bin 476 -> 471 bytes .../nanox.10.png | Bin 405 -> 403 bytes .../nanox.13.png | Bin 950 -> 957 bytes .../nanox.14.png | Bin 409 -> 409 bytes .../nanox.17.png | Bin 937 -> 941 bytes .../nanox.18.png | Bin 472 -> 462 bytes .../nanox.19.png | Bin 476 -> 471 bytes .../nanox.20.png | Bin 405 -> 403 bytes .../nanox.23.png | Bin 950 -> 957 bytes .../nanox.24.png | Bin 409 -> 409 bytes .../nanox.25.png | Bin 515 -> 517 bytes .../nanox.27.png | Bin 937 -> 941 bytes .../nanox.28.png | Bin 472 -> 462 bytes .../nanox.29.png | Bin 476 -> 471 bytes .../nanox.30.png | Bin 405 -> 403 bytes .../nanox.33.png | Bin 950 -> 957 bytes .../nanox.34.png | Bin 409 -> 409 bytes .../nanox.35.png | Bin 515 -> 517 bytes .../nanox.37.png | Bin 937 -> 941 bytes .../nanox.38.png | Bin 472 -> 462 bytes .../nanox.39.png | Bin 476 -> 471 bytes .../nanox.40.png | Bin 405 -> 403 bytes .../nanox.44.png | Bin 515 -> 517 bytes .../nanox.46.png | Bin 937 -> 941 bytes .../nanox.47.png | Bin 472 -> 462 bytes .../nanox.48.png | Bin 476 -> 471 bytes .../nanox.49.png | Bin 405 -> 403 bytes .../nanox.54.png | Bin 937 -> 941 bytes .../nanox.55.png | Bin 472 -> 462 bytes .../nanox.56.png | Bin 476 -> 471 bytes .../nanox.57.png | Bin 405 -> 403 bytes .../nanox.59.png | Bin 598 -> 601 bytes .../nanox.63.png | Bin 937 -> 941 bytes .../nanox.64.png | Bin 472 -> 462 bytes .../nanox.65.png | Bin 476 -> 471 bytes .../nanox.66.png | Bin 405 -> 403 bytes .../nanox.68.png | Bin 598 -> 601 bytes .../nanox.72.png | Bin 937 -> 941 bytes .../nanox.73.png | Bin 472 -> 462 bytes .../nanox.74.png | Bin 476 -> 471 bytes .../nanox.75.png | Bin 405 -> 403 bytes .../nanox.79.png | Bin 544 -> 547 bytes .../nanox.81.png | Bin 937 -> 941 bytes .../nanox.82.png | Bin 472 -> 462 bytes .../nanox.83.png | Bin 476 -> 471 bytes .../nanox.84.png | Bin 405 -> 403 bytes .../nanox.87.png | Bin 950 -> 957 bytes .../nanox.88.png | Bin 409 -> 409 bytes .../nanox.90.png | Bin 937 -> 941 bytes .../nanox.91.png | Bin 472 -> 462 bytes .../nanox.92.png | Bin 476 -> 471 bytes .../nanox.93.png | Bin 405 -> 403 bytes .../nanosp.01.png | Bin 0 -> 405 bytes .../nanosp.02.png | Bin 0 -> 390 bytes .../nanosp.03.png | Bin 0 -> 446 bytes .../nanosp.04.png | Bin 0 -> 419 bytes .../nanosp.05.png | Bin 0 -> 370 bytes .../nanosp.06.png | Bin 0 -> 473 bytes .../nanosp.07.png | Bin 0 -> 486 bytes .../nanosp.08.png | Bin 0 -> 462 bytes .../nanosp.09.png | Bin 0 -> 937 bytes .../nanosp.10.png | Bin 0 -> 472 bytes .../nanosp.11.png | Bin 0 -> 476 bytes .../nanosp.12.png | Bin 0 -> 405 bytes .../nanosp.13.png | Bin 0 -> 379 bytes .../nanosp.14.png | Bin 0 -> 426 bytes .../nanosp.15.png | Bin 0 -> 434 bytes .../nanosp.16.png | Bin 0 -> 370 bytes .../nanosp.17.png | Bin 0 -> 473 bytes .../nanosp.18.png | Bin 0 -> 486 bytes .../nanosp.19.png | Bin 0 -> 462 bytes .../nanosp.20.png | Bin 0 -> 937 bytes .../nanosp.21.png | Bin 0 -> 472 bytes .../nanosp.22.png | Bin 0 -> 476 bytes .../nanosp.23.png | Bin 0 -> 405 bytes .../nanox.01.png | Bin 405 -> 403 bytes .../nanox.04.png | Bin 419 -> 417 bytes .../nanox.06.png | Bin 473 -> 471 bytes .../nanox.09.png | Bin 937 -> 941 bytes .../nanox.10.png | Bin 472 -> 462 bytes .../nanox.11.png | Bin 476 -> 471 bytes .../nanox.12.png | Bin 405 -> 403 bytes .../nanox.17.png | Bin 473 -> 471 bytes .../nanox.20.png | Bin 937 -> 941 bytes .../nanox.21.png | Bin 472 -> 462 bytes .../nanox.22.png | Bin 476 -> 471 bytes .../nanox.23.png | Bin 405 -> 403 bytes .../nanosp.01.png | Bin 0 -> 405 bytes .../nanosp.02.png | Bin 0 -> 390 bytes .../nanosp.03.png | Bin 0 -> 427 bytes .../nanosp.04.png | Bin 0 -> 428 bytes .../nanosp.05.png | Bin 0 -> 462 bytes .../nanosp.06.png | Bin 0 -> 937 bytes .../nanosp.07.png | Bin 0 -> 472 bytes .../nanosp.08.png | Bin 0 -> 476 bytes .../nanosp.09.png | Bin 0 -> 405 bytes .../nanosp.10.png | Bin 0 -> 379 bytes .../nanosp.11.png | Bin 0 -> 433 bytes .../nanosp.12.png | Bin 0 -> 428 bytes .../nanosp.13.png | Bin 0 -> 462 bytes .../nanosp.14.png | Bin 0 -> 937 bytes .../nanosp.15.png | Bin 0 -> 472 bytes .../nanosp.16.png | Bin 0 -> 476 bytes .../nanosp.17.png | Bin 0 -> 405 bytes .../nanox.01.png | Bin 405 -> 403 bytes .../nanox.03.png | Bin 427 -> 429 bytes .../nanox.04.png | Bin 428 -> 428 bytes .../nanox.06.png | Bin 937 -> 941 bytes .../nanox.07.png | Bin 472 -> 462 bytes .../nanox.08.png | Bin 476 -> 471 bytes .../nanox.09.png | Bin 405 -> 403 bytes .../nanox.11.png | Bin 433 -> 432 bytes .../nanox.12.png | Bin 428 -> 428 bytes .../nanox.14.png | Bin 937 -> 941 bytes .../nanox.15.png | Bin 472 -> 462 bytes .../nanox.16.png | Bin 476 -> 471 bytes .../nanox.17.png | Bin 405 -> 403 bytes .../nanosp.01.png | Bin 0 -> 405 bytes .../nanosp.02.png | Bin 0 -> 390 bytes .../nanosp.03.png | Bin 0 -> 464 bytes .../nanosp.04.png | Bin 0 -> 950 bytes .../nanosp.05.png | Bin 0 -> 409 bytes .../nanosp.06.png | Bin 0 -> 379 bytes .../nanosp.07.png | Bin 0 -> 462 bytes .../nanosp.08.png | Bin 0 -> 937 bytes .../nanosp.09.png | Bin 0 -> 472 bytes .../nanosp.10.png | Bin 0 -> 476 bytes .../nanosp.11.png | Bin 0 -> 405 bytes .../nanosp.12.png | Bin 0 -> 379 bytes .../nanosp.13.png | Bin 0 -> 434 bytes .../nanosp.14.png | Bin 0 -> 950 bytes .../nanosp.15.png | Bin 0 -> 409 bytes .../nanosp.16.png | Bin 0 -> 379 bytes .../nanosp.17.png | Bin 0 -> 462 bytes .../nanosp.18.png | Bin 0 -> 937 bytes .../nanosp.19.png | Bin 0 -> 472 bytes .../nanosp.20.png | Bin 0 -> 476 bytes .../nanosp.21.png | Bin 0 -> 405 bytes .../nanox.01.png | Bin 405 -> 403 bytes .../nanox.04.png | Bin 950 -> 957 bytes .../nanox.05.png | Bin 409 -> 409 bytes .../nanox.08.png | Bin 937 -> 941 bytes .../nanox.09.png | Bin 472 -> 462 bytes .../nanox.10.png | Bin 476 -> 471 bytes .../nanox.11.png | Bin 405 -> 403 bytes .../nanox.14.png | Bin 950 -> 957 bytes .../nanox.15.png | Bin 409 -> 409 bytes .../nanox.18.png | Bin 937 -> 941 bytes .../nanox.19.png | Bin 472 -> 462 bytes .../nanox.20.png | Bin 476 -> 471 bytes .../nanox.21.png | Bin 405 -> 403 bytes .../signTransactionRecordobt/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanosp.03.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanosp.04.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanosp.05.png | Bin 0 -> 539 bytes .../signTransactionRecordobt/nanosp.06.png | Bin 0 -> 540 bytes .../signTransactionRecordobt/nanosp.07.png | Bin 0 -> 392 bytes .../signTransactionRecordobt/nanosp.08.png | Bin 0 -> 564 bytes .../signTransactionRecordobt/nanosp.09.png | Bin 0 -> 580 bytes .../signTransactionRecordobt/nanosp.10.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanosp.11.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanosp.12.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanosp.13.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanosp.14.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanosp.15.png | Bin 0 -> 415 bytes .../signTransactionRecordobt/nanosp.16.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanosp.17.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanosp.18.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanosp.19.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanosp.20.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanosp.21.png | Bin 0 -> 379 bytes .../signTransactionRecordobt/nanosp.22.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanosp.23.png | Bin 0 -> 428 bytes .../signTransactionRecordobt/nanosp.24.png | Bin 0 -> 539 bytes .../signTransactionRecordobt/nanosp.25.png | Bin 0 -> 540 bytes .../signTransactionRecordobt/nanosp.26.png | Bin 0 -> 392 bytes .../signTransactionRecordobt/nanosp.27.png | Bin 0 -> 564 bytes .../signTransactionRecordobt/nanosp.28.png | Bin 0 -> 580 bytes .../signTransactionRecordobt/nanosp.29.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanosp.30.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanosp.31.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanosp.32.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanosp.33.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanosp.34.png | Bin 0 -> 415 bytes .../signTransactionRecordobt/nanosp.35.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanosp.36.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanosp.37.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanosp.38.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanosp.39.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanosp.40.png | Bin 0 -> 390 bytes .../signTransactionRecordobt/nanosp.41.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanosp.42.png | Bin 0 -> 539 bytes .../signTransactionRecordobt/nanosp.43.png | Bin 0 -> 540 bytes .../signTransactionRecordobt/nanosp.44.png | Bin 0 -> 392 bytes .../signTransactionRecordobt/nanosp.45.png | Bin 0 -> 564 bytes .../signTransactionRecordobt/nanosp.46.png | Bin 0 -> 580 bytes .../signTransactionRecordobt/nanosp.47.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanosp.48.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanosp.49.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanosp.50.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanosp.51.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanosp.52.png | Bin 0 -> 415 bytes .../signTransactionRecordobt/nanosp.53.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanosp.54.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanosp.55.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanosp.56.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanosp.57.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanosp.58.png | Bin 0 -> 379 bytes .../signTransactionRecordobt/nanosp.59.png | Bin 0 -> 430 bytes .../signTransactionRecordobt/nanosp.60.png | Bin 0 -> 539 bytes .../signTransactionRecordobt/nanosp.61.png | Bin 0 -> 540 bytes .../signTransactionRecordobt/nanosp.62.png | Bin 0 -> 392 bytes .../signTransactionRecordobt/nanosp.63.png | Bin 0 -> 564 bytes .../signTransactionRecordobt/nanosp.64.png | Bin 0 -> 580 bytes .../signTransactionRecordobt/nanosp.65.png | Bin 0 -> 445 bytes .../signTransactionRecordobt/nanosp.66.png | Bin 0 -> 376 bytes .../signTransactionRecordobt/nanosp.67.png | Bin 0 -> 382 bytes .../signTransactionRecordobt/nanosp.68.png | Bin 0 -> 345 bytes .../signTransactionRecordobt/nanosp.69.png | Bin 0 -> 333 bytes .../signTransactionRecordobt/nanosp.70.png | Bin 0 -> 415 bytes .../signTransactionRecordobt/nanosp.71.png | Bin 0 -> 462 bytes .../signTransactionRecordobt/nanosp.72.png | Bin 0 -> 937 bytes .../signTransactionRecordobt/nanosp.73.png | Bin 0 -> 472 bytes .../signTransactionRecordobt/nanosp.74.png | Bin 0 -> 476 bytes .../signTransactionRecordobt/nanosp.75.png | Bin 0 -> 405 bytes .../signTransactionRecordobt/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionRecordobt/nanox.04.png | Bin 428 -> 428 bytes .../signTransactionRecordobt/nanox.08.png | Bin 564 -> 563 bytes .../signTransactionRecordobt/nanox.09.png | Bin 580 -> 581 bytes .../signTransactionRecordobt/nanox.10.png | Bin 445 -> 445 bytes .../signTransactionRecordobt/nanox.14.png | Bin 333 -> 333 bytes .../signTransactionRecordobt/nanox.15.png | Bin 415 -> 415 bytes .../signTransactionRecordobt/nanox.17.png | Bin 937 -> 941 bytes .../signTransactionRecordobt/nanox.18.png | Bin 472 -> 462 bytes .../signTransactionRecordobt/nanox.19.png | Bin 476 -> 471 bytes .../signTransactionRecordobt/nanox.20.png | Bin 405 -> 403 bytes .../signTransactionRecordobt/nanox.23.png | Bin 428 -> 428 bytes .../signTransactionRecordobt/nanox.27.png | Bin 564 -> 563 bytes .../signTransactionRecordobt/nanox.28.png | Bin 580 -> 581 bytes .../signTransactionRecordobt/nanox.29.png | Bin 445 -> 445 bytes .../signTransactionRecordobt/nanox.33.png | Bin 333 -> 333 bytes .../signTransactionRecordobt/nanox.34.png | Bin 415 -> 415 bytes .../signTransactionRecordobt/nanox.36.png | Bin 937 -> 941 bytes .../signTransactionRecordobt/nanox.37.png | Bin 472 -> 462 bytes .../signTransactionRecordobt/nanox.38.png | Bin 476 -> 471 bytes .../signTransactionRecordobt/nanox.39.png | Bin 405 -> 403 bytes .../signTransactionRecordobt/nanox.45.png | Bin 564 -> 563 bytes .../signTransactionRecordobt/nanox.46.png | Bin 580 -> 581 bytes .../signTransactionRecordobt/nanox.47.png | Bin 445 -> 445 bytes .../signTransactionRecordobt/nanox.51.png | Bin 333 -> 333 bytes .../signTransactionRecordobt/nanox.52.png | Bin 415 -> 415 bytes .../signTransactionRecordobt/nanox.54.png | Bin 937 -> 941 bytes .../signTransactionRecordobt/nanox.55.png | Bin 472 -> 462 bytes .../signTransactionRecordobt/nanox.56.png | Bin 476 -> 471 bytes .../signTransactionRecordobt/nanox.57.png | Bin 405 -> 403 bytes .../signTransactionRecordobt/nanox.63.png | Bin 564 -> 563 bytes .../signTransactionRecordobt/nanox.64.png | Bin 580 -> 581 bytes .../signTransactionRecordobt/nanox.65.png | Bin 445 -> 445 bytes .../signTransactionRecordobt/nanox.69.png | Bin 333 -> 333 bytes .../signTransactionRecordobt/nanox.70.png | Bin 415 -> 415 bytes .../signTransactionRecordobt/nanox.72.png | Bin 937 -> 941 bytes .../signTransactionRecordobt/nanox.73.png | Bin 472 -> 462 bytes .../signTransactionRecordobt/nanox.74.png | Bin 476 -> 471 bytes .../signTransactionRecordobt/nanox.75.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionRemaddress/nanosp.03.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanosp.04.png | Bin 0 -> 950 bytes .../signTransactionRemaddress/nanosp.05.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanosp.06.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanosp.07.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanosp.08.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanosp.09.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanosp.10.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanosp.11.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanosp.12.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanosp.13.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanosp.14.png | Bin 0 -> 950 bytes .../signTransactionRemaddress/nanosp.15.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanosp.16.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanosp.17.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanosp.18.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanosp.19.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanosp.20.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanosp.21.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanosp.22.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanosp.23.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanosp.24.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanosp.25.png | Bin 0 -> 950 bytes .../signTransactionRemaddress/nanosp.26.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanosp.27.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanosp.28.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanosp.29.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanosp.30.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanosp.31.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanosp.32.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanosp.33.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanosp.34.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanosp.35.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanosp.36.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanosp.37.png | Bin 0 -> 950 bytes .../signTransactionRemaddress/nanosp.38.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanosp.39.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanosp.40.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanosp.41.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanosp.42.png | Bin 0 -> 569 bytes .../signTransactionRemaddress/nanosp.43.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanosp.44.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanosp.45.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanosp.46.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanosp.47.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanosp.48.png | Bin 0 -> 379 bytes .../signTransactionRemaddress/nanosp.49.png | Bin 0 -> 533 bytes .../signTransactionRemaddress/nanosp.50.png | Bin 0 -> 950 bytes .../signTransactionRemaddress/nanosp.51.png | Bin 0 -> 409 bytes .../signTransactionRemaddress/nanosp.52.png | Bin 0 -> 575 bytes .../signTransactionRemaddress/nanosp.53.png | Bin 0 -> 595 bytes .../signTransactionRemaddress/nanosp.54.png | Bin 0 -> 578 bytes .../signTransactionRemaddress/nanosp.55.png | Bin 0 -> 569 bytes .../signTransactionRemaddress/nanosp.56.png | Bin 0 -> 601 bytes .../signTransactionRemaddress/nanosp.57.png | Bin 0 -> 462 bytes .../signTransactionRemaddress/nanosp.58.png | Bin 0 -> 937 bytes .../signTransactionRemaddress/nanosp.59.png | Bin 0 -> 472 bytes .../signTransactionRemaddress/nanosp.60.png | Bin 0 -> 476 bytes .../signTransactionRemaddress/nanosp.61.png | Bin 0 -> 405 bytes .../signTransactionRemaddress/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanox.03.png | Bin 533 -> 530 bytes .../signTransactionRemaddress/nanox.04.png | Bin 950 -> 957 bytes .../signTransactionRemaddress/nanox.05.png | Bin 409 -> 409 bytes .../signTransactionRemaddress/nanox.06.png | Bin 575 -> 572 bytes .../signTransactionRemaddress/nanox.08.png | Bin 937 -> 941 bytes .../signTransactionRemaddress/nanox.09.png | Bin 472 -> 462 bytes .../signTransactionRemaddress/nanox.10.png | Bin 476 -> 471 bytes .../signTransactionRemaddress/nanox.11.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanox.13.png | Bin 533 -> 530 bytes .../signTransactionRemaddress/nanox.14.png | Bin 950 -> 957 bytes .../signTransactionRemaddress/nanox.15.png | Bin 409 -> 409 bytes .../signTransactionRemaddress/nanox.16.png | Bin 575 -> 572 bytes .../signTransactionRemaddress/nanox.17.png | Bin 595 -> 593 bytes .../signTransactionRemaddress/nanox.19.png | Bin 937 -> 941 bytes .../signTransactionRemaddress/nanox.20.png | Bin 472 -> 462 bytes .../signTransactionRemaddress/nanox.21.png | Bin 476 -> 471 bytes .../signTransactionRemaddress/nanox.22.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanox.24.png | Bin 533 -> 530 bytes .../signTransactionRemaddress/nanox.25.png | Bin 950 -> 957 bytes .../signTransactionRemaddress/nanox.26.png | Bin 409 -> 409 bytes .../signTransactionRemaddress/nanox.27.png | Bin 575 -> 572 bytes .../signTransactionRemaddress/nanox.28.png | Bin 595 -> 593 bytes .../signTransactionRemaddress/nanox.29.png | Bin 578 -> 574 bytes .../signTransactionRemaddress/nanox.31.png | Bin 937 -> 941 bytes .../signTransactionRemaddress/nanox.32.png | Bin 472 -> 462 bytes .../signTransactionRemaddress/nanox.33.png | Bin 476 -> 471 bytes .../signTransactionRemaddress/nanox.34.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanox.36.png | Bin 533 -> 530 bytes .../signTransactionRemaddress/nanox.37.png | Bin 950 -> 957 bytes .../signTransactionRemaddress/nanox.38.png | Bin 409 -> 409 bytes .../signTransactionRemaddress/nanox.39.png | Bin 575 -> 572 bytes .../signTransactionRemaddress/nanox.40.png | Bin 595 -> 593 bytes .../signTransactionRemaddress/nanox.41.png | Bin 578 -> 574 bytes .../signTransactionRemaddress/nanox.42.png | Bin 569 -> 566 bytes .../signTransactionRemaddress/nanox.44.png | Bin 937 -> 941 bytes .../signTransactionRemaddress/nanox.45.png | Bin 472 -> 462 bytes .../signTransactionRemaddress/nanox.46.png | Bin 476 -> 471 bytes .../signTransactionRemaddress/nanox.47.png | Bin 405 -> 403 bytes .../signTransactionRemaddress/nanox.49.png | Bin 533 -> 530 bytes .../signTransactionRemaddress/nanox.50.png | Bin 950 -> 957 bytes .../signTransactionRemaddress/nanox.51.png | Bin 409 -> 409 bytes .../signTransactionRemaddress/nanox.52.png | Bin 575 -> 572 bytes .../signTransactionRemaddress/nanox.53.png | Bin 595 -> 593 bytes .../signTransactionRemaddress/nanox.54.png | Bin 578 -> 574 bytes .../signTransactionRemaddress/nanox.55.png | Bin 569 -> 566 bytes .../signTransactionRemaddress/nanox.56.png | Bin 601 -> 594 bytes .../signTransactionRemaddress/nanox.58.png | Bin 937 -> 941 bytes .../signTransactionRemaddress/nanox.59.png | Bin 472 -> 462 bytes .../signTransactionRemaddress/nanox.60.png | Bin 476 -> 471 bytes .../signTransactionRemaddress/nanox.61.png | Bin 405 -> 403 bytes .../signTransactionRemnft/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionRemnft/nanosp.03.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanosp.04.png | Bin 0 -> 950 bytes .../signTransactionRemnft/nanosp.05.png | Bin 0 -> 409 bytes .../signTransactionRemnft/nanosp.06.png | Bin 0 -> 329 bytes .../signTransactionRemnft/nanosp.07.png | Bin 0 -> 376 bytes .../signTransactionRemnft/nanosp.08.png | Bin 0 -> 391 bytes .../signTransactionRemnft/nanosp.09.png | Bin 0 -> 403 bytes .../signTransactionRemnft/nanosp.10.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanosp.11.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanosp.12.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanosp.13.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanosp.14.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanosp.15.png | Bin 0 -> 379 bytes .../signTransactionRemnft/nanosp.16.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanosp.17.png | Bin 0 -> 950 bytes .../signTransactionRemnft/nanosp.18.png | Bin 0 -> 409 bytes .../signTransactionRemnft/nanosp.19.png | Bin 0 -> 329 bytes .../signTransactionRemnft/nanosp.20.png | Bin 0 -> 376 bytes .../signTransactionRemnft/nanosp.21.png | Bin 0 -> 391 bytes .../signTransactionRemnft/nanosp.22.png | Bin 0 -> 403 bytes .../signTransactionRemnft/nanosp.23.png | Bin 0 -> 341 bytes .../signTransactionRemnft/nanosp.24.png | Bin 0 -> 387 bytes .../signTransactionRemnft/nanosp.25.png | Bin 0 -> 425 bytes .../signTransactionRemnft/nanosp.26.png | Bin 0 -> 407 bytes .../signTransactionRemnft/nanosp.27.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanosp.28.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanosp.29.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanosp.30.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanosp.31.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanosp.32.png | Bin 0 -> 379 bytes .../signTransactionRemnft/nanosp.33.png | Bin 0 -> 466 bytes .../signTransactionRemnft/nanosp.34.png | Bin 0 -> 950 bytes .../signTransactionRemnft/nanosp.35.png | Bin 0 -> 409 bytes .../signTransactionRemnft/nanosp.36.png | Bin 0 -> 329 bytes .../signTransactionRemnft/nanosp.37.png | Bin 0 -> 376 bytes .../signTransactionRemnft/nanosp.38.png | Bin 0 -> 391 bytes .../signTransactionRemnft/nanosp.39.png | Bin 0 -> 403 bytes .../signTransactionRemnft/nanosp.40.png | Bin 0 -> 341 bytes .../signTransactionRemnft/nanosp.41.png | Bin 0 -> 387 bytes .../signTransactionRemnft/nanosp.42.png | Bin 0 -> 425 bytes .../signTransactionRemnft/nanosp.43.png | Bin 0 -> 407 bytes .../signTransactionRemnft/nanosp.44.png | Bin 0 -> 336 bytes .../signTransactionRemnft/nanosp.45.png | Bin 0 -> 384 bytes .../signTransactionRemnft/nanosp.46.png | Bin 0 -> 420 bytes .../signTransactionRemnft/nanosp.47.png | Bin 0 -> 404 bytes .../signTransactionRemnft/nanosp.48.png | Bin 0 -> 462 bytes .../signTransactionRemnft/nanosp.49.png | Bin 0 -> 937 bytes .../signTransactionRemnft/nanosp.50.png | Bin 0 -> 472 bytes .../signTransactionRemnft/nanosp.51.png | Bin 0 -> 476 bytes .../signTransactionRemnft/nanosp.52.png | Bin 0 -> 405 bytes .../signTransactionRemnft/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionRemnft/nanox.04.png | Bin 950 -> 957 bytes .../signTransactionRemnft/nanox.05.png | Bin 409 -> 409 bytes .../signTransactionRemnft/nanox.06.png | Bin 329 -> 327 bytes .../signTransactionRemnft/nanox.08.png | Bin 391 -> 392 bytes .../signTransactionRemnft/nanox.11.png | Bin 937 -> 941 bytes .../signTransactionRemnft/nanox.12.png | Bin 472 -> 462 bytes .../signTransactionRemnft/nanox.13.png | Bin 476 -> 471 bytes .../signTransactionRemnft/nanox.14.png | Bin 405 -> 403 bytes .../signTransactionRemnft/nanox.17.png | Bin 950 -> 957 bytes .../signTransactionRemnft/nanox.18.png | Bin 409 -> 409 bytes .../signTransactionRemnft/nanox.19.png | Bin 329 -> 327 bytes .../signTransactionRemnft/nanox.21.png | Bin 391 -> 392 bytes .../signTransactionRemnft/nanox.23.png | Bin 341 -> 339 bytes .../signTransactionRemnft/nanox.25.png | Bin 425 -> 423 bytes .../signTransactionRemnft/nanox.28.png | Bin 937 -> 941 bytes .../signTransactionRemnft/nanox.29.png | Bin 472 -> 462 bytes .../signTransactionRemnft/nanox.30.png | Bin 476 -> 471 bytes .../signTransactionRemnft/nanox.31.png | Bin 405 -> 403 bytes .../signTransactionRemnft/nanox.34.png | Bin 950 -> 957 bytes .../signTransactionRemnft/nanox.35.png | Bin 409 -> 409 bytes .../signTransactionRemnft/nanox.36.png | Bin 329 -> 327 bytes .../signTransactionRemnft/nanox.38.png | Bin 391 -> 392 bytes .../signTransactionRemnft/nanox.40.png | Bin 341 -> 339 bytes .../signTransactionRemnft/nanox.42.png | Bin 425 -> 423 bytes .../signTransactionRemnft/nanox.44.png | Bin 336 -> 334 bytes .../signTransactionRemnft/nanox.46.png | Bin 420 -> 418 bytes .../signTransactionRemnft/nanox.49.png | Bin 937 -> 941 bytes .../signTransactionRemnft/nanox.50.png | Bin 472 -> 462 bytes .../signTransactionRemnft/nanox.51.png | Bin 476 -> 471 bytes .../signTransactionRemnft/nanox.52.png | Bin 405 -> 403 bytes .../signTransactionTrnsfiopubky/nanosp.01.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanosp.02.png | Bin 0 -> 390 bytes .../signTransactionTrnsfiopubky/nanosp.03.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanosp.04.png | Bin 0 -> 1007 bytes .../signTransactionTrnsfiopubky/nanosp.05.png | Bin 0 -> 453 bytes .../signTransactionTrnsfiopubky/nanosp.06.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanosp.07.png | Bin 0 -> 462 bytes .../signTransactionTrnsfiopubky/nanosp.08.png | Bin 0 -> 937 bytes .../signTransactionTrnsfiopubky/nanosp.09.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanosp.10.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanosp.11.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanosp.12.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanosp.13.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanosp.14.png | Bin 0 -> 1007 bytes .../signTransactionTrnsfiopubky/nanosp.15.png | Bin 0 -> 453 bytes .../signTransactionTrnsfiopubky/nanosp.16.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanosp.17.png | Bin 0 -> 462 bytes .../signTransactionTrnsfiopubky/nanosp.18.png | Bin 0 -> 937 bytes .../signTransactionTrnsfiopubky/nanosp.19.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanosp.20.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanosp.21.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanosp.22.png | Bin 0 -> 390 bytes .../signTransactionTrnsfiopubky/nanosp.23.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanosp.24.png | Bin 0 -> 1007 bytes .../signTransactionTrnsfiopubky/nanosp.25.png | Bin 0 -> 453 bytes .../signTransactionTrnsfiopubky/nanosp.26.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanosp.27.png | Bin 0 -> 462 bytes .../signTransactionTrnsfiopubky/nanosp.28.png | Bin 0 -> 937 bytes .../signTransactionTrnsfiopubky/nanosp.29.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanosp.30.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanosp.31.png | Bin 0 -> 390 bytes .../signTransactionTrnsfiopubky/nanosp.32.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanosp.33.png | Bin 0 -> 379 bytes .../signTransactionTrnsfiopubky/nanosp.34.png | Bin 0 -> 424 bytes .../signTransactionTrnsfiopubky/nanosp.35.png | Bin 0 -> 1007 bytes .../signTransactionTrnsfiopubky/nanosp.36.png | Bin 0 -> 453 bytes .../signTransactionTrnsfiopubky/nanosp.37.png | Bin 0 -> 502 bytes .../signTransactionTrnsfiopubky/nanosp.38.png | Bin 0 -> 515 bytes .../signTransactionTrnsfiopubky/nanosp.39.png | Bin 0 -> 937 bytes .../signTransactionTrnsfiopubky/nanosp.40.png | Bin 0 -> 472 bytes .../signTransactionTrnsfiopubky/nanosp.41.png | Bin 0 -> 476 bytes .../signTransactionTrnsfiopubky/nanosp.42.png | Bin 0 -> 405 bytes .../signTransactionTrnsfiopubky/nanox.01.png | Bin 405 -> 403 bytes .../signTransactionTrnsfiopubky/nanox.04.png | Bin 1007 -> 1012 bytes .../signTransactionTrnsfiopubky/nanox.05.png | Bin 453 -> 454 bytes .../signTransactionTrnsfiopubky/nanox.08.png | Bin 937 -> 941 bytes .../signTransactionTrnsfiopubky/nanox.09.png | Bin 472 -> 462 bytes .../signTransactionTrnsfiopubky/nanox.10.png | Bin 476 -> 471 bytes .../signTransactionTrnsfiopubky/nanox.11.png | Bin 405 -> 403 bytes .../signTransactionTrnsfiopubky/nanox.14.png | Bin 1007 -> 1012 bytes .../signTransactionTrnsfiopubky/nanox.15.png | Bin 453 -> 454 bytes .../signTransactionTrnsfiopubky/nanox.18.png | Bin 937 -> 941 bytes .../signTransactionTrnsfiopubky/nanox.19.png | Bin 472 -> 462 bytes .../signTransactionTrnsfiopubky/nanox.20.png | Bin 476 -> 471 bytes .../signTransactionTrnsfiopubky/nanox.21.png | Bin 405 -> 403 bytes .../signTransactionTrnsfiopubky/nanox.24.png | Bin 1007 -> 1012 bytes .../signTransactionTrnsfiopubky/nanox.25.png | Bin 453 -> 454 bytes .../signTransactionTrnsfiopubky/nanox.28.png | Bin 937 -> 941 bytes .../signTransactionTrnsfiopubky/nanox.29.png | Bin 472 -> 462 bytes .../signTransactionTrnsfiopubky/nanox.30.png | Bin 476 -> 471 bytes .../signTransactionTrnsfiopubky/nanox.31.png | Bin 390 -> 389 bytes .../signTransactionTrnsfiopubky/nanox.32.png | Bin 405 -> 403 bytes .../signTransactionTrnsfiopubky/nanox.35.png | Bin 1007 -> 1012 bytes .../signTransactionTrnsfiopubky/nanox.36.png | Bin 453 -> 454 bytes .../signTransactionTrnsfiopubky/nanox.38.png | Bin 515 -> 516 bytes .../signTransactionTrnsfiopubky/nanox.39.png | Bin 937 -> 941 bytes .../signTransactionTrnsfiopubky/nanox.40.png | Bin 472 -> 462 bytes .../signTransactionTrnsfiopubky/nanox.41.png | Bin 476 -> 471 bytes .../signTransactionTrnsfiopubky/nanox.42.png | Bin 405 -> 403 bytes .../speculos-buttons-and-snapshots.js | 41 ++++++++++++------ test-integration/speculos-common.js | 2 +- 1994 files changed, 35 insertions(+), 22 deletions(-) create mode 100644 test-integration/snapshots/decodeMessage/nanosp.01.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.02.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.03.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.04.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.05.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.06.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.07.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.08.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.09.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.10.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.11.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.12.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.13.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.14.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.15.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.16.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.17.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.18.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.19.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.20.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.21.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.22.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.23.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.24.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.25.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.26.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.27.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.28.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.29.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.30.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.31.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.32.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.33.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.34.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.35.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.36.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.37.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.38.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.39.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.40.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.41.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.42.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.43.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.44.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.45.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.46.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.47.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.48.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.49.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.50.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.51.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.52.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.53.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.54.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.55.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.56.png create mode 100644 test-integration/snapshots/decodeMessage/nanosp.57.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.01.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.02.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.03.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.04.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.05.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.06.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.07.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.08.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.09.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.10.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.11.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.12.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.13.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.14.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.15.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.16.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.17.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.18.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.19.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.20.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.21.png create mode 100644 test-integration/snapshots/getPublicKey/nanosp.22.png create mode 100644 test-integration/snapshots/getSerial/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionAddaddress/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionAddnft/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionNewfundsreq/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.100.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.101.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.102.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.103.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.104.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.105.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.106.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.107.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.108.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.109.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.110.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.111.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.112.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.113.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.114.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.115.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.116.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.117.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.118.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.119.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.120.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.121.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.122.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.123.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.124.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.125.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.126.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.127.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.128.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.129.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.130.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.131.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.132.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.133.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.134.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.135.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.136.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.137.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.138.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.139.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.140.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.141.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.142.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.143.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.144.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.145.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.146.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.147.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.148.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.149.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.150.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.151.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.152.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.153.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.154.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.155.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.156.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.157.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.158.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.159.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.160.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.161.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.162.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.163.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.164.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.165.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.166.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.167.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.168.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.169.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.170.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.171.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.172.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.173.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.174.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.175.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.176.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.177.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.178.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.179.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.180.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.181.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.182.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.183.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.184.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.185.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.186.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.187.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.188.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.189.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.190.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.191.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.192.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.193.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.194.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.195.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.196.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.197.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.198.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.199.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.200.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.201.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.202.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.203.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.204.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.205.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.206.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.207.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.208.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.209.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.210.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.211.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.212.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.213.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.214.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.215.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.216.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.217.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.218.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.219.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.220.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.221.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.222.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.223.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.224.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.225.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.226.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.227.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.228.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.229.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.230.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.231.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.232.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.233.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.234.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.235.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.236.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.237.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.238.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.239.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.240.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.241.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.242.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.243.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.244.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.245.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.246.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.247.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.248.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.249.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.250.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.251.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.252.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.253.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.254.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.255.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.256.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.257.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.258.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.259.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.260.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.261.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.262.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.263.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.264.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.265.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.266.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.267.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.268.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.269.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.270.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.271.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.272.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.273.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.274.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.275.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.276.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.277.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.278.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.279.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.280.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.281.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.282.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.283.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.284.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.285.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.286.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.287.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.288.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.289.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.290.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.291.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.292.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.293.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.294.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.295.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.296.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.297.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.298.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.299.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.300.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.301.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.302.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.303.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.304.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.305.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.306.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.307.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.308.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.309.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.310.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.311.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.312.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.313.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.314.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.315.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.316.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.317.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.318.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.319.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.320.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.321.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.322.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.323.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.324.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.325.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.326.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.327.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.328.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.329.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.330.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.331.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.332.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.333.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.334.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.335.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.336.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.337.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.338.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.339.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.340.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.341.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.342.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.343.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.344.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.345.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.346.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.347.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.348.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.349.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.350.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.351.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.352.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.353.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.354.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.355.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.356.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.357.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.358.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.359.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.360.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.361.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.362.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.363.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.364.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.365.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.366.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.367.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.368.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.369.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.370.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.371.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.372.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.373.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.374.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.375.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.376.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.377.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.378.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.379.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.380.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.381.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.382.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.383.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.384.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.385.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.386.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.387.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.388.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.389.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.390.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.391.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.392.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.393.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.394.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.395.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.396.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.397.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.398.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.399.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.400.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.401.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.402.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.403.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.404.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.405.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.406.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.407.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.408.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.409.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.410.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.411.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.412.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.413.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.414.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.415.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.416.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.417.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.418.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.419.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.420.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.421.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.422.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.423.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.424.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.425.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.426.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.427.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.428.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.429.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.430.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.431.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.432.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.433.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.434.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.435.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.436.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.437.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.438.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.439.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.440.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.441.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.442.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.443.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.444.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.445.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.446.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.447.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.448.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.449.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.450.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.451.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.452.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.453.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.454.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.455.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.456.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.457.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.458.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.459.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.460.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.461.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.462.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.463.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.464.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.465.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.466.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.467.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.468.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.469.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.470.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.471.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.472.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.473.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.474.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.475.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.476.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.477.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.478.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.479.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.480.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.481.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.482.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.483.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.484.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.485.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.486.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.487.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.488.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.489.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.490.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.491.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.492.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.493.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.494.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.495.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.496.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.497.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.498.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.499.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.500.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.501.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.502.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.503.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.504.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.505.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.506.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.507.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.508.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.509.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.510.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.511.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.512.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.513.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.514.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.515.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.516.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.517.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.518.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.519.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.520.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.521.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.522.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.523.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.524.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.525.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.526.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.527.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.528.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.529.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.530.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.531.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.532.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.533.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.534.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.535.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.536.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.537.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.538.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.539.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.540.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.541.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.542.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.543.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.544.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.545.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.546.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.547.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.548.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.549.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.550.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.551.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.552.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.553.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.554.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.555.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.556.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.557.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.558.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.559.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.560.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.561.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.562.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.563.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.564.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.565.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.566.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.567.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.568.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.569.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.570.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.571.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.572.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.573.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.574.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.575.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.576.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.577.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.578.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.579.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.580.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.581.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.582.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.583.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.584.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.585.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.586.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.587.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.588.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.589.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.590.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.591.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.592.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.593.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.594.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.595.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.596.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.597.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.598.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.599.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.600.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.601.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.602.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.603.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.604.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.605.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.606.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.607.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.608.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.609.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.610.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.611.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.612.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.613.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.614.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.615.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.616.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.617.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.618.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.619.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.62.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.620.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.621.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.622.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.623.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.624.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.625.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.626.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.627.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.628.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.629.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.63.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.630.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.631.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.632.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.633.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.634.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.635.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.636.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.637.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.638.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.639.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.64.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.640.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.641.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.642.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.643.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.644.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.645.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.646.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.647.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.648.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.649.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.65.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.650.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.651.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.652.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.653.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.654.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.655.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.656.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.657.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.658.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.659.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.66.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.660.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.661.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.662.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.663.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.664.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.665.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.666.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.667.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.668.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.669.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.67.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.670.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.671.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.672.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.673.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.674.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.675.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.676.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.677.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.678.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.679.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.68.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.680.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.681.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.682.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.683.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.684.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.685.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.686.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.687.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.688.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.689.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.69.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.690.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.691.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.692.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.693.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.694.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.695.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.696.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.697.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.698.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.699.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.70.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.700.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.701.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.702.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.703.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.704.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.705.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.706.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.707.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.708.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.709.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.71.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.710.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.711.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.712.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.713.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.714.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.715.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.716.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.717.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.718.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.719.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.72.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.720.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.721.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.722.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.723.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.724.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.725.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.726.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.727.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.728.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.729.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.73.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.730.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.731.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.732.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.733.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.734.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.735.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.736.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.737.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.738.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.739.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.74.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.740.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.741.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.742.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.743.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.744.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.745.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.746.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.75.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.76.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.77.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.78.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.79.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.80.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.81.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.82.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.83.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.84.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.85.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.86.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.87.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.88.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.89.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.90.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.91.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.92.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.93.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.94.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.95.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.96.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.97.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.98.png create mode 100644 test-integration/snapshots/signTransactionOtherEosio/nanosp.99.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.62.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.63.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.64.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.65.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.66.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.67.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.68.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.69.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.70.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.71.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.72.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.73.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.74.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.75.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.76.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.77.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.78.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.79.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.80.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.81.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.82.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.83.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.84.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.85.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.86.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.87.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.88.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.89.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.90.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.91.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.92.png create mode 100644 test-integration/snapshots/signTransactionOtherFioAddress/nanosp.93.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionOtherFioOracle/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionOtherFioStaking/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.62.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.63.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.64.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.65.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.66.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.67.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.68.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.69.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.70.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.71.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.72.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.73.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.74.png create mode 100644 test-integration/snapshots/signTransactionRecordobt/nanosp.75.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.53.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.54.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.55.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.56.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.57.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.58.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.59.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.60.png create mode 100644 test-integration/snapshots/signTransactionRemaddress/nanosp.61.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.42.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.43.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.44.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.45.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.46.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.47.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.48.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.49.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.50.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.51.png create mode 100644 test-integration/snapshots/signTransactionRemnft/nanosp.52.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.01.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.02.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.03.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.04.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.05.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.06.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.07.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.08.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.09.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.10.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.11.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.12.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.13.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.14.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.15.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.16.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.17.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.18.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.19.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.20.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.21.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.22.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.23.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.24.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.25.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.26.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.27.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.28.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.29.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.30.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.31.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.32.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.33.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.34.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.35.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.36.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.37.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.38.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.39.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.40.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.41.png create mode 100644 test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.42.png diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 103403dc..69b7338d 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:d5bfe2e793f15a826971ae9de2adcad524df3e8e steps: - name: Clone @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:d5bfe2e793f15a826971ae9de2adcad524df3e8e steps: - name: Clone @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:d5bfe2e793f15a826971ae9de2adcad524df3e8e steps: - name: Clone @@ -72,7 +72,7 @@ jobs: needs: job_nanoS_build_debug container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:d5bfe2e793f15a826971ae9de2adcad524df3e8e steps: - uses: actions/checkout@v2 diff --git a/MakefileContainer.mk b/MakefileContainer.mk index 7fd51384..6c947f62 100644 --- a/MakefileContainer.mk +++ b/MakefileContainer.mk @@ -19,7 +19,7 @@ ifneq ($(BOLOS_SDK),) $(error Containerized build, BOLOS_SDK should be empty) endif -APP_BUILDER_IMAGE = ledger-app-builder:1d9f741e9bc969b072e2de53762b64993536c0f7 +APP_BUILDER_IMAGE = ledger-app-builder:d5bfe2e793f15a826971ae9de2adcad524df3e8e default_target: build diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk index 161e26a1..060b4f83 100644 --- a/MakefileSpeculos.mk +++ b/MakefileSpeculos.mk @@ -15,7 +15,7 @@ # limitations under the License. #******************************************************************************* -SPECULOS_IMAGE = speculos:sha-335cca3 +SPECULOS_IMAGE = speculos:sha-d6dee99 define run_announce @perl -e 'use Time::HiRes; use POSIX; $$ts = sprintf qq[%f], Time::HiRes::time(); ($$f) = $$ts =~ m~(\....)~; printf qq[%s%s %s make: %s\n], POSIX::strftime("%H:%M:%S", gmtime), $$f, q[-] x 126, $$ARGV[0];' "$(1)" diff --git a/MakefileTest.mk b/MakefileTest.mk index 84e2029a..6be3a75d 100644 --- a/MakefileTest.mk +++ b/MakefileTest.mk @@ -33,7 +33,7 @@ endef .PHONY: speculos_port_5001_test_internal speculos_port_5001_test_internal: $(call run_announce,$@) - $(call run_nodejs_test,5001,40001,getVersion.js) +# $(call run_nodejs_test,5001,40001,getVersion.js) $(call run_nodejs_test,5001,40001,getSerial.js) $(call run_nodejs_test,5001,40001,getPublicKey.js) $(call run_nodejs_test,5001,40001,decodeMessage.js) diff --git a/test-integration/snapshots/decodeMessage/nanosp.01.png b/test-integration/snapshots/decodeMessage/nanosp.01.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|}Aba4!+nDh2lAYZeBfNS9G z67_fWo|~uFO%PymTIO-U{r%63Dcc^W2u!^77^n*f4(zX3>$hP3%%g8V+lZ$XwWqKz zS?aG@)*Q!vms805%K(Cyn{I6wDUK67$&xr_9S1L+|P+CF7^-U^DoFze>i z-3wLsq&?QL4tTtyH)E^9JeIIky$#3QcHaJ1pzGuwQNP%}(Jt7%q2=Vwb1xd$dxP6S z42Jy`7q7qCZ0%Nd;AzP$zaFVdQ&MBb@0Ik86{{R30 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.03.png b/test-integration/snapshots/decodeMessage/nanosp.03.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a25bcc339c3581703c9debb8715b97f6567df6 GIT binary patch literal 592 zcmV-W0ctg`YUnZJ$di=Xuse*FM*h+N3L~m6cX)9cqWR(qro^wB_#nMi^ze z`dNRri?Qu<_w%rgMO%m3p}zFk*dR@ve9p=vs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T z?+DTv>m+UEJ6O_@<;cnjsE0&W$n+ao4Wl0{C9w^7O>gXg7Vc+N|H*NshdU#M#?c;C*f@|X6$@ke+0dq zm#LvMNcR!|0Qg#>a=<np(bsio{Mk~3eqEy1eOBI~H?QltTkN!u zwS24ED#7o|Q)$y)_(%;^>deI8NZ<}&*UL;FZq?8P+&uNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.06.png b/test-integration/snapshots/decodeMessage/nanosp.06.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.07.png b/test-integration/snapshots/decodeMessage/nanosp.07.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.08.png b/test-integration/snapshots/decodeMessage/nanosp.08.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50d7e0aefb037bc7c64b380116e1dd54e9430f GIT binary patch literal 347 zcmV-h0i^zkP)?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.09.png b/test-integration/snapshots/decodeMessage/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|}Aba4!+nDh2lAYZeBfNS9G z67_fWo|~uFO%PymTIO-U{r%63Dcc^W2u!^77^n*f4(zX3>$hP3%%g8V+lZ$XwWqKz zS?aG@)*Q!vms805%K(Cyn{I6wDUK67$&xr_9S1L+|P+CF7^-U^DoFze>i z-3wLsq&?QL4tTtyH)E^9JeIIky$#3QcHaJ1pzGuwQNP%}(Jt7%q2=Vwb1xd$dxP6S z42Jy`7q7qCZ0%Nd;AzP$zaFVdQ&MBb@0Ik86{{R30 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.12.png b/test-integration/snapshots/decodeMessage/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a25bcc339c3581703c9debb8715b97f6567df6 GIT binary patch literal 592 zcmV-W0ctg`YUnZJ$di=Xuse*FM*h+N3L~m6cX)9cqWR(qro^wB_#nMi^ze z`dNRri?Qu<_w%rgMO%m3p}zFk*dR@ve9p=vs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T z?+DTv>m+UEJ6O_@<;cnjsE0&W$n+ao4Wl0{C9w^7O>gXg7Vc+N|H*NshdU#M#?c;C*f@|X6$@ke+0dq zm#LvMNcR!|0Qg#>a=<np(bsio{Mk~3eqEy1eOBI~H?QltTkN!u zwS24ED#7o|Q)$y)_(%;^>deI8NZ<}&*UL;FZq?8P+&uNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.15.png b/test-integration/snapshots/decodeMessage/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.16.png b/test-integration/snapshots/decodeMessage/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.17.png b/test-integration/snapshots/decodeMessage/nanosp.17.png new file mode 100644 index 0000000000000000000000000000000000000000..5854c8c51cca8065ae0f2fed78a602134e03c123 GIT binary patch literal 380 zcmV-?0fYXDP)Y4+knlLomohBk6e{l6!xFJz`nVW=qq000000N`IdRu5oaMC_k) z&I?C!hGhcE(3c$3;Fo|s`enGgUs`ys9>An3&~|Zm6%l3qIli>uIs>rG=r(t}{gdwu zsABCH`i6n>Ivu;lQzm} zd_)rw$~jO^K=<5n)Q(mT^oZ*-Am?0$d%HAx_U>F0(B+r|^%68PTA?~tApigXEYQAC z_2ny8b4z};jl!)qVveLYVpV&m?e-irL6d)@^hdUERE@T_@79)%>b>aEuLq|(3gt+8 z228MPl&U0P@1vcMRJZcT=0N=+yd~y*_+%TUDl_0hG)ga~dFNh5y#!$;(|;WS00000 afT1@wsmK_v}6ba4!+nDh2#EZ-po0k=St zcP)SQGrv7z=5(yP)v@F<|NBaVrCHwTUDFg<$5iy?bU}H!S4CBMLXc?2&K;|bHh=p5e21oEDa(PgFU-RC{B3^6u_9@$#4nfk zni?M@s)Vb3jsOj8SbKB%x3zhj@6NEu-+uFL&%2&qF4c*PPw1^Tlu>!G#aO%|wq~E# zt_NSFlGn_-s(yLiMV5#X-(!}HnlCI(h_7Re!@Q!gf3y!M+=^@T@-v;+AmU`8b nwL)vv!tQ>5QxT9)fkAa#+N{NP^#*fUF%Z|&)z4*}Q$iB}=J}Bz literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.19.png b/test-integration/snapshots/decodeMessage/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|}Aba4!+nDh2lAYZeBfNS9G z67_fWo|~uFO%PymTIO-U{r%63Dcc^W2u!^77^n*f4(zX3>$hP3%%g8V+lZ$XwWqKz zS?aG@)*Q!vms805%K(Cyn{I6wDUK67$&xr_9S1L+|P+CF7^-U^DoFze>i z-3wLsq&?QL4tTtyH)E^9JeIIky$#3QcHaJ1pzGuwQNP%}(Jt7%q2=Vwb1xd$dxP6S z42Jy`7q7qCZ0%Nd;AzP$zaFVdQ&MBb@0Ik86{{R30 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.22.png b/test-integration/snapshots/decodeMessage/nanosp.22.png new file mode 100644 index 0000000000000000000000000000000000000000..63ca33084772046af8e4e052eabc24df0cb998ce GIT binary patch literal 724 zcmV;_0xSKAP)#6MGOsFf>H%FqaR=D?sxrcM_E6Oj2%O^C3dneMSQk6?QY-Bk@t=fC)_zi^@~XdV&C4+@ za2)>%$b&{TC3aUw_-oTnmDeCmXYlYX!>h$;8R*+wcCcsVD%b4YRlhNd5uP1_?!u+z z&Kmh=&(hAep4%LD2qA>{b8y#s5zeb17Wyons~}CS3@zC!D7uPFo}+2fCVp*(XsI-3 zK+JccDdSR21A9vxU$fBN#EzT7$$i-*#+5ApNwdzXz9qZMnlsvYfP3>lPyx&TP$jGm z2AbytK{-?yaYh^2eCyzPDMC&*pzRyaEW7p>@b3XwS7^?zBY^WoZIT4jOzt$m8EuX+ z9y`B!4u6ip8GFAc*AGG0Q4M0RP($~i?MsgEcgLbPK)v83Ed7(5Dg9LNToxOW+=?a; zJ(R^+Pi8qFMPz36P7q{`#5l z@x}hJjTqkVjOdg(a6wEh<7jtDKbi4sqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-# zv}eDa=*z_w5I#a)ed8qDlq9FbQP9S3uP{OgA%qY@9QX$QQqf6rBkvpl0000EaktG3V{fz&>V04u`vE z?;ZIqe{%Pm<4cY;7=*~?PX4}c*)&ELQSV@oCWapcUYbj%T#oxP^ZVM`y?YAQWXxn_ zuWOGny*X1cQTzFv;&~U<=IQ5FS-ssct+M=Aee=I%Azmjf!>iwJei|dY^3dDpzMgA~ zb2$?qMsIRnx$)T7m}fI@F+Z{YkDuCd z_y^yPqnzbM;WIlXu77Un61K~8*7-ZloGaGcTI>CV#aYbr+a%VFJ2-?(KIQnHd=7pMDm<-?6N^bP4;0`8#6WKgB+OpYIqZ9b{s( z_FlTR#Kg>8Gd7^UO5j(Gkq0MeZ5lGI{)z4*}Q$iB}_YeE5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.24.png b/test-integration/snapshots/decodeMessage/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8a714f721eb077d6860f5ca1a6361d924d4455 GIT binary patch literal 557 zcmV+|0@D47P)NklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NVEaktG3V_}@4O=lJPtEg znLqsJekyiXhm_*~B&L%FZ>v{#CLb_6rZEqsoq<8_`BK;0+qU*^y|%ok^Tt}CV_Tep z6Mt!4{`o0RN9eoF)@%KncTV{<_eyqu>&!wc$=0H^q01*#-s0Qp5P$sE7I*FRCyfEt zk6hKJ$?Q;f2&mT#TXQx@;hLGPNp9EK6DziwbtvANcqy_n%H1ZtyHx3{@vC_Zg6kD( zmd#pOFSXBh|0M3pSsPcT1%3CMbW->I53bF3c|W*y`F`Vx-7Hhx$Fsw9A6uUU zoSU|w;o9nhJN#F=?lqh7Yo=$Cw9(h)D*6v=nI~&1PcfcX;T|!6gQK*KyHDk@?Ba#% zyep>sId;eJ55K`emV+G5(gm;8l^7Uw4qp3E=FRkQL8Z7|=kb$fk8i16-?aVRrZ(0T zbBD#%LW`;u_c@+%FV-?_{joJnmC5#2nN(o%9WzR@lR=k^UbJW6J*TZHl=sw;sb8W|BE_~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.27.png b/test-integration/snapshots/decodeMessage/nanosp.27.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.28.png b/test-integration/snapshots/decodeMessage/nanosp.28.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.29.png b/test-integration/snapshots/decodeMessage/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbc447c72dd7395262af62672e5d0b2156bb7ad GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|wQCvY!j@0@XG6S_SFdW!lk;4CAPe;b>ck?VJ#ZQ^j zuuFC=WOi^Ed7wOyUJe+CUFuBcX`s(UX!He_jzm$j)#U715B)(T3~^rO$5xx4?}w)@+1 zf4!VxdHs(_{WMQIwg0&X@Aah)9Q7zoWoyU=v`d?>gl`oRXc0rH}jXMKPZ}2 zyr6>X*3bKg3j%FRuI%6dy8J}InWi4;<1tGXp7d~@Jh4qpnRlv#RFyecsS+)P_FbGGjOqzw!B=3C$TZABHWG&-t8vpM89sW zCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs|fi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~ zCt!$m#nA8S?SeMj&_%q*K@0!@60CR*7|vOJj~@{??)UpQXFtW%?^AAXnU#P}8rQE_ zd}nvye})$?`|bW&baWR>z%U)P)^4Ad)>O3``ZgpWnFJ(TZVlL{^`WI-pZq0awi2jX z0{|>YHI!?rp-WQ@O{N;klSx1_2}riw8lV~q00000yu=SW-KGAHTAhyo0000?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.32.png b/test-integration/snapshots/decodeMessage/nanosp.32.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|}Aba4!+nDh2lAYZeBfNS9G z67_fWo|~uFO%PymTIO-U{r%63Dcc^W2u!^77^n*f4(zX3>$hP3%%g8V+lZ$XwWqKz zS?aG@)*Q!vms805%K(Cyn{I6wDUK67$&xr_9S1L+|P+CF7^-U^DoFze>i z-3wLsq&?QL4tTtyH)E^9JeIIky$#3QcHaJ1pzGuwQNP%}(Jt7%q2=Vwb1xd$dxP6S z42Jy`7q7qCZ0%Nd;AzP$zaFVdQ&MBb@0Ik86{{R30 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.35.png b/test-integration/snapshots/decodeMessage/nanosp.35.png new file mode 100644 index 0000000000000000000000000000000000000000..63ca33084772046af8e4e052eabc24df0cb998ce GIT binary patch literal 724 zcmV;_0xSKAP)#6MGOsFf>H%FqaR=D?sxrcM_E6Oj2%O^C3dneMSQk6?QY-Bk@t=fC)_zi^@~XdV&C4+@ za2)>%$b&{TC3aUw_-oTnmDeCmXYlYX!>h$;8R*+wcCcsVD%b4YRlhNd5uP1_?!u+z z&Kmh=&(hAep4%LD2qA>{b8y#s5zeb17Wyons~}CS3@zC!D7uPFo}+2fCVp*(XsI-3 zK+JccDdSR21A9vxU$fBN#EzT7$$i-*#+5ApNwdzXz9qZMnlsvYfP3>lPyx&TP$jGm z2AbytK{-?yaYh^2eCyzPDMC&*pzRyaEW7p>@b3XwS7^?zBY^WoZIT4jOzt$m8EuX+ z9y`B!4u6ip8GFAc*AGG0Q4M0RP($~i?MsgEcgLbPK)v83Ed7(5Dg9LNToxOW+=?a; zJ(R^+Pi8qFMPz36P7q{`#5l z@x}hJjTqkVjOdg(a6wEh<7jtDKbi4sqgX2ig6N=D+7(Kl=Hz*Rk%fx|$47k0#dE-# zv}eDa=*z_w5I#a)ed8qDlq9FbQP9S3uP{OgA%qY@9QX$QQqf6rBkvpl0000EaktG3V{fz&>V04u`vE z?;ZIqe{%Pm<4cY;7=*~?PX4}c*)&ELQSV@oCWapcUYbj%T#oxP^ZVM`y?YAQWXxn_ zuWOGny*X1cQTzFv;&~U<=IQ5FS-ssct+M=Aee=I%Azmjf!>iwJei|dY^3dDpzMgA~ zb2$?qMsIRnx$)T7m}fI@F+Z{YkDuCd z_y^yPqnzbM;WIlXu77Un61K~8*7-ZloGaGcTI>CV#aYbr+a%VFJ2-?(KIQnHd=7pMDm<-?6N^bP4;0`8#6WKgB+OpYIqZ9b{s( z_FlTR#Kg>8Gd7^UO5j(Gkq0MeZ5lGI{)z4*}Q$iB}_YeE5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.37.png b/test-integration/snapshots/decodeMessage/nanosp.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7052724ced5fbc86ffd55ab51b5bba6278fd9b GIT binary patch literal 760 zcmVZk$p80000009ei+c75MBy}Yh# zVKN$>pzVJ*wUPT-Wuw%>Q``(P^QMH8~7v;g(T;CH>2x_bD&iTFpup z_Sg;MecvpxR{PkNiarAv*AGQ&YjqJ&3&>Q|oVv+)iqW9#7FnG#xbn~{7`1DKrWSn$ zur^Yg%(zSDH{`_M#I2HcEOk(iI#K&i^&lr1wdfttx`%adD@Esuv4vK3g2<6h`=$-gz~ckNHu~95A56_wMjz_Rr{NLR-Jf?wF237R2>doK1bEmq~+NMJIVv2e=Ukc@kAV2 zxH>by7|6~WpQSZ}#01pZsVhMj?;aqHU4_KsYB5@jJlORQW)Tk4hcq2?V zG~{~9@FrXwBZ$VPf+)494qJPsU9ua!Krkx9LMZ`cde(9Jwqf+)~L z0RZ5avho3DQmpOIV4wmT^>S4%(-0)ksOmh1^vbG2HXTrGibhp1q4V^SjgKqi1BsY@2VYW^fXSxLd z0HE{5C+A=E6m%w;C*d``PqX|2wriI2z!J2X_bowwUh&GzH+R6{O<#Fg2ShYWu#U(- qCKiKDcryp7p}9b_1ONbVI{yK>BLf(C3mqf?0000?P)Vjz#RfF_W()qD&EYj{cwbs|gTuS*5+O^X{9dU9ncE+_j8x~S zIRm=(a+*&yQ|(WiZy#S^L6)T-sye8zIzh&kHGR9V%?_|~cAabmy5@3hRV0WU>22Ta z1HVf-jL{{?p{-T0-BZ@0t1+ndh!Z~sWc?}NCcJkbIAl6wq$buBmNP6EgH;hV9jUci z(4|c{3f?gzvVQ;xOAv_=>VTm~L_!E5ORzOO9*L6}4DZH~I1VbtwIbKDyY8}qIiMXN zk(xxOUUX*=^-^`!d62)Q2hhwa$giF1@X}=zssE{WFa0?6ecJKvdTNpUZoIOhlC1b;y!JrPfxOM(-{iGNp(^nOd#Ur_rg0j$D6me-kdi zIBFyCd*yV`^eypnRms!I4*DOv3FF+G+Dq*dlc5^=Frg)=g~}))gnS({A7BQR_3SfP z^eKqDZjk6xkfnNdcYR~)s}1K+?Q2t(V1;~|H^S{eP6f!T5~<@bQLUWd79{f^hDWo) z%e6&FJBZ=>Uzs~+2b~bJ+@^KFj(jy%wa@%dJ>d3;!xTS*+$KvA1&9onNK-t>4d2Q# z$nE>c+8)%`gmLG&Zof+n9W+iOZk2yYK1lk8X`L|EbV~>!MB#&v&ENGDv>?eR;R(D? zu>1g?6)cCsCFo(^w*=w5;!BxN?tsOce&=N!5D_fNJZ}G8Vm{o2A7(8zG!Y7xgb+ej Z=NER$>vAvmiADeb002ovPDHLkV1jMPTWSCR literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.39.png b/test-integration/snapshots/decodeMessage/nanosp.39.png new file mode 100644 index 0000000000000000000000000000000000000000..14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9 GIT binary patch literal 358 zcmV-s0h#`ZP)~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.40.png b/test-integration/snapshots/decodeMessage/nanosp.40.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.41.png b/test-integration/snapshots/decodeMessage/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.42.png b/test-integration/snapshots/decodeMessage/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbc447c72dd7395262af62672e5d0b2156bb7ad GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|wQCvY!j@0@XG6S_SFdW!lk;4CAPe;b>ck?VJ#ZQ^j zuuFC=WOi^Ed7wOyUJe+CUFuBcX`s(UX!He_jzm$j)#U715B)(T3~^rO$5xx4?}w)@+1 zf4!VxdHs(_{WMQIwg0&X@Aah)9Q7zoWoyU=v`d?>gl`oRXc0rH}jXMKPZ}2 zyr6>X*3bKg3j%FRuI%6dy8J}InWi4;<1tGXp7d~@Jh4qpnRlv#RFyecsS+)P_FbGGjOqzw!B=3C$TZABHWG&-t8vpM89sW zCHCYIB@=KA{ZYj<)Js5*{xRHtHkR;}-GMs|fi4&Ksv_bz|D4~JQ1uBQ&1{%g9R6F~ zCt!$m#nA8S?SeMj&_%q*K@0!@60CR*7|vOJj~@{??)UpQXFtW%?^AAXnU#P}8rQE_ zd}nvye})$?`|bW&baWR>z%U)P)^4Ad)>O3``ZgpWnFJ(TZVlL{^`WI-pZq0awi2jX z0{|>YHI!?rp-WQ@O{N;klSx1_2}riw8lV~q00000yu=SW-KGAHTAhyo0000*#ld?JcI07pz^5RHHyKZU*6n>Kp} zoFT5F+?;l{u-O0@^r&nh`V>?-=5&3H_a4Fk007vGUhO&ai(~sByVk_L)j(Et)~TEJ z*oaMB+Bfre3yo~VsuWoDHMMe(dZT0Zt8S0(Gk_G?(006fV|3`MImlt1C<-k&)G^U}&@qu!|v#C^R zdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZaD+Ins1FW=b*;}S4N(t&@&rZQ10LhLr zo!OIAv8Hs~wS-j*D_{2rvBJ}7#$L&|0oM<2nn|g*vs2hB00SNw+cffQ@#3t&_hdr{ zcF))-Ury`*X|C_`QLBuq>W_Lqez{YTD$wdp#kkqe5nseTo8u)%&~qUG001zP<y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohE*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|}Aba4!+nDh2lAYZeBfNS9G z67_fWo|~uFO%PymTIO-U{r%63Dcc^W2u!^77^n*f4(zX3>$hP3%%g8V+lZ$XwWqKz zS?aG@)*Q!vms805%K(Cyn{I6wDUK67$&xr_9S1L+|P+CF7^-U^DoFze>i z-3wLsq&?QL4tTtyH)E^9JeIIky$#3QcHaJ1pzGuwQNP%}(Jt7%q2=Vwb1xd$dxP6S z42Jy`7q7qCZ0%Nd;AzP$zaFVdQ&MBb@0Ik86{{R30 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.49.png b/test-integration/snapshots/decodeMessage/nanosp.49.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a25bcc339c3581703c9debb8715b97f6567df6 GIT binary patch literal 592 zcmV-W0ctg`YUnZJ$di=Xuse*FM*h+N3L~m6cX)9cqWR(qro^wB_#nMi^ze z`dNRri?Qu<_w%rgMO%m3p}zFk*dR@ve9p=vs6`p>L+*b!xVLsTWS0r3c&#-TI|*4T z?+DTv>m+UEJ6O_@<;cnjsE0&W$n+ao4Wl0{C9w^7O>gXg7Vc+N|H*NshdU#M#?c;C*f@|X6$@ke+0dq zm#LvMNcR!|0Qg#>a=<np(bsio{Mk~3eqEy1eOBI~H?QltTkN!u zwS24ED#7o|Q)$y)_(%;^>deI8NZ<}&*UL;FZq?8P+&uNklQ@-F?zbcX>%jAoOazW24E1P~M_v=jgU004lu^QE3!Yx1$y`o>@e z9I>g8q|jB^?qx6EuJloP&r@stxX6DpO7d8^d(Cb`soWFVKUw>B>%H`CuHC4taz-8q zTWcz?UVdW9fqw!N^^fA^+HC@^f(^xuX&6jKO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8g zc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{=RC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB z1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh@~bdbsOTMGd(KuO36|r^Gi!GpazdEzMJrx19+Qo0?*9St zmI+>*4eL5K2H>vF?F0dHcYqZR=Oh_ZZ)Vph)Xv(9NV~YDxeA00000h~lBWfa`M3WxOnl z;!5stnSeUkqN z*u>gn=vV%pf)bCRM$A!&0RR91vH7iLXRtX|U{4u7o?$Y{vTJ=bS93Ef~}djok0- z8+QVTd(*fCgzb0sjYxpyerNfX@-{gG00000003YHZ;7u2M2#^xB>(^b07*qoM6N<$ Ef{+)ZYybcN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.52.png b/test-integration/snapshots/decodeMessage/nanosp.52.png new file mode 100644 index 0000000000000000000000000000000000000000..e23183a4c0d8ef4cc3a691d8665c4b9c37e9bd90 GIT binary patch literal 385 zcmV-{0e=38P)?Yj*NWIG*NC**W5F@nse@|+3V2cdU5C8xG0002+7N6A>7$+imJI1)M zCU>|@KpFay$29m$K#qPH?$d)Vd{_(7;_j7*l>Lvs>w?!O0L!$RxyR-o{5}DP zSbGe8;%^ib7={|L$3zSO004LaDdZ!a7d}*TqK0002!XZov%!(j1rYNjk7g?r0?(3XAb z-PXF0@u{EJFXL);Gk4MO?XCqS+s{s|C!p-jx6HvlU651zB*6HeZHx6Ts57jW)>#1n f000000KCy33cb~F6dyLg00000NkvXXu0mjfC=scD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.53.png b/test-integration/snapshots/decodeMessage/nanosp.53.png new file mode 100644 index 0000000000000000000000000000000000000000..56eff5485e79dd0f3771be67cb4e65b087e49838 GIT binary patch literal 393 zcmV;40e1e0P)Vh7bmoZIQO~|DL9sgA~S~m=XX000000{>8((0_TZHInFs7 z*5rzi4N!-^7O@%PH9(1e9q#UzAv~=sa8eWKaB+`HMC$QJ{}@8lCje$f-8^FVPjR1s zCe{%{zlk>sN=!qYxW_^a0000mux=gDte%vayNE2F*RL| z>WrGxZy1x7KZUY}J2mk;8=eYh?L^pvt%Bt?OLrf^I zQW8Gd(*WmcO0!@R00000NkvXXu0mjftTn7W literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.54.png b/test-integration/snapshots/decodeMessage/nanosp.54.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50d7e0aefb037bc7c64b380116e1dd54e9430f GIT binary patch literal 347 zcmV-h0i^zkP)?Yp-NWIH`m=K0&9J;k1yw5Ln&X876iYWmA00000U=|PW2J|ztyuB=o zV@s}(Oh6g>l42V45|E=`hP!!C!qd9}ovJ{~#a)$|mE+Ixt_0N{05^NLx#I1gbbCM* zYsJv7^xlFJuc1MVF%bg*0059uY84ek%M53zmLi7n@@_znYWby_5^oo0beC&>}ft`Z#*9W006_9s@{2wiI}r+6EQQZ zzB_MzhMvw9J}H#8eOvFW{zcYu`6) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.55.png b/test-integration/snapshots/decodeMessage/nanosp.55.png new file mode 100644 index 0000000000000000000000000000000000000000..0966b381351991acb6db707ea26cd67901f222f9 GIT binary patch literal 455 zcmV;&0XY7NP)y0cklD7Wow`|A;C>4000000001RgNTSo^eEo& z9X)`*lq>Yj=OjR*Uu%sW$y<^oV70;|jebd&fTqhq-sqQf3D6L0&{Idhl=2llfIG%j zC~5Rdx-+2Z!kstzxuv`12LJ#7VvP6A@jGEVrW;$Tt`yPUp1d^^k%NZ!a5I&3FJ{Ml zXemNoY)jW}>v5~swq<-9mA_i6_IqLi>@w2jz@EJNy4JcnsmH>#9yV|tu)QCbfN@Gb zoTN^ALUg%5E&-oyJoAoAz&Klvn!gW?-z7K!x+2@_VU`<800000xFzQIfVLxF72U41 zl-Xm7w#8N)R|i}*?i98Y9!t$yHS2=nKL>ZQbUHnt)9*Gv`@2-#*LI#epN4Yv|NcbQ z1N!}L6PbX{IMZ#6p05w9pvRV*;;W&~_xDTr)4%%Bv>!R7%y+~Y(B|fqYi5~UiuJQs x79V@SX}?%X`V+h_ehK>LNB{r;0002k=ohEm^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/decodeMessage/nanosp.57.png b/test-integration/snapshots/decodeMessage/nanosp.57.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVdMsLDm>KTVavw=27kJ*zhe0{GxCnz`Qk*iat|?u zx4)(&Nq*rHsJ4Im?z9`{`>UKKr>vsZ-4C4^S@l2jy;p!NW5lwunc8vx+TU@U_!YJB zHS^x(3!0B#XupxH$Obf2#~?>`f^J`h!Tj83^~}l5VV;%T-PjALng?TJtt9l!bx$V4dw?k~9@|yh@=R3?_sqAp*Nlv=R1INc# z5{tGOb3G8x{}pArJ2{0>Z~5gCCEniDZsQzF*X8Z0iS<_AYj*t)za6J>d(W$)pjy?P mz3gWhZ}VkAdVrsNXXOG&t;ucLK6T5<$$>W delta 295 zcmcb~bc<<%3a6r{i(^Q|oVT|o>dMq_dz>OL@z!GoFgUQkVy)kT`7@8c{cIziR@9!t zzGSJtW?6F_`;k}6pYF?<@*!@n!}2v3ib}&%(_VgEzE|6^lqF&2t;}^5zvOo*E3Dp{ z^pbh+?gh=aFSOrCR%8Pjs$-BNJ3+T^hvEF(XZg&@&E+oAGY+JOENJ_b>3J(Cy8gnf zn@@KyRNa&ISjRfx@s8e%tqSv4!dCS*9CO=w`(J^slY2z{V*5tBVE2ZWlQ+-3XkhOR zZU-?K_E%iI{%W(eTiJo9CA0jNEZmq=*rxlRZQ{0+#Cj{Qo@f8BZBsvG*1u~`h`eXs nW5?nH+nS{y-h_H~{!gae!m78E-9PUY1_^n(`njxgN@xNAV=9R} diff --git a/test-integration/snapshots/decodeMessage/nanox.03.png b/test-integration/snapshots/decodeMessage/nanox.03.png index a1a25bcc339c3581703c9debb8715b97f6567df6..a64aac087f0feb195d39ed1955fb16ec7ae0ba43 100644 GIT binary patch delta 74 zcmcb>a-L;^3ZvLY)whhcwmI3CEy{8d^1Ti*zgZlR#$;MzID-KlI4IPA>XcZ_&mLz2 OlJa!*b6Mw<&;$THi4(g3 delta 75 zcmX@la)D)n3ZwW&)whgxYgK=JGU=0*zA<~!2ZrAoQ)W8w#`35!paX#u@*n*q76_w$y85}Sb4q9e0G5>%Jpcdz diff --git a/test-integration/snapshots/decodeMessage/nanox.04.png b/test-integration/snapshots/decodeMessage/nanox.04.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..dbe6f3f714243705d4dc36ee44c5a707c83b1c64 100644 GIT binary patch delta 521 zcmV+k0`~o_1hNE>B!BryL_t(|ob8!gj>RAdK%L3#r2Aizdzp`B8Ul!D?c-+7`Knwh zh=?h-6aWAK0D#;1QsY{y9B$ioqca_L-;_&I=qfC?vX*aG`l`6+*|zQDJpaik$z$Q> znoUEg+!ETK?EE(M4t*PI*DI@>kq5$Bt8%OrpIEZvp8&=7M}P5R?G^!7!Mfu5)O9AK zCXK3B>~hLr<&jGWR@X8uCH@IeF>*r|yk-3xnj|0MmS$|rP3qA}-2HQBu!l@a{0(Tm zqqeu@VzOd9LTfoEv6(LSW>0)2*`HG-C_t{q4e@B)m(-#qMl+MdK6L9($!x%pESY?f z$}0DjP|-TVaew`taJwt-3Ijtj$B&^^SXK;@yK=)MpUc@21Sgr_fa^XE0RZ4FRKe4} zl+ycZJ?Z4cC-F&A%{bZKdikyUa`!B$4Y1grgla#iPZ-;w40@vOeyeA9l8jo*P`pNW z!lB_jZfDI(<{n}z6T*BgI%6ecF63J) zx|vn2P}^%OBIs(^Vp%IJrX#=1@O=H#`O1(1)2XK@vKnlK}!08vpO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s<{90000{+_V>PUCz0Tw{25g$uC?c zpbmY_V;cM=phUk8cXQH(yY>PuIt1EX+`Y;<*Vmu^OBcMJ0H`_J<{r0y@_PafvGy4H zoxi7`#AB!tYZPJt002O2eyiCP?9rc=13SrnXfNQ@q0p5-xqmcgH=y87K)*?01fTOL?c90RR9100026f+vdV1Vk}WU&jCd002ovPDHLkV1nx- BjY$9i delta 303 zcmV+~0nq;D0_FmcK!4cWB5mpaJs~klTG-ZVN&o-=0001p;-S5O>vGOzyey02O73u( zfI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66arY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!% zSN@)Y5|5!q%u$E|00027`K@MWuttAa4(ufRrM-Y%n?hIqX|U{4u7o?$Y{vTJ=bS93Ef~}djok0-8+QVT zd(*fCgzb0sjVMTf<$h=Rmhv_^0{{R30001B25*V41VoK7I3)l8002ovPDHLkV1iyW Bl&$~( diff --git a/test-integration/snapshots/decodeMessage/nanox.10.png b/test-integration/snapshots/decodeMessage/nanox.10.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVdMsLDm>KTVavw=27kJ*zhe0{GxCnz`Qk*iat|?u zx4)(&Nq*rHsJ4Im?z9`{`>UKKr>vsZ-4C4^S@l2jy;p!NW5lwunc8vx+TU@U_!YJB zHS^x(3!0B#XupxH$Obf2#~?>`f^J`h!Tj83^~}l5VV;%T-PjALng?TJtt9l!bx$V4dw?k~9@|yh@=R3?_sqAp*Nlv=R1INc# z5{tGOb3G8x{}pArJ2{0>Z~5gCCEniDZsQzF*X8Z0iS<_AYj*t)za6J>d(W$)pjy?P mz3gWhZ}VkAdVrsNXXOG&t;ucLK6T5<$$>W delta 295 zcmcb~bc<<%3a6r{i(^Q|oVT|o>dMq_dz>OL@z!GoFgUQkVy)kT`7@8c{cIziR@9!t zzGSJtW?6F_`;k}6pYF?<@*!@n!}2v3ib}&%(_VgEzE|6^lqF&2t;}^5zvOo*E3Dp{ z^pbh+?gh=aFSOrCR%8Pjs$-BNJ3+T^hvEF(XZg&@&E+oAGY+JOENJ_b>3J(Cy8gnf zn@@KyRNa&ISjRfx@s8e%tqSv4!dCS*9CO=w`(J^slY2z{V*5tBVE2ZWlQ+-3XkhOR zZU-?K_E%iI{%W(eTiJo9CA0jNEZmq=*rxlRZQ{0+#Cj{Qo@f8BZBsvG*1u~`h`eXs nW5?nH+nS{y-h_H~{!gae!m78E-9PUY1_^n(`njxgN@xNAV=9R} diff --git a/test-integration/snapshots/decodeMessage/nanox.12.png b/test-integration/snapshots/decodeMessage/nanox.12.png index a1a25bcc339c3581703c9debb8715b97f6567df6..a64aac087f0feb195d39ed1955fb16ec7ae0ba43 100644 GIT binary patch delta 74 zcmcb>a-L;^3ZvLY)whhcwmI3CEy{8d^1Ti*zgZlR#$;MzID-KlI4IPA>XcZ_&mLz2 OlJa!*b6Mw<&;$THi4(g3 delta 75 zcmX@la)D)n3ZwW&)whgxYgK=JGU=0*zA<~!2ZrAoQ)W8w#`35!paX#u@*n*q76_w$y85}Sb4q9e0G5>%Jpcdz diff --git a/test-integration/snapshots/decodeMessage/nanox.13.png b/test-integration/snapshots/decodeMessage/nanox.13.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..dbe6f3f714243705d4dc36ee44c5a707c83b1c64 100644 GIT binary patch delta 521 zcmV+k0`~o_1hNE>B!BryL_t(|ob8!gj>RAdK%L3#r2Aizdzp`B8Ul!D?c-+7`Knwh zh=?h-6aWAK0D#;1QsY{y9B$ioqca_L-;_&I=qfC?vX*aG`l`6+*|zQDJpaik$z$Q> znoUEg+!ETK?EE(M4t*PI*DI@>kq5$Bt8%OrpIEZvp8&=7M}P5R?G^!7!Mfu5)O9AK zCXK3B>~hLr<&jGWR@X8uCH@IeF>*r|yk-3xnj|0MmS$|rP3qA}-2HQBu!l@a{0(Tm zqqeu@VzOd9LTfoEv6(LSW>0)2*`HG-C_t{q4e@B)m(-#qMl+MdK6L9($!x%pESY?f z$}0DjP|-TVaew`taJwt-3Ijtj$B&^^SXK;@yK=)MpUc@21Sgr_fa^XE0RZ4FRKe4} zl+ycZJ?Z4cC-F&A%{bZKdikyUa`!B$4Y1grgla#iPZ-;w40@vOeyeA9l8jo*P`pNW z!lB_jZfDI(<{n}z6T*BgI%6ecF63J) zx|vn2P}^%OBIs(^Vp%IJrX#=1@O=H#`O1(1)2XK@vKnlK}!08vpO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s<{90000{+_V>PUCz0Tw{25g$uC?c zpbmY_V;cM=phUk8cXQH(yY>PuIt1EX+`Y;<*Vmu^OBcMJ0H`_J<{r0y@_PafvGy4H zoxi7`#AB!tYZPJt002O2eyiCP?9rc=13SrnXfNQ@q0p5-xqmcgH=y87K)*?01fTOL?c90RR9100026f+vdV1Vk}WU&jCd002ovPDHLkV1nx- BjY$9i delta 303 zcmV+~0nq;D0_FmcK!4cWB5mpaJs~klTG-ZVN&o-=0001p;-S5O>vGOzyey02O73u( zfI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66arY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!% zSN@)Y5|5!q%u$E|00027`K@MWuttAa4(ufRrM-Y%n?hIqX|U{4u7o?$Y{vTJ=bS93Ef~}djok0-8+QVT zd(*fCgzb0sjVMTf<$h=Rmhv_^0{{R30001B25*V41VoK7I3)l8002ovPDHLkV1iyW Bl&$~( diff --git a/test-integration/snapshots/decodeMessage/nanox.20.png b/test-integration/snapshots/decodeMessage/nanox.20.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVdMsLDm>KTVavw=27kJ*zhe0{GxCnz`Qk*iat|?u zx4)(&Nq*rHsJ4Im?z9`{`>UKKr>vsZ-4C4^S@l2jy;p!NW5lwunc8vx+TU@U_!YJB zHS^x(3!0B#XupxH$Obf2#~?>`f^J`h!Tj83^~}l5VV;%T-PjALng?TJtt9l!bx$V4dw?k~9@|yh@=R3?_sqAp*Nlv=R1INc# z5{tGOb3G8x{}pArJ2{0>Z~5gCCEniDZsQzF*X8Z0iS<_AYj*t)za6J>d(W$)pjy?P mz3gWhZ}VkAdVrsNXXOG&t;ucLK6T5<$$>W delta 295 zcmcb~bc<<%3a6r{i(^Q|oVT|o>dMq_dz>OL@z!GoFgUQkVy)kT`7@8c{cIziR@9!t zzGSJtW?6F_`;k}6pYF?<@*!@n!}2v3ib}&%(_VgEzE|6^lqF&2t;}^5zvOo*E3Dp{ z^pbh+?gh=aFSOrCR%8Pjs$-BNJ3+T^hvEF(XZg&@&E+oAGY+JOENJ_b>3J(Cy8gnf zn@@KyRNa&ISjRfx@s8e%tqSv4!dCS*9CO=w`(J^slY2z{V*5tBVE2ZWlQ+-3XkhOR zZU-?K_E%iI{%W(eTiJo9CA0jNEZmq=*rxlRZQ{0+#Cj{Qo@f8BZBsvG*1u~`h`eXs nW5?nH+nS{y-h_H~{!gae!m78E-9PUY1_^n(`njxgN@xNAV=9R} diff --git a/test-integration/snapshots/decodeMessage/nanox.22.png b/test-integration/snapshots/decodeMessage/nanox.22.png index 63ca33084772046af8e4e052eabc24df0cb998ce..eb63da2dc63bbf2c9c98562213a0b1b895d32acb 100644 GIT binary patch delta 699 zcmV;s0!01P1=9tPB!8MoL_t(|ob8%ha^)ZlM48m=g#9mxz2qYm6$Pky$;jOF`LZzx znKum~5JCtcgb?z6Qc5W$Z!g;H`&J~c4dx-~7cKb+UrT->PS#M7SBx>nxMK~x=DEn% z{28ax_&@7qPD&}pC|Tyuntu`^k@Hj_PHm^otB73q7FwmFRexBs9P1z1XSWCZ{HMIi zvouC2l%fbm%A#&rxt%&M>|4{x+CH|4(W)7+)dRYK;tsI&6=j6&oS~>85IDuN6(Cr3 zSQ9(@rIy>-#C{UaS^LR4l~w(TH7m!oz;Wy=Kn9IsO6;zV@YklDBCkQ3&fwv@4lfp? zd7y1`Il-BgYkzmmZnBM-weai^bQdNqch<rGyeHQWLDx|XVy{p`&!Fu~ zT==_V(Ho#%;0a6L6Q9yg8P8>LAjz%Zqj2*qd_9@PL5dJ&^-d6B#Qx7~zE5oKt-3zk z$E?gbl79+3?q}57=bkVuAaJUvu#suqN&8-!x9N<>CqmA0e;4aT0Dyl2hU+Xydn6 h7$JlZLI@!Sd;_bw&a$#}D6{|o002ovPDHLkV1iBnRP_J= delta 700 zcmV;t0z>`N1=IzQB!8PpL_t(|ob8%ha^)ZlM48m=g#9mxz2qYmibAM)NCtD$=gY<* zWZpD{KnNj(5JJfNNhzh2PJ7YD?pu{y8Z1N7FIw^uzLxw%?5v?GuNY&D(P9m}mbv7w z>H%FqaR=D?sxrcM_E6Oj2%O^C3dneM zSQk6?QY-Bk@t=fC)_zi^@~XdV&C4+@a2)>%$b&{TC3aUw_-oTnmDeCmXYlYX!>h$; z8R*+wcCcsVDu37P-BrIaixHk3g6_hl<<1)UXV22kww~J@b_gMa_;YaAdJ)d6AQt*8 zo~s~Dtqd*MD=4~(OrE1@(k6awhG?lYXF$w%p(*21O#^#N9AC50-NcTY!pVKvB*v92 z|4FmXs=g(=%bGLVd4PNKKTrY7|4=2Y4hEX%1VK4e7=Lj_8`*s8;Cd-SPBx(J8_z7e z_80K)0a#aP&aNYX^F?iv1k+6JG{6~cjxioPzj_XTj=>pwzbDrZLDx|YVy{p`_n_@d zj_`NKqBlUj;3O>llbk92RPbCD8H)Z|y^76VZM_?M#jTLdUTu{k+@-`1;MgQAmB=cjtDAO} zXE5%$i?xIhLI@$`0<>E!FjkYu2_mo-$ z1ph)p000000QhiHN-3q&UbLC_t?ZuuF|0_L0SA7DTvgebp~_Z_F~&Hft$Mz+$>Egk zQs(aPe+T^yA*B>!%=XG>&AHr?h09)sjMO7-Rl=2TK@X)wYk!wxnP+MRT;t3?^K+hz zIVe>KJh5m_$uho`E!(%IlTyDq+&)^S4aQeM7bD!koMlyvY(39WWu=*<`OH0-fXu4Z zxWYQ+uU{l0N``k{Pyc)w^v7M z0Q>RVH6-sk-@gTEWyq?KsntHqMvqL%WkS=Vsq%O(6>7q^IlI@g>Z$z-6W(77?Z$2| zj}p7lsmFNeI%&Tc8%iWo#kgB*)}HJ~nBPfe>MIws)l5)N1-x0rcl!4z_O{@3(iZC~ z*;k5?AHN{T6_At@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf D0dM)s diff --git a/test-integration/snapshots/decodeMessage/nanox.24.png b/test-integration/snapshots/decodeMessage/nanox.24.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..dbe6f3f714243705d4dc36ee44c5a707c83b1c64 100644 GIT binary patch delta 521 zcmV+k0`~o_1hNE>B!BryL_t(|ob8!gj>RAdK%L3#r2Aizdzp`B8Ul!D?c-+7`Knwh zh=?h-6aWAK0D#;1QsY{y9B$ioqca_L-;_&I=qfC?vX*aG`l`6+*|zQDJpaik$z$Q> znoUEg+!ETK?EE(M4t*PI*DI@>kq5$Bt8%OrpIEZvp8&=7M}P5R?G^!7!Mfu5)O9AK zCXK3B>~hLr<&jGWR@X8uCH@IeF>*r|yk-3xnj|0MmS$|rP3qA}-2HQBu!l@a{0(Tm zqqeu@VzOd9LTfoEv6(LSW>0)2*`HG-C_t{q4e@B)m(-#qMl+MdK6L9($!x%pESY?f z$}0DjP|-TVaew`taJwt-3Ijtj$B&^^SXK;@yK=)MpUc@21Sgr_fa^XE0RZ4FRKe4} zl+ycZJ?Z4cC-F&A%{bZKdikyUa`!B$4Y1grgla#iPZ-;w40@vOeyeA9l8jo*P`pNW z!lB_jZfDI(<{n}z6T*BgI%6ecF63J) zx|vn2P}^%OBIs(^Vp%IJrX#=1@O=H#`O1(1)2XK@vKnlK}!08vpO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@sO7AKy9Zt@%~53UHXw}h5gRmvDCbQPAbvYgM>gH7U|r`G!GY%ZmICH3U7 za5K&(qf)N5+Ej8++ocxh+gQ8ySmlg75L!oCk%=W2%@d%gKYtW2)@~_KYr7u0HpOOS z)T9mS73)YDtUS_@mb1k>k?t97o&XiEAbhTxtKSXZnP16;TAHz`Zc>jFkg#iR>`cGFI>a_2gHdJyto4kjd2svtyBRq!*_rcX1XQ&u&Nbmdu>Go zT@3?Pwj$1(VCP%U;UAl-GA^&0m$uRAEtBGU4 zHpVEPQUCw|00186rA6DewU4#dr;Lf%trEtxLQ`S-D%1J$UMv##Jhj%3v$>S=oz!cO zg_&_W8HIAKRi~19+77iqU&q?CM=NLKflxc*MJARUxFWV~lF2Ra_zJV# z4e&;aP4*03vmASl45Bl=-J3n}h2&7qmY{&vtHHQWsYSgunEIJXVjD8`rz9`oeFKvz zBa}0qct=>Duzx`tJV#7<#%pt-u1k27{Knid{0}gp1i=VH8*u9pWP%&%* zLpSuz43(f3I->vp00000000000000000000000000PtV=0a<4GzV1>)0ssI207*qo IM6N<$f>nU>ng9R* diff --git a/test-integration/snapshots/decodeMessage/nanox.26.png b/test-integration/snapshots/decodeMessage/nanox.26.png index 14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9..94384bb38c0ef6a19e2e3cd17d8b8d8290a98075 100644 GIT binary patch delta 303 zcmV+~0nq;D0_FmcKz|Ttq%HlwCnQEm3)@;v2><{90000{+_V>PUCz0Tw{25g$uC?c zpbmY_V;cM=phUk8cXQH(yY>PuIt1EX+`Y;<*Vmu^OBcMJ0H`_J<{r0y@_PafvGy4H zoxi7`#AB!tYZPJt002O2eyiCP?9rc=13SrnXfNQ@q0p5-xqmcgH=y87K)*?01fTOL?c90RR9100026f+vdV1Vk}WU&jCd002ovPDHLkV1nx- BjY$9i delta 303 zcmV+~0nq;D0_FmcK!4cWB5mpaJs~klTG-ZVN&o-=0001p;-S5O>vGOzyey02O73u( zfI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66arY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!% zSN@)Y5|5!q%u$E|00027`K@MWuttAa4(ufRrM-Y%n?hIqX|U{4u7o?$Y{vTJ=bS93Ef~}djok0-8+QVT zd(*fCgzb0sjVMTf<$h=Rmhv_^0{{R30001B25*V41VoK7I3)l8002ovPDHLkV1iyW Bl&$~( diff --git a/test-integration/snapshots/decodeMessage/nanox.30.png b/test-integration/snapshots/decodeMessage/nanox.30.png index 6fb64278872da49278bf6b6e344d72375d2a804d..dc6bcf5b9c3b7de2cbb24023166a8efa80a7bec9 100644 GIT binary patch delta 37 scmdnOw1sKHSGM#2gbFwDO#H1XVjH~lpT_;uI~ah#)78&qol`;+06XUodH?_b delta 37 scmdnOw1sKHSGM_oRFk#|P5iAYVs&@vzrLus{R}|h>FVdQ&MBb@06T~eX8-^I diff --git a/test-integration/snapshots/decodeMessage/nanox.33.png b/test-integration/snapshots/decodeMessage/nanox.33.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVdMsLDm>KTVavw=27kJ*zhe0{GxCnz`Qk*iat|?u zx4)(&Nq*rHsJ4Im?z9`{`>UKKr>vsZ-4C4^S@l2jy;p!NW5lwunc8vx+TU@U_!YJB zHS^x(3!0B#XupxH$Obf2#~?>`f^J`h!Tj83^~}l5VV;%T-PjALng?TJtt9l!bx$V4dw?k~9@|yh@=R3?_sqAp*Nlv=R1INc# z5{tGOb3G8x{}pArJ2{0>Z~5gCCEniDZsQzF*X8Z0iS<_AYj*t)za6J>d(W$)pjy?P mz3gWhZ}VkAdVrsNXXOG&t;ucLK6T5<$$>W delta 295 zcmcb~bc<<%3a6r{i(^Q|oVT|o>dMq_dz>OL@z!GoFgUQkVy)kT`7@8c{cIziR@9!t zzGSJtW?6F_`;k}6pYF?<@*!@n!}2v3ib}&%(_VgEzE|6^lqF&2t;}^5zvOo*E3Dp{ z^pbh+?gh=aFSOrCR%8Pjs$-BNJ3+T^hvEF(XZg&@&E+oAGY+JOENJ_b>3J(Cy8gnf zn@@KyRNa&ISjRfx@s8e%tqSv4!dCS*9CO=w`(J^slY2z{V*5tBVE2ZWlQ+-3XkhOR zZU-?K_E%iI{%W(eTiJo9CA0jNEZmq=*rxlRZQ{0+#Cj{Qo@f8BZBsvG*1u~`h`eXs nW5?nH+nS{y-h_H~{!gae!m78E-9PUY1_^n(`njxgN@xNAV=9R} diff --git a/test-integration/snapshots/decodeMessage/nanox.35.png b/test-integration/snapshots/decodeMessage/nanox.35.png index 63ca33084772046af8e4e052eabc24df0cb998ce..eb63da2dc63bbf2c9c98562213a0b1b895d32acb 100644 GIT binary patch delta 699 zcmV;s0!01P1=9tPB!8MoL_t(|ob8%ha^)ZlM48m=g#9mxz2qYm6$Pky$;jOF`LZzx znKum~5JCtcgb?z6Qc5W$Z!g;H`&J~c4dx-~7cKb+UrT->PS#M7SBx>nxMK~x=DEn% z{28ax_&@7qPD&}pC|Tyuntu`^k@Hj_PHm^otB73q7FwmFRexBs9P1z1XSWCZ{HMIi zvouC2l%fbm%A#&rxt%&M>|4{x+CH|4(W)7+)dRYK;tsI&6=j6&oS~>85IDuN6(Cr3 zSQ9(@rIy>-#C{UaS^LR4l~w(TH7m!oz;Wy=Kn9IsO6;zV@YklDBCkQ3&fwv@4lfp? zd7y1`Il-BgYkzmmZnBM-weai^bQdNqch<rGyeHQWLDx|XVy{p`&!Fu~ zT==_V(Ho#%;0a6L6Q9yg8P8>LAjz%Zqj2*qd_9@PL5dJ&^-d6B#Qx7~zE5oKt-3zk z$E?gbl79+3?q}57=bkVuAaJUvu#suqN&8-!x9N<>CqmA0e;4aT0Dyl2hU+Xydn6 h7$JlZLI@!Sd;_bw&a$#}D6{|o002ovPDHLkV1iBnRP_J= delta 700 zcmV;t0z>`N1=IzQB!8PpL_t(|ob8%ha^)ZlM48m=g#9mxz2qYmibAM)NCtD$=gY<* zWZpD{KnNj(5JJfNNhzh2PJ7YD?pu{y8Z1N7FIw^uzLxw%?5v?GuNY&D(P9m}mbv7w z>H%FqaR=D?sxrcM_E6Oj2%O^C3dneM zSQk6?QY-Bk@t=fC)_zi^@~XdV&C4+@a2)>%$b&{TC3aUw_-oTnmDeCmXYlYX!>h$; z8R*+wcCcsVDu37P-BrIaixHk3g6_hl<<1)UXV22kww~J@b_gMa_;YaAdJ)d6AQt*8 zo~s~Dtqd*MD=4~(OrE1@(k6awhG?lYXF$w%p(*21O#^#N9AC50-NcTY!pVKvB*v92 z|4FmXs=g(=%bGLVd4PNKKTrY7|4=2Y4hEX%1VK4e7=Lj_8`*s8;Cd-SPBx(J8_z7e z_80K)0a#aP&aNYX^F?iv1k+6JG{6~cjxioPzj_XTj=>pwzbDrZLDx|YVy{p`_n_@d zj_`NKqBlUj;3O>llbk92RPbCD8H)Z|y^76VZM_?M#jTLdUTu{k+@-`1;MgQAmB=cjtDAO} zXE5%$i?xIhLI@$`0<>E!FjkYu2_mo-$ z1ph)p000000QhiHN-3q&UbLC_t?ZuuF|0_L0SA7DTvgebp~_Z_F~&Hft$Mz+$>Egk zQs(aPe+T^yA*B>!%=XG>&AHr?h09)sjMO7-Rl=2TK@X)wYk!wxnP+MRT;t3?^K+hz zIVe>KJh5m_$uho`E!(%IlTyDq+&)^S4aQeM7bD!koMlyvY(39WWu=*<`OH0-fXu4Z zxWYQ+uU{l0N``k{Pyc)w^v7M z0Q>RVH6-sk-@gTEWyq?KsntHqMvqL%WkS=Vsq%O(6>7q^IlI@g>Z$z-6W(77?Z$2| zj}p7lsmFNeI%&Tc8%iWo#kgB*)}HJ~nBPfe>MIws)l5)N1-x0rcl!4z_O{@3(iZC~ z*;k5?AHN{T6_At@$oO7PhCY~>CdOGd6 zmU(yje}n#}R7%M?S9|TVBuje^LR=P==&)kCvsI1zp zOY{Uo7D@J!1+lmYw~WP0zqKlVRa;!4ko3>AF%~DF9vY$~-rkPs_5B)tQQ@kf%?Fo?v|FP^DaA+@<~6`jE;%iU#bEg-8NjO=n&=t+qFNr?V= z$iaEY!Fk9500000000000000000000000000DLF^uT2ZEhCZlr00000NkvXXu0mjf D0dM)s diff --git a/test-integration/snapshots/decodeMessage/nanox.37.png b/test-integration/snapshots/decodeMessage/nanox.37.png index 8b7052724ced5fbc86ffd55ab51b5bba6278fd9b..7624fa47d7a429c94f95b90fe7b95949782b1d64 100644 GIT binary patch delta 732 zcmV<20wewS1@r}wB!9a}L_t(|ob8)klI$P|g}qaEC)xj!vX^ci~^nVq=xc*4mSgS=qZ6HHY zW2y$@X+}F`x5&pyjg^N!g7I{vuBk;|0c?!aAv5lh@ijT|4{@ob-ItowtxnYWQ$5H< zMlJdTlT{&s|2wO5TsM>NNuOW7c-7&vETfs^+#T7tkJ{Sz?na0mbZ zU_UoucPuH@&Z~n#b{vL7sEBb?*gAZ_Jv_V;E;W=Q)d(g$u)~YgCJi-Iop1J8b>eAO z>d1aZ)nU_RKdPoCEqx#CUOJ5aS~Sv&r^lwkRapT>B7Zw?>d6L53Kjok7?a|hOOEQTR zJ7q7%_Z+gp+)dce$fDl9H|zy!=w^CK5Cxhj004X`D_>wH^|k#SZ0Icrd+#_yZ$XCk znac7=>3`T_-_H7F?LA6oHC-mTok&%HY}H3SqUpF=xxlTTu!ERCnk*be_4{^44`P`n z{cq)(opeqNbQ?1P8C8OAinXCLDJj z?)Hn+&`EhZ=$8LVawFjzX23K``DI>K7Ruk*AGQ&YjqJ&3&>Q| zoVv+)iqW9#7FnG#xbn~{7`1DKrWSn$ur^Yg%(zSDH{`_M#I2HcEOk(iI#K&i^&lr1 zwdfttx`%adD@Esuv4vK3g2<6h`=$lK^N~HAdOvx z#N%o)St6)Z*$QcNc4?C!MSRq#6PkDcy?t-k3)IlfJXwM$&_n?M;Fq%U0cKLH?ayGLry%UTaY9c)hW1(7 z@<{g$4uAD_7MGRxD4pHmGRf^kx&q{=KI#!o<7(vsw|>$NV*YHZaFiAI?L-e^l_C9a z<(!>#PE2&0(*YIv1KFj$;NSJ&FYj@f;%A=QoDT5of3_^@VaS8r@LRV`a{E5Awg>fR z!npHvx4%dYoit8^Zu!3?HBLf(C S3mqf?0000_hqO6 diff --git a/test-integration/snapshots/decodeMessage/nanox.38.png b/test-integration/snapshots/decodeMessage/nanox.38.png index 05aa18f866fd116a8efc99c759437c1f5aaa3842..759abef534e02a7516521d7a59b2479838bb8cfd 100644 GIT binary patch delta 721 zcmV;?0xtdM1?dHlB!93;L_t(|ob8)il7t`(MVYDD3Hx7?dzlZbEh;aA1dR4QUo9O& zcm=t3mjVC)0002Ma(;Nxwr%ZYt#wr}7JF1An6^+f2(KlaU+s$|{qCpM`nZ@&DSuA8 zc3Frsj!#BnTx;c1NnCA*nPJcST8xJqd&-SM-Vm*4?2-d@1%D9gha&a0m@YlLZ4BfV-jLFndD@0(jV;oO6xXP_0!V)u-6xuf_NU#q&o5_1nx!48IH`M`c;=S2 zd`Z~q0BCoTLDmAznU1xF48mu6J2v~oCnblmHw78Ats3n2kX+OogJ|z@V#nagKgBr! z$CUBRn%1~Caet9QJO4Uk=qf)gG%9N6_;JY%f^&nvmuKAm0s>MH7-47trXCRi005+5 zYq&iUqi`_13rFH{ykcA{a;4pM(*|bX9RLp3B#3%J4l?4U=!$sYpScI8nO2eAI?-X* z}9N z)>fKMCzl41QpCO!WZtD`L-ct=u0OcG2^YsaY9p{m<#f-qEwy@2^;EHsPCJgbYwjlO z=i1UvwNEStYUs@jrJxolqW}Q#b*y}VnN-)k&tRiZLD+Q%8GQ=UR8R7)Z7hnE{B}|= zvG*vQo`0X_&2T%BQvtG9A~hTas+9}eI*B}p`J>73axDpA2Qk0?SJtlCNhic8w_yXY z!vivOG0j74mrWY%D7V2k<%>z004m(ADh4HDJUVqC*cJ=PfD~gY;6;`LS*+((X95*4M>cO8F1k zwbMc!adI$r#ct<`v>F_P{i%8FPm$Gk>6?{!z5HR+oaVY_*1J zOnw-MSsO!_MOLI-TzT4xSd}f>j8x~SIRm=(a+*&yQ|(WiZy#S^L6)T-sye8zIzh&k zHGR9V%?_|~cAabmy5@3hRV0WU>22Ta1HVf-jL{{?p{-T0-BZ@0t1+ndh!Z~sWc?}N zCcJkbIAl6wq<<#X6qYkA7=u+2H65w7TF|9UI11h|BeH)02}=-(5bA)TM?^vhAxp3| zJRXUY7!2>mkvI-2#hRKK z6siBIcQ5@o^?xG~UyCB8ASL1p*X8#C{=jiEu0Uci>VH5~*8rc(dw@(tl-qU4l0v1{ zR+>idE*&zZh(noLtjF2FcyBk+6WbkFoH@p4tk)5#9{AG-fGg$N~h`Vl(=u?oTdUkhxW9zF8=TPlyQize^1rG)^OKm48V- zNcx6poiNsPO9&xE;e(IO-}MxvAvmiADeb002ovPDHLkV1iQ- BTJZn? diff --git a/test-integration/snapshots/decodeMessage/nanox.39.png b/test-integration/snapshots/decodeMessage/nanox.39.png index 14b19bdf3efdfb7c767cdf8e25ca7a1fbe17a7d9..94384bb38c0ef6a19e2e3cd17d8b8d8290a98075 100644 GIT binary patch delta 303 zcmV+~0nq;D0_FmcKz|Ttq%HlwCnQEm3)@;v2><{90000{+_V>PUCz0Tw{25g$uC?c zpbmY_V;cM=phUk8cXQH(yY>PuIt1EX+`Y;<*Vmu^OBcMJ0H`_J<{r0y@_PafvGy4H zoxi7`#AB!tYZPJt002O2eyiCP?9rc=13SrnXfNQ@q0p5-xqmcgH=y87K)*?01fTOL?c90RR9100026f+vdV1Vk}WU&jCd002ovPDHLkV1nx- BjY$9i delta 303 zcmV+~0nq;D0_FmcK!4cWB5mpaJs~klTG-ZVN&o-=0001p;-S5O>vGOzyey02O73u( zfI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66arY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!% zSN@)Y5|5!q%u$E|00027`K@MWuttAa4(ufRrM-Y%n?hIqX|U{4u7o?$Y{vTJ=bS93Ef~}djok0-8+QVT zd(*fCgzb0sjVMTf<$h=Rmhv_^0{{R30001B25*V41VoK7I3)l8002ovPDHLkV1iyW Bl&$~( diff --git a/test-integration/snapshots/decodeMessage/nanox.43.png b/test-integration/snapshots/decodeMessage/nanox.43.png index 6fb64278872da49278bf6b6e344d72375d2a804d..dc6bcf5b9c3b7de2cbb24023166a8efa80a7bec9 100644 GIT binary patch delta 37 scmdnOw1sKHSGM#2gbFwDO#H1XVjH~lpT_;uI~ah#)78&qol`;+06XUodH?_b delta 37 scmdnOw1sKHSGM_oRFk#|P5iAYVs&@vzrLus{R}|h>FVdQ&MBb@06T~eX8-^I diff --git a/test-integration/snapshots/decodeMessage/nanox.44.png b/test-integration/snapshots/decodeMessage/nanox.44.png index 5a9a698b9ef0161df686d9e7c0eefcda79141330..d9bc6a61c548440d73bb596a25e427a8c717f2ec 100644 GIT binary patch delta 453 zcmV;$0XqKR1K$IXB!8w!L_t(|obA~`j>8}fKv8DYn{fXlahF*jMHU8P7*b68->Rj7 zP?HdFLI3~&0B}hurIhsNiRzyH?(V?1d+qMPFnL|a7(0csTo$_GeE{?{B7>e%l9AO> zjxjo)h`bL#j;Rb{C!qN!w-oUX6&)fueES*HIY?ab?T}!Hew5x_SO8|Ml&0+A_Z1_4YeGk-Y9jB(c!*M z(LY9?LN+c7^T9HAWXYRa{#Q^#J9+iUF1EhvlNBYMU-kSpQLA6QUwB((^mt2fv^S+9 zs$J2yjEsDvIC;1hw{wzKnzNr!^xw`ZY{WKW06sQj05*H}AslKi0OZ%|F~RVf v^UdvioljkKo`L8C00000000000Kgi5QwN$w0^94n00000NkvXXu0mjfcK6v` delta 454 zcmV;%0XhEP1K00N_+gDW&Mo1Jxt@UEP6i_qVzOx5?`|=WGysDErB`V>?-=5&3H_a4Fk z007vGUhO&ai(~sByVk_L)j(Et)~TEJ*oaMB+Bfre3yo~VsuWoDHMMe(dZT0ttP>kQsENsLUV?O{EV*nO=_92{FF977%<}u0f wn)A)=e4S5Sbnb!Z0{{R300000006)o{~f`i2>4P8yZ`_I07*qoM6N<$f?s{zyZ`_I diff --git a/test-integration/snapshots/decodeMessage/nanox.45.png b/test-integration/snapshots/decodeMessage/nanox.45.png index 0f9f76e5234f7bad79c8181475231c36c5d43b8d..ae332bd67a6c7dc0180c43bc7b279e40916f96eb 100644 GIT binary patch delta 527 zcmV+q0`UE-1gHd%B!BNoL_t(|ob8)Sl7t`(K%J?+3HLt|cbNrM6hjgO1VsD2m13KO zL_Q|=aR2}S001oKXSM?GeR}Gglb2#+))G$Takm+kSj)C#sckEn8vu*=+(oC$7WI}Gyz~}1fK&;4@_UQc=pE-=IDeKcW#rQuBP8dRow;WO z3?~~veYf8-XkHS4NS_mLTm$Zzf`;>y8DBCt0C74F95X#7by-(cGt`yCk_G?(002wz z|B;u}(~GaE^2Su4G^U_s;D+*sy{S}bdA59dUA3zBdYJpTsBSEEgRp zR|v);4Y1O#>3`KUMUhHSJKNfY0Raehr0L9>q>9z0W7Q+9TA2B|Mu-)jN;CFK#&x*9 zd(ccuy|s2>uK;v-q;Js3xn&fs0^gGj?HD~fY0GqvH#? R@&Et;00>D%PDHLkV1l!A^1lE8 delta 530 zcmV+t0`2{%1giv)B!BWrL_t(|ob8)Yvg;rSK=bb0ow)xcxtIIljN=oq#$Yt*IbV%d zKv0uFdmI1&0002D^KZ6-7-M-ELXcg#v1&<|^7F76mRQTSVRildPL*CwBgPnGv>e)= z^Hg7i5K7zbWNrW~^191Tmo4g$9K3Rf+(4>?J^5LpHG3z7kbgeQmNs&=<_O8NWoOpx z0C%blG&X$6rg=#KGGk6$cn?@}1iAB+6JIhn0Qoph95X#7by>Zt8S0(Gk_G?(006fV z|3`MImlt1C<-k&)G^U}&@qu!|v#C^RdA5CdUA3zBdYH$!sLml3ku0e4n(F&bm5WZa zD+Ins1FW=b*?(K6C`t+HWY12)AppsaGM(9zRI#RX+_i*N3oBpu2(iM`X~tg3xB=G> zZ<dds_Kt=KYqDWkt)#Y zO~ts`&kR20000mljYCaJM+Aouva)YS$`JOe;s`o8LsvZI;}T8HC0)C z$7-xha*^{4`qTG4H5{w<(iYgT>Y|*BJnsm48GB_zOVpCi``9-CuXlao)&QJJ7JjT6 zTG>bIzZ))cz5@4}zL$_0e8o+8QuWb=JKh5ZI8}ZD000000000000000fNl8$uwK}u UJl>+D01E&B07*qoM6N<$f}oT6wg3PC diff --git a/test-integration/snapshots/decodeMessage/nanox.47.png b/test-integration/snapshots/decodeMessage/nanox.47.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVdMsLDm>KTVavw=27kJ*zhe0{GxCnz`Qk*iat|?u zx4)(&Nq*rHsJ4Im?z9`{`>UKKr>vsZ-4C4^S@l2jy;p!NW5lwunc8vx+TU@U_!YJB zHS^x(3!0B#XupxH$Obf2#~?>`f^J`h!Tj83^~}l5VV;%T-PjALng?TJtt9l!bx$V4dw?k~9@|yh@=R3?_sqAp*Nlv=R1INc# z5{tGOb3G8x{}pArJ2{0>Z~5gCCEniDZsQzF*X8Z0iS<_AYj*t)za6J>d(W$)pjy?P mz3gWhZ}VkAdVrsNXXOG&t;ucLK6T5<$$>W delta 295 zcmcb~bc<<%3a6r{i(^Q|oVT|o>dMq_dz>OL@z!GoFgUQkVy)kT`7@8c{cIziR@9!t zzGSJtW?6F_`;k}6pYF?<@*!@n!}2v3ib}&%(_VgEzE|6^lqF&2t;}^5zvOo*E3Dp{ z^pbh+?gh=aFSOrCR%8Pjs$-BNJ3+T^hvEF(XZg&@&E+oAGY+JOENJ_b>3J(Cy8gnf zn@@KyRNa&ISjRfx@s8e%tqSv4!dCS*9CO=w`(J^slY2z{V*5tBVE2ZWlQ+-3XkhOR zZU-?K_E%iI{%W(eTiJo9CA0jNEZmq=*rxlRZQ{0+#Cj{Qo@f8BZBsvG*1u~`h`eXs nW5?nH+nS{y-h_H~{!gae!m78E-9PUY1_^n(`njxgN@xNAV=9R} diff --git a/test-integration/snapshots/decodeMessage/nanox.49.png b/test-integration/snapshots/decodeMessage/nanox.49.png index a1a25bcc339c3581703c9debb8715b97f6567df6..a64aac087f0feb195d39ed1955fb16ec7ae0ba43 100644 GIT binary patch delta 74 zcmcb>a-L;^3ZvLY)whhcwmI3CEy{8d^1Ti*zgZlR#$;MzID-KlI4IPA>XcZ_&mLz2 OlJa!*b6Mw<&;$THi4(g3 delta 75 zcmX@la)D)n3ZwW&)whgxYgK=JGU=0*zA<~!2ZrAoQ)W8w#`35!paX#u@*n*q76_w$y85}Sb4q9e0G5>%Jpcdz diff --git a/test-integration/snapshots/decodeMessage/nanox.50.png b/test-integration/snapshots/decodeMessage/nanox.50.png index 1c8a714f721eb077d6860f5ca1a6361d924d4455..dbe6f3f714243705d4dc36ee44c5a707c83b1c64 100644 GIT binary patch delta 521 zcmV+k0`~o_1hNE>B!BryL_t(|ob8!gj>RAdK%L3#r2Aizdzp`B8Ul!D?c-+7`Knwh zh=?h-6aWAK0D#;1QsY{y9B$ioqca_L-;_&I=qfC?vX*aG`l`6+*|zQDJpaik$z$Q> znoUEg+!ETK?EE(M4t*PI*DI@>kq5$Bt8%OrpIEZvp8&=7M}P5R?G^!7!Mfu5)O9AK zCXK3B>~hLr<&jGWR@X8uCH@IeF>*r|yk-3xnj|0MmS$|rP3qA}-2HQBu!l@a{0(Tm zqqeu@VzOd9LTfoEv6(LSW>0)2*`HG-C_t{q4e@B)m(-#qMl+MdK6L9($!x%pESY?f z$}0DjP|-TVaew`taJwt-3Ijtj$B&^^SXK;@yK=)MpUc@21Sgr_fa^XE0RZ4FRKe4} zl+ycZJ?Z4cC-F&A%{bZKdikyUa`!B$4Y1grgla#iPZ-;w40@vOeyeA9l8jo*P`pNW z!lB_jZfDI(<{n}z6T*BgI%6ecF63J) zx|vn2P}^%OBIs(^Vp%IJrX#=1@O=H#`O1(1)2XK@vKnlK}!08vpO7AKy9Zt@%~5hF8#=KhXF*4W|N)1_qCw} z5ELi06aWAK0D!mirJh@B^0C(X#$W~sZg z&2B@f+!NYAS^IYDz4UFa-KeZ`Mji-TYbvl_eqzaie*zTskALFj+HC@^f(^xuX&6jK zO*&Pt*yWVT&Lfu)tgh!;O8gU`a^$8gc+18&Wh9^Co@VUJ-PE&2-1@l|>>-m9zW}{= zRC#+LCOgJ0^p>-T-RZJ6$HrHZ<9DhB1<3WdDW1*ymR_{QX~sw#!?6F9%q4u3F1cBh z@~bdbsOTMGdw;}8G?Tg_Hsg)??o$KG9HtSYwrI6@s<{90000{+_V>PUCz0Tw{25g$uC?c zpbmY_V;cM=phUk8cXQH(yY>PuIt1EX+`Y;<*Vmu^OBcMJ0H`_J<{r0y@_PafvGy4H zoxi7`#AB!tYZPJt002O2eyiCP?9rc=13SrnXfNQ@q0p5-xqmcgH=y87K)*?01fTOL?c90RR9100026f+vdV1Vk}WU&jCd002ovPDHLkV1nx- BjY$9i delta 303 zcmV+~0nq;D0_FmcK!4cWB5mpaJs~klTG-ZVN&o-=0001p;-S5O>vGOzyey02O73u( zfI9Rwk7@9ifD-*W+|5ZBp4tnzXcK66arY|cTwj0sFJ16@0-$DZn|s{;$?pl+#M)!% zSN@)Y5|5!q%u$E|00027`K@MWuttAa4(ufRrM-Y%n?hIqX|U{4u7o?$Y{vTJ=bS93Ef~}djok0-8+QVT zd(*fCgzb0sjVMTf<$h=Rmhv_^0{{R30001B25*V41VoK7I3)l8002ovPDHLkV1iyW Bl&$~( diff --git a/test-integration/snapshots/decodeMessage/nanox.56.png b/test-integration/snapshots/decodeMessage/nanox.56.png index cbdc0a716eee4c7c2031ff28ccd9dba647040582..348d43dc7cf374983af69c3cc7cc261f8ab8ca03 100644 GIT binary patch delta 362 zcmV-w0hRuS1BC;SB!5gvL_t(|obB0J4#F@DMNxy;N%p@a?}ZPes$}SdAb#kcA3zkE z`lU(Km;nF)0001>&)wbq+P68~XE)%AZk6RqAH)JErNo=6+{?%102N{ZST6(J>YLeZ zb^|VI2OP!fo8lc1s&b1~-*f}`8>#_}CSf^}0jy`;(Yi>5UVi}XnnyYVu>eLZPTdT| z0tnqTkM2SU003klw~SNw_B7Ppr!3~ysqZ!*4!+#ZQ|J1riG6?BO8nBEV)t*8>|Z|O zWmezc)ppqG4(RsijXle3m-z~yl#(!mb;)*X8a+BL#NG=%$}Ge6K9+aWGZ>X=G*EO8 zI6kUmsJ^WOuw&U7#M#>h?6#-v?8lFvu6`Jor*Wt1e*9OKX8H{&Hs#x~eq)Y3I|)}) zNOzLJ390(;=Op(7{z-}<=%7@~M*si-0000000000000w z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_gi$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|b1-pM+&8f zMM;t*uf$M8N3pZNTq;uNtgv$sa7434VnkE@Mr?ki)cHUby;X7rg)M5R3E3~?-=nT6 zRW8CtW9<~-AeuXrJr)n0Y2OJb!WD2-(#O9_UuTM`oJrz%g`af6su98>T=gh#cV^j#KC&ygr3 zjfh0^`}LX6!%h3+h2Zl$yAq!q4?hcVrW_NRYY>S$7KM9~pyceIBxnC5p4qP*zHan} zxc&Msl5y!Pv)n{-)orkVd4NM%1#9Bz0^W73wY~{!y#5G(z6-uH5hDUopQQAK>@Um4 znx=iwC0u|)++zoYc+#8Nn+dnhK*>dV??I@8=4=v`VLAo{+L3@30AEky1nE9jU|4+R z6e1k0%TROAfOSITN&ThG!z_+vuNsPoRw2j2r;g3GVk=)i%=Uh>{goscvkMnvvY)-9bF~I?(9L_#q0CN|M$0{A3`obk|aqo4-o}frBJG%3zL$-iKv@;A*sMR zJodsi(OufkI8NoV&z7*|=A7ztZLWmWwbX@FV)~3Trv;TsSt2|!QIZ|Dd@Ot*R~nN| zrLuhuy**yZwjThTeS|(YMl7@pnPkN+tJj#WO;(ya zwIEin$KP1(cv!K~N!Mp2X*TMYeMs}K%!H*S^qqqp8v>8m(66JFTg~FGR|HFQ^C||X z&cP05=V#jP_p*BkvzftHhM+fb=KqKt;hE!$yah^#*t_Inl` zWTV=_IL?@qQXVIt$mtAaA34I9@0o)$m*t2tx{PBaQ%7B8Ik8Tky8k7gnS)#MT&&*uuTGoD6XuhwNz-Fy6@OpUrXoR+_D=wtg}~I^ilWMEI)})$N#@t`K#8S z;y^XcJMBI*_ORC#pt8JvI`-ZAn{ivMd-k4R!j`?yhhMr`ye9zR;{Nj{$`W*XE4zBBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.05.png b/test-integration/snapshots/getPublicKey/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|b1-pM+&8f zMM;t*uf$M8N3pZNTq;uNtgv$sa7434VnkE@Mr?ki)cHUby;X7rg)M5R3E3~?-=nT6 zRW8CtW9<~-AeuXrJr)n0Y2OJb!WD2-(#O9_UuTM`oJrz%g`af6su98>T=gh#cV^j#KC&ygr3 zjfh0^`}LX6!%h3+h2Zl$yAq!q4?hcVrW_NRYY>S$7KM9~pyceIBxnC5p4qP*zHan} zxc&Msl5y!Pv)n{-)orkVd4NM%1#9Bz0^W73wY~{!y#5G(z6-uH5hDUopQQAK>@Um4 znx=iwC0u|)++zoYc+#8Nn+dnhK*>dV??I@8=4=v`VLAo{+L3@30AEky1nE9jU|4+R z6e1k0%TROAfOSITN&ThG!z_+vuNsPoRw2j2r;g3GVk=)i%=Uh>{goscvkMnvvY)-9bF~I?(9L_#q0CN|M$0{A3`obk|aqo4-o}frBJG%3zL$-iKv@;A*sMR zJodsi(OufkI8NoV&z7*|=A7ztZLWmWwbX@FV)~3Trv;TsSt2|!QIZ|Dd@Ot*R~nN| zrLuhuy**yZwjThTeS|(YMl7@pnPkN+tJj#WO;(ya zwIEin$KP1(cv!K~N!Mp2X*TMYeMs}K%!H*S^qqqp8v>8m(66JFTg~FGR|HFQ^C||X z&cP05=V#jP_p*BkvzftHhM+fb=KqKt;hE!$yah^#*t_Inl` zWTV=_IL?@qQXVIt$mtAaA34I9@0o)$m*t2tx{PBaQ%7B8Ik8Tky8k7gnS)#MT&&*uuTGoD6XuhwNz-Fy6@OpUrXoR+_D=wtg}~I^ilWMEI)})$N#@t`K#8S z;y^XcJMBI*_ORC#pt8JvI`-ZAn{ivMd-k4R!j`?yhhMr`ye9zR;{Nj{$`W*XE4zBBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.09.png b/test-integration/snapshots/getPublicKey/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdc0a716eee4c7c2031ff28ccd9dba647040582 GIT binary patch literal 390 zcmV;10eSw3P)m^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.10.png b/test-integration/snapshots/getPublicKey/nanosp.10.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|ncyxn52PEs~=B{?S;CHnGgA|5#XLql}81wT-|LOv-5dh0*ZF7&? zKlqJ+!qy&5f8y^cDDW7%3I8Jz0{{R30C3Byywq<3obXzTSdNwNKPFOIRFl;hqih#9 zD*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aIBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h z8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VFPdFW~+hVSvO#~EbUG9-;bQg15*Ir{< zonl+&lbv#IOG7H*gKQFNdmTYv2o3-MfcwOZHy528yvf6l0mVz1?=LzwYc~fNmm)5c zm!2`5Nm)<}nWPx#07*qoM6N<$g1i~w`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.12.png b/test-integration/snapshots/getPublicKey/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..93dcd8f2a3c173a98b46fbb485d31067e64fc1b3 GIT binary patch literal 507 zcmVXl4dXc7%8&+iW>}~ntQ&G$9NJ50m5+r0002D`}*q+uh(mCk1<*s z)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ1u@2Ow`auW&xp;pr@<{a(~^99xK;A< zn$GjxU+d@iyO?L&6#bKoEaw3km-%B1w-5D>6*Fg(qJNA=#_Wac&c@}tc>-i}D--KH zVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_f zkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9x9{N{-fmvQ6ofN40S)eXX9j@h%AZH0 zxZSo-cu7RQn%bInuVqf&5;wmRxt!aF=$Sn_5S5zspY}GcD4r`VMaWue)icU>-_C8k z>&c=1PWv>~wIH>6e55l>w5+&&2<&s-auEC%4U2JSj%-vxMbz4_yEI>HNuIN8NxSA3 zF?sts%!Fv;QIUs?>l<3qyd14&3H8mu#;uP!`bWzr$t&ic_lCOJB;Pe{o#;DdlCx}y xtyzfx00000000000000000000006*cegOik2RuU*h{yl{002ovPDHLkV1fat@qGXQ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.13.png b/test-integration/snapshots/getPublicKey/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d83595e463b8c9faf39e99aed28751de91dbb344 GIT binary patch literal 980 zcmV;_11tQAP)Fh0%F+39e1(vC2xvRUQ4~c{6h%=KxASkY{B>RZ zpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$`41`0ah_+29}+Qi#Geg4IC@L36wm*~ z@+K`@Z%iFlp9$ms+02f?_U5l%2b=8}29QF|4B#Q3q_vkfEzI%Tj9YT}+{d})n4Nrj zLQIg;0TV%hBD^=z1lM(~=Y&26uwrGAlY;Kd-2f3rOGGIoy6U+*1vNmQG2O{;oTi7Z zStNa^ZR`MZmqw1G*1lm@5&IJ|3*q#w@0(d}M@D)Zpg-0ZjFctku@v+;S!b7ZC$A-O zQ&bd1@k(MfRO_An{?b!Jc_D>VX-Gi{)M6fMdq3f`2%RIW0vHc~H^uxKWH! zuFs~-$yXODdL~=cP!ln4KG$GW>R*B9z6d!#rU#}_`n0Q|QNOVRCK3htu0#K-3(jpo zy^QAtvz~LP4wz8Jy+wko4veXx*JsDi*%r2rH%GndF7-}rbYf8*@a%cde5xU(bNx7G zR;SlwrjG@`PKsC`QyTNdPSzn=^v$RSzO)AD%DkFv=3t5adh+$gpK=Q#mFrEMHs-u zDM`TV3Vr*gowGoniwpdxz6Lg-89B1T!OqM8GR`5lnlUXXOwcQ6gvz6iVg}h;zju3A+ng7Z*)$2X_R^ ztvv-W@O$w%44CZzGpnr3KJCODgW`+Ckd=_ajG9u*Qe=lU{X_kk%u8T)0|l55$*ejI zUYjveGq35co`m&^G_5D&T6j@xNJ^S8%a!MnrHHM1^=@I32S;*sUq6Pf<`-eSKkIeJ zQJFfd>-ahGftj`h?E>-@4*n&=XHgVIQ4~e-clZXUh*m{%Uxdd10000Q31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a?vr9ipGIfTlEC;q|)3<-i({l1m9c!Ph zvqVc>YRicY1G8>F{Oc^hv*VXzu=BYB^pw-6>ovP9n!JIb=P3`Z{ig?mN%HH&x{Hw>>%j+LO}ywaBR zpK{4@0Qh0nr=bT8pJgU?#XV*lEW7Rwm%o()iT69e{to1;#0$Vo(7*)Sgcq-?BCdXH zj_(BzYD-Yundl#dey`Z0kB-$piPb-k7@S88&Lai@0000000000000000001D`Um%3 V7^IU(Wj+7^002ovPDHLkV1ne(z_I`U literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.15.png b/test-integration/snapshots/getPublicKey/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a GIT binary patch literal 553 zcmV+^0@nSBP)BBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.16.png b/test-integration/snapshots/getPublicKey/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|ncyxn52PEs~=B{?S;CHnGgA|5#XLql}81wT-|LOv-5dh0*ZF7&? zKlqJ+!qy&5f8y^cDDW7%3I8Jz0{{R30C3Byywq<3obXzTSdNwNKPFOIRFl;hqih#9 zD*BkvPJN{uxq2a_x|S~LY@eT#N%*r42o1aIBYQ;MS}~2U+P8}C_0tC?^^eCL(9h*h z8i@LtgF?==GJ4J~4v?pTKJ1p*8I|PHwm#VFPdFW~+hVSvO#~EbUG9-;bQg15*Ir{< zonl+&lbv#IOG7H*gKQFNdmTYv2o3-MfcwOZHy528yvf6l0mVz1?=LzwYc~fNmm)5c zm!2`5Nm)<}nWPx#07*qoM6N<$g1i~w`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.18.png b/test-integration/snapshots/getPublicKey/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..93dcd8f2a3c173a98b46fbb485d31067e64fc1b3 GIT binary patch literal 507 zcmVXl4dXc7%8&+iW>}~ntQ&G$9NJ50m5+r0002D`}*q+uh(mCk1<*s z)8pMj)ixP)6N+`({p{^_U9)cJ_M^tl<_VbQ1u@2Ow`auW&xp;pr@<{a(~^99xK;A< zn$GjxU+d@iyO?L&6#bKoEaw3km-%B1w-5D>6*Fg(qJNA=#_Wac&c@}tc>-i}D--KH zVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_f zkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9x9{N{-fmvQ6ofN40S)eXX9j@h%AZH0 zxZSo-cu7RQn%bInuVqf&5;wmRxt!aF=$Sn_5S5zspY}GcD4r`VMaWue)icU>-_C8k z>&c=1PWv>~wIH>6e55l>w5+&&2<&s-auEC%4U2JSj%-vxMbz4_yEI>HNuIN8NxSA3 zF?sts%!Fv;QIUs?>l<3qyd14&3H8mu#;uP!`bWzr$t&ic_lCOJB;Pe{o#;DdlCx}y xtyzfx00000000000000000000006*cegOik2RuU*h{yl{002ovPDHLkV1fat@qGXQ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.19.png b/test-integration/snapshots/getPublicKey/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..d83595e463b8c9faf39e99aed28751de91dbb344 GIT binary patch literal 980 zcmV;_11tQAP)Fh0%F+39e1(vC2xvRUQ4~c{6h%=KxASkY{B>RZ zpXYgEOJUI8Gz~~Ub6nTe`_Z0tc)furKF8N$`41`0ah_+29}+Qi#Geg4IC@L36wm*~ z@+K`@Z%iFlp9$ms+02f?_U5l%2b=8}29QF|4B#Q3q_vkfEzI%Tj9YT}+{d})n4Nrj zLQIg;0TV%hBD^=z1lM(~=Y&26uwrGAlY;Kd-2f3rOGGIoy6U+*1vNmQG2O{;oTi7Z zStNa^ZR`MZmqw1G*1lm@5&IJ|3*q#w@0(d}M@D)Zpg-0ZjFctku@v+;S!b7ZC$A-O zQ&bd1@k(MfRO_An{?b!Jc_D>VX-Gi{)M6fMdq3f`2%RIW0vHc~H^uxKWH! zuFs~-$yXODdL~=cP!ln4KG$GW>R*B9z6d!#rU#}_`n0Q|QNOVRCK3htu0#K-3(jpo zy^QAtvz~LP4wz8Jy+wko4veXx*JsDi*%r2rH%GndF7-}rbYf8*@a%cde5xU(bNx7G zR;SlwrjG@`PKsC`QyTNdPSzn=^v$RSzO)AD%DkFv=3t5adh+$gpK=Q#mFrEMHs-u zDM`TV3Vr*gowGoniwpdxz6Lg-89B1T!OqM8GR`5lnlUXXOwcQ6gvz6iVg}h;zju3A+ng7Z*)$2X_R^ ztvv-W@O$w%44CZzGpnr3KJCODgW`+Ckd=_ajG9u*Qe=lU{X_kk%u8T)0|l55$*ejI zUYjveGq35co`m&^G_5D&T6j@xNJ^S8%a!MnrHHM1^=@I32S;*sUq6Pf<`-eSKkIeJ zQJFfd>-ahGftj`h?E>-@4*n&=XHgVIQ4~e-clZXUh*m{%Uxdd10000Q31IlGw|9R6-W7xUma$bOXON~!(SiCm6Qwvj#D^Jh7^a#@a?vr9ipGIfTlEC;q|)3<-i({l1m9c!Ph zvqVc>YRicY1G8>F{Oc^hv*VXzu=BYB^pw-6>ovP9n!JIb=P3`Z{ig?mN%HH&x{Hw>>%j+LO}ywaBR zpK{4@0Qh0nr=bT8pJgU?#XV*lEW7Rwm%o()iT69e{to1;#0$Vo(7*)Sgcq-?BCdXH zj_(BzYD-Yundl#dey`Z0kB-$piPb-k7@S88&Lai@0000000000000000001D`Um%3 V7^IU(Wj+7^002ovPDHLkV1ne(z_I`U literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.21.png b/test-integration/snapshots/getPublicKey/nanosp.21.png new file mode 100644 index 0000000000000000000000000000000000000000..09ddad6f846b0f5650dbf98d658f0c3cd8673e1a GIT binary patch literal 553 zcmV+^0@nSBP)BBqJy)U~PNJu0mu|)s?0000000000P7p!}A*|No z06(i07>O^_N8aOrWc_X1)@pJHXAanlFix#6?i>&)eBjsm;?4od#L4KctuG?~Rx5A@ z9fh1)U)-I5NMUZj*7uFOlpg>9003YOI&U6R3FqscD2s}ALj3sF@+yQdcxx96BB%A# z6}9t;15Uu+4XfK^(fRrJ#UAtt$fv}M;$tB~OV=a23Rsk{&a#uv!Ck$e!iZXMBwcUY zwzm!4e9nE-mfjdyRimrCUF`MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1f<^M~+xXV8Vul0SWsbgE zyFE_bv#bv8j<5bYxon)5hT1n~9GSN~8`iImm;bw}q5|DCXDp}#?3HI@qHUD$?b`}nu<@C~n3 rk7nFrzV3ikuZ#cy0000006xke#BPli;5TEt00000NkvXXu0mjfjKKfd literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/getPublicKey/nanosp.22.png b/test-integration/snapshots/getPublicKey/nanosp.22.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVB!6>BL_t(|ob8)iaw8!OMafil()(W$dzlYcD54h^A!xg!^N|{3 z5aJ;<-1d}`BuSDaNs=VT`C4pWYwbT?*Jalv75YN40%*rat+ltqEpzw!3Z%J@e~ay3 zgiObET_JWr$krhr8+>#0HMLea-;3=OM z00$gNn=dUa#QobUx8(3Dw{uJJ1|JUy2QdraaKdPUTO(6YYhBL?y${9{D~gyDbTW4v z5I0&P3L(%`&*>D@FxCuNPW<5H-nL?s@U6CS0mM@pxR2WW4(pTi37CcK^v%n~EVm;g zJq=?$)*l!lkAIxoQqb*0-Cfp=JeI&iQIaIdBN?cnT(l^3r1n5N`?ymLZA(HD z{Z!>CJ8lrOhGPc)hcH*$N#A85dTz-=+K5Otf4x5QdAMnRJP>?-XIJ8#^Wl2|&Xi+9 za}6SK=b~^=5|o_%JIUF<6VL3|4qrERL)?D-jb>c?YFIu*bJcCIfcF50vI^G3uM2qB zvDW$~qJQ!FBmDUe_|A(M5s3OrN?$1cvW(Xp+6P_21t`QlaZrdSy{Wx7;no=_xoGb_ z2$gBhL!xe&jzNKTG@u2**ONFwx{nnY7GF7q2uJHO)Z8;*oe+7_era=<#j)&FLlMy` zBrJUD*la7Y^7X@P?=QB$k|cxVa$|q0>%-Z$SRKtENAc-TtrK3_d9Z sJ(7F=kJvHJ#4hsYCrOedNhtpT+LlL}P!Gkl-2eap07*qoM6N<$g2bV~8vp-B!6#7L_t(|ob8)ilH4E+MM)|<@&1>@Uh?4@iU>U}LYQtx=VK~O zgAgwnU3W@Jk|arzBuSFT`L)=-*4lr(u1l{;D)fbH1<;Ob{`Lo!brMWBZslu%psoal^U4Iz8KKre-!0bGl4ulYM z0&u{QwE2>b1-pM+7#^w0vtQ6o&zO{w^dl#7IzkUObFgrkju@j$ zKSp}#RA*TatP@klU-FqbxJAZVuGZE<3&qmbCss{NKfd~DD}TYQ_R}%U^SJ`-jHe;< z)w(RQb*JNlstiYaYaPtbY3rh~^GU$K2s($@d&|y0r8F}amW#&m4s`G-K`U!_M>Y&8 zL>89F$#P${x&(<%&MfJ)KR8`lvtz3WnJ9M_yEWd;gJTh9f>Q5QdI=0&GKF)d1y#g%%Ivv|>{XMv6&bxU1FJa4;=i>j` zE_ra8( delta 450 zcmV;z0X_cF1Kb0UB!8nxL_t(|obB0Ba)clZfMMF%n{fXlahEuhZ$TBuT6o|qb#et-49t$zTw+E3>&&*uuTGoD6X zuhwNzSS-d9z;o|=DCdv|YdMmq+Tt4+JrhO30D?7#=?LNPEWA#^J_17Z?>k)(X shyefq0000000000000000D!;g2T~$t93KlqZ2$lO07*qoM6N<$fmFztIQ+vXDzh)Glg00000 z000000N?~6gb>1NDGu{bx7~mm1@G-78;w>(yectb;>z8C_r^}8@87RCSYJdUKlJdY{ zZ9u6-s(Quhwb+Eurx+>v+gPqamv6+r2@C)L@LrzvT~Iah)A4&ZuDufeUaagM#aSji zK_hwfZG7oiF~b1uG)M2&ZjDpdEUS&X?W_MzP8;Wip?~&;8C&Kh&xZD^?d5+}Rg|Nf zW{d@SfIahUw6qUW6o2fg@0_FH>=|$!{avZH$4oD@-~^fh+1$YU2ogAw+-EV&VAFC-WXX`qpQ4K?FP9%zegt<1vEsS;Lu#%sZNWe zxM6g5`ZBk;U4N535&0swIN%{X@G-7$#9Km8`@G*xH!jJ}oh~~eWuWqUsR0g1TgnrI zwF#wGsTvil*J4vX7co-xud&>MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1 zf<^M~+xXV8Vul0SWsbgEyFE_bv#bv8j<5bYxon)5hJV^OW*nKfJR8=pj+g(ts-gnj zG-oWR1MHP&W2AkNqWNPledinnXU~A^=>L^!f6Ri$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVB!6>BL_t(|ob8)iaw8!OMafil()(W$dzlYcD54h^A!xg!^N|{3 z5aJ;<-1d}`BuSDaNs=VT`C4pWYwbT?*Jalv75YN40%*rat+ltqEpzw!3Z%J@e~ay3 zgiObET_JWr$krhr8+>#0HMLea-;3=OM z00$gNn=dUa#QobUx8(3Dw{uJJ1|JUy2QdraaKdPUTO(6YYhBL?y${9{D~gyDbTW4v z5I0&P3L(%`&*>D@FxCuNPW<5H-nL?s@U6CS0mM@pxR2WW4(pTi37CcK^v%n~EVm;g zJq=?$)*l!lkAIxoQqb*0-Cfp=JeI&iQIaIdBN?cnT(l^3r1n5N`?ymLZA(HD z{Z!>CJ8lrOhGPc)hcH*$N#A85dTz-=+K5Otf4x5QdAMnRJP>?-XIJ8#^Wl2|&Xi+9 za}6SK=b~^=5|o_%JIUF<6VL3|4qrERL)?D-jb>c?YFIu*bJcCIfcF50vI^G3uM2qB zvDW$~qJQ!FBmDUe_|A(M5s3OrN?$1cvW(Xp+6P_21t`QlaZrdSy{Wx7;no=_xoGb_ z2$gBhL!xe&jzNKTG@u2**ONFwx{nnY7GF7q2uJHO)Z8;*oe+7_era=<#j)&FLlMy` zBrJUD*la7Y^7X@P?=QB$k|cxVa$|q0>%-Z$SRKtENAc-TtrK3_d9Z sJ(7F=kJvHJ#4hsYCrOedNhtpT+LlL}P!Gkl-2eap07*qoM6N<$g2bV~8vp-B!6#7L_t(|ob8)ilH4E+MM)|<@&1>@Uh?4@iU>U}LYQtx=VK~O zgAgwnU3W@Jk|arzBuSFT`L)=-*4lr(u1l{;D)fbH1<;Ob{`Lo!brMWBZslu%psoal^U4Iz8KKre-!0bGl4ulYM z0&u{QwE2>b1-pM+7#^w0vtQ6o&zO{w^dl#7IzkUObFgrkju@j$ zKSp}#RA*TatP@klU-FqbxJAZVuGZE<3&qmbCss{NKfd~DD}TYQ_R}%U^SJ`-jHe;< z)w(RQb*JNlstiYaYaPtbY3rh~^GU$K2s($@d&|y0r8F}amW#&m4s`G-K`U!_M>Y&8 zL>89F$#P${x&(<%&MfJ)KR8`lvtz3WnJ9M_yEWd;gJTh9f>Q5QdI=0&GKF)d1y#g%%Ivv|>{XMv6&bxU1FJa4;=i>j` zE_ra8( delta 450 zcmV;z0X_cF1Kb0UB!8nxL_t(|obB0Ba)clZfMMF%n{fXlahEuhZ$TBuT6o|qb#et-49t$zTw+E3>&&*uuTGoD6X zuhwNzSS-d9z;o|=DCdv|YdMmq+Tt4+JrhO30D?7#=?LNPEWA#^J_17Z?>k)(X shyefq0000000000000000D!;g2T~$t93KlqZ2$lO07*qoM6N<$fmFztIQ+vXDzh)Glg00000 z000000N?~6gb>1NDGu{bx7~mm1@G-78;w>(yectb;>z8C_r^}8@87RCSYJdUKlJdY{ zZ9u6-s(Quhwb+Eurx+>v+gPqamv6+r2@C)L@LrzvT~Iah)A4&ZuDufeUaagM#aSji zK_hwfZG7oiF~b1uG)M2&ZjDpdEUS&X?W_MzP8;Wip?~&;8C&Kh&xZD^?d5+}Rg|Nf zW{d@SfIahUw6qUW6o2fg@0_FH>=|$!{avZH$4oD@-~^fh+1$YU2ogAw+-EV&VAFC-WXX`qpQ4K?FP9%zegt<1vEsS;Lu#%sZNWe zxM6g5`ZBk;U4N535&0swIN%{X@G-7$#9Km8`@G*xH!jJ}oh~~eWuWqUsR0g1TgnrI zwF#wGsTvil*J4vX7co-xud&>MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1 zf<^M~+xXV8Vul0SWsbgEyFE_bv#bv8j<5bYxon)5hJV^OW*nKfJR8=pj+g(ts-gnj zG-oWR1MHP&W2AkNqWNPledinnXU~A^=>L^!f6R&)wbq+P68~XE)%AZk6RqAH)JErNo=6+{?%102N{ZST6(J>YLeZ zb^|VI2OP!fo8lc1s&b1~-*f}`8>#_}CSf^}0jy`;(Yi>5UVi}XnnyYVu>eLZPTdT| z0tnqTkM2SU003klw~SNw_B7Ppr!3~ysqZ!*4!+#ZQ|J1riG6?BO8nBEV)t*8>|Z|O zWmezc)ppqG4(RsijXle3m-z~yl#(!mb;)*X8a+BL#NG=%$}Ge6K9+aWGZ>X=G*EO8 zI6kUmsJ^WOuw&U7#M#>h?6#-v?8lFvu6`Jor*Wt1e*9OKX8H{&Hs#x~eq)Y3I|)}) zNOzLJ390(;=Op(7{z-}<=%7@~M*si-0000000000000w z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_gi$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVR z!^?#XAaLj0>;3w3p5HvZcI%~ttO|FHBxxe-Lx7JeUt@5UMV%7^T*LPf- z75PqV?R&Ac*Y74+z1ifjes*-n^8Y1k%;!J*{X>1_Wy8vNDc$IG z?)n2A(<9u@FxI6S>6~udD->*q?MAH`P zPC5Sl1DAe#_=KhhTqO>S_21vjWMr70I5}#XnP2Hl|5=S{{|&Soq5-#OX@e`IFAazVc2C7m;`G z)=_-NvnBR(=-T=zF`n;E*uQU@k<(P|`}X+mrJ+_?hVFiahHX=c~ey0`_pO0E8w{eFd%lpz zcoGN!!f^lq006i9`s)s_*K2N%F*x5pm}lD*{eP2;Eaw3km-%B1w-5D> z6*Fg(qJNA=#_Wac&c@}tc>-i}D--KHVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h z6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_fkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9 zx9{N{-fmvQ6n}&>H~|grd1nTI=gOZ)qqyC+Pk2d0zM9&acCTel-V!&z61kk)hv=C- zIuMnb^`G`Ot|*=>Ek(#$YSlB!ci+x!yz9xK{!aTe)wLkCdVHiaOth@HeF*Gx-f|H9 z7Y&PXXO3)CK}FQsue&r~Y)PK8Y)QN37cqJJI?RM<<62RXhm7kRTGG56t!4@J&A`U3 zk2?BC%O}Yz=AZY5y4fV(HEo^fJ7toyY>BN|i2wiq00000000000000000000z-4{` X0;~r-LllU}00000NkvXXu0mjfuM+S$ diff --git a/test-integration/snapshots/getPublicKey/nanox.13.png b/test-integration/snapshots/getPublicKey/nanox.13.png index d83595e463b8c9faf39e99aed28751de91dbb344..da1533ee83bb895efd9a0ce459006e1d52e2f599 100644 GIT binary patch delta 957 zcmV;u148`N2h#_TB!8MoL_t(|ob8)Ya>F1DL}{lt@%@j)UHXw3h9YUTfUw(C@2hb@ z$OsFuPD@FWBuSDaNs`<7*z8|x?LS`EgiTVsTXJ|^$GN4fK78_lSRf_<3r>J8ytQEpYOVV@q4xpoSW(2JpgVIn zU~r=)q7VX2_1v9;8X#s&IQhb9dD*I6!k5~?0H{?OxsKZWy6uPhgv>%Xeaq`=mOGJ= z-VG3s{S6~z%YS(+1wBsG*=66z+Y(q5B}tOJC8ioGWzN2=v_w!|KOw~#Qbz)#sHfT9 zj(abIyul0+usP#enEwhGXBy91#-pg)vZ`+K!(oFiN7T@s;kkMJ4OXT67Fh1Pkk7~R z+8hKvX-d9b03RFi0a!>B_fKK!aB@*IF}C((%qrc6ixxw2?j5?l&20t%6}Py z=gAm6Nq^4%ljQ6_NxjjtgTgtZ` zfj1Z|MI05bZ&N5;uqU00000NkvXXu0mjfrz6%D delta 958 zcmV;v13~=L2h<0UB!8PpL_t(|ob8)ia^)ZlL_Mk5iTA%G?-3Dja9 zYkNQ8vk09dtO6JhfH%ebPrx~2Jn9+OVy@4o%*j_5Dtabc)KC*KZ$8&xRO(-W=e`Iz zKc)w!Q2Mm1p;5oF111s$`L09%ste9-K)sCT1+$)WsDBQaP{zGQf~*dVsiD_r$Isao zwvIPPz3MLYPHl8zQ62E?dCz>RA*FNuIA&I-*JP%T1;0*;SRYdw^TkfqAzAdzs0O~Y z2I$JXt(&;%A+{^#S~s+`i2iFM^mCzIfvpixc2{=8#a{4cx7Y|)!fy_ykW?Q$Nwxly zRO>%UW`FAgZOdHxdw|dIHI}Z6^laYoiVJ(OKlXg$;`ubcee`B!UO>3pct1nYdI22H z6PfnmC?Vst4`SYNbo3B}jr(E6$SnOu7{J6SNx zAHT^^VnaoRIb^`^N56P@L3|^ZtQZujVuAYSTiZrb!<63x8Y)DF) zFw2$alBI~Pdi8E$k_Sg}bzeV*uI3kEyf;7Vb;nVeI;`vXIq`v+wgl}0@)ZvLCBkP> g6h%=KMe%p|2B(NtMRH$+#{d8T07*qoM6N<$g0pSb5dZ)H diff --git a/test-integration/snapshots/getPublicKey/nanox.14.png b/test-integration/snapshots/getPublicKey/nanox.14.png index 759123d386f973bb80ce804834ae54c90faa91cd..7c6e3c34df0d0cd4feef4875e70f0d267de5af7a 100644 GIT binary patch delta 171 zcmZ3@yoz~(3S;3!)#vr!&Ytbu#PxOS>beQHj}<)m6u%>UN&M!H_QJy-UOkE6v^uAq z>-k@Ex(s`Rd|Itk)rAj{X-VOClD8e)^!i=F&uGmF75karym#2=wTIyh3$M=x--?gB zv>v@W{_IEGhXvbMj?V4;7x?0Pm+h|?5q~E~{QcZ=|IQIr4x delta 172 zcmZ3*yqbA}3S-ek)#vrAF5Q`bP0l+XkKDQQS* diff --git a/test-integration/snapshots/getPublicKey/nanox.15.png b/test-integration/snapshots/getPublicKey/nanox.15.png index 09ddad6f846b0f5650dbf98d658f0c3cd8673e1a..936a20ed3a866b8ee9df2a58c3e298c00ced5ed3 100644 GIT binary patch delta 518 zcmV+h0{Q)^1gQj&Eq_argdhw+GgEyN?|&rjG7G9Gh9E>mFztIQ+vXDzh)Glg00000 z000000N?~6gb>1NDGu{bx7~mm1@G-78;w>(yectb;>z8C_r^}8@87RCSYJdUKlJdY{ zZ9u6-s(Quhwb+Eurx+>v+gPqamv6+r2@C)L@LrzvT~Iah)A4&ZuDufeUaagM#aSji zK_hwfZG7oiF~b1uG)M2&ZjDpdEUS&X?W_MzP8;Wip?~&;8C&Kh&xZD^?d5+}Rg|Nf zW{d@SfIahUw6qUW6o2fg@0_FH>=|$!{avZH$4oD@-~^fh+1$YU2ogAw+-EV&VAFC-WXX`qpQ4K?FP9%zegt<1vEsS;Lu#%sZNWe zxM6g5`ZBk;U4N535&0swIN%{X@G-7$#9Km8`@G*xH!jJ}oh~~eWuWqUsR0g1TgnrI zwF#wGsTvil*J4vX7co-xud&>MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1 zf<^M~+xXV8Vul0SWsbgEyFE_bv#bv8j<5bYxon)5hJV^OW*nKfJR8=pj+g(ts-gnj zG-oWR1MHP&W2AkNqWNPledinnXU~A^=>L^!f6Ri$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVR z!^?#XAaLj0>;3w3p5HvZcI%~ttO|FHBxxe-Lx7JeUt@5UMV%7^T*LPf- z75PqV?R&Ac*Y74+z1ifjes*-n^8Y1k%;!J*{X>1_Wy8vNDc$IG z?)n2A(<9u@FxI6S>6~udD->*q?MAH`P zPC5Sl1DAe#_=KhhTqO>S_21vjWMr70I5}#XnP2Hl|5=S{{|&Soq5-#OX@e`IFAazVc2C7m;`G z)=_-NvnBR(=-T=zF`n;E*uQU@k<(P|`}X+mrJ+_?hVFiahHX=c~ey0`_pO0E8w{eFd%lpz zcoGN!!f^lq006i9`s)s_*K2N%F*x5pm}lD*{eP2;Eaw3km-%B1w-5D> z6*Fg(qJNA=#_Wac&c@}tc>-i}D--KHVJhertgzKKGV4XupmDpi=j;^pnbcUZQ)u1h z6(B_ui{uXQGdIJQxu{a4{@}Ft_;B_fkWVc6ozty6bKG+o1*1FdlKi`T7d6frXQ4~9 zx9{N{-fmvQ6n}&>H~|grd1nTI=gOZ)qqyC+Pk2d0zM9&acCTel-V!&z61kk)hv=C- zIuMnb^`G`Ot|*=>Ek(#$YSlB!ci+x!yz9xK{!aTe)wLkCdVHiaOth@HeF*Gx-f|H9 z7Y&PXXO3)CK}FQsue&r~Y)PK8Y)QN37cqJJI?RM<<62RXhm7kRTGG56t!4@J&A`U3 zk2?BC%O}Yz=AZY5y4fV(HEo^fJ7toyY>BN|i2wiq00000000000000000000z-4{` X0;~r-LllU}00000NkvXXu0mjfuM+S$ diff --git a/test-integration/snapshots/getPublicKey/nanox.19.png b/test-integration/snapshots/getPublicKey/nanox.19.png index d83595e463b8c9faf39e99aed28751de91dbb344..da1533ee83bb895efd9a0ce459006e1d52e2f599 100644 GIT binary patch delta 957 zcmV;u148`N2h#_TB!8MoL_t(|ob8)Ya>F1DL}{lt@%@j)UHXw3h9YUTfUw(C@2hb@ z$OsFuPD@FWBuSDaNs`<7*z8|x?LS`EgiTVsTXJ|^$GN4fK78_lSRf_<3r>J8ytQEpYOVV@q4xpoSW(2JpgVIn zU~r=)q7VX2_1v9;8X#s&IQhb9dD*I6!k5~?0H{?OxsKZWy6uPhgv>%Xeaq`=mOGJ= z-VG3s{S6~z%YS(+1wBsG*=66z+Y(q5B}tOJC8ioGWzN2=v_w!|KOw~#Qbz)#sHfT9 zj(abIyul0+usP#enEwhGXBy91#-pg)vZ`+K!(oFiN7T@s;kkMJ4OXT67Fh1Pkk7~R z+8hKvX-d9b03RFi0a!>B_fKK!aB@*IF}C((%qrc6ixxw2?j5?l&20t%6}Py z=gAm6Nq^4%ljQ6_NxjjtgTgtZ` zfj1Z|MI05bZ&N5;uqU00000NkvXXu0mjfrz6%D delta 958 zcmV;v13~=L2h<0UB!8PpL_t(|ob8)ia^)ZlL_Mk5iTA%G?-3Dja9 zYkNQ8vk09dtO6JhfH%ebPrx~2Jn9+OVy@4o%*j_5Dtabc)KC*KZ$8&xRO(-W=e`Iz zKc)w!Q2Mm1p;5oF111s$`L09%ste9-K)sCT1+$)WsDBQaP{zGQf~*dVsiD_r$Isao zwvIPPz3MLYPHl8zQ62E?dCz>RA*FNuIA&I-*JP%T1;0*;SRYdw^TkfqAzAdzs0O~Y z2I$JXt(&;%A+{^#S~s+`i2iFM^mCzIfvpixc2{=8#a{4cx7Y|)!fy_ykW?Q$Nwxly zRO>%UW`FAgZOdHxdw|dIHI}Z6^laYoiVJ(OKlXg$;`ubcee`B!UO>3pct1nYdI22H z6PfnmC?Vst4`SYNbo3B}jr(E6$SnOu7{J6SNx zAHT^^VnaoRIb^`^N56P@L3|^ZtQZujVuAYSTiZrb!<63x8Y)DF) zFw2$alBI~Pdi8E$k_Sg}bzeV*uI3kEyf;7Vb;nVeI;`vXIq`v+wgl}0@)ZvLCBkP> g6h%=KMe%p|2B(NtMRH$+#{d8T07*qoM6N<$g0pSb5dZ)H diff --git a/test-integration/snapshots/getPublicKey/nanox.20.png b/test-integration/snapshots/getPublicKey/nanox.20.png index 759123d386f973bb80ce804834ae54c90faa91cd..7c6e3c34df0d0cd4feef4875e70f0d267de5af7a 100644 GIT binary patch delta 171 zcmZ3@yoz~(3S;3!)#vr!&Ytbu#PxOS>beQHj}<)m6u%>UN&M!H_QJy-UOkE6v^uAq z>-k@Ex(s`Rd|Itk)rAj{X-VOClD8e)^!i=F&uGmF75karym#2=wTIyh3$M=x--?gB zv>v@W{_IEGhXvbMj?V4;7x?0Pm+h|?5q~E~{QcZ=|IQIr4x delta 172 zcmZ3*yqbA}3S-ek)#vrAF5Q`bP0l+XkKDQQS* diff --git a/test-integration/snapshots/getPublicKey/nanox.21.png b/test-integration/snapshots/getPublicKey/nanox.21.png index 09ddad6f846b0f5650dbf98d658f0c3cd8673e1a..936a20ed3a866b8ee9df2a58c3e298c00ced5ed3 100644 GIT binary patch delta 518 zcmV+h0{Q)^1gQj&Eq_argdhw+GgEyN?|&rjG7G9Gh9E>mFztIQ+vXDzh)Glg00000 z000000N?~6gb>1NDGu{bx7~mm1@G-78;w>(yectb;>z8C_r^}8@87RCSYJdUKlJdY{ zZ9u6-s(Quhwb+Eurx+>v+gPqamv6+r2@C)L@LrzvT~Iah)A4&ZuDufeUaagM#aSji zK_hwfZG7oiF~b1uG)M2&ZjDpdEUS&X?W_MzP8;Wip?~&;8C&Kh&xZD^?d5+}Rg|Nf zW{d@SfIahUw6qUW6o2fg@0_FH>=|$!{avZH$4oD@-~^fh+1$YU2ogAw+-EV&VAFC-WXX`qpQ4K?FP9%zegt<1vEsS;Lu#%sZNWe zxM6g5`ZBk;U4N535&0swIN%{X@G-7$#9Km8`@G*xH!jJ}oh~~eWuWqUsR0g1TgnrI zwF#wGsTvil*J4vX7co-xud&>MF5if~2^;_b@Lituzo2U7r}Ou2UVA0|z1Z13inB_1 zf<^M~+xXV8Vul0SWsbgEyFE_bv#bv8j<5bYxon)5hJV^OW*nKfJR8=pj+g(ts-gnj zG-oWR1MHP&W2AkNqWNPledinnXU~A^=>L^!f6Ri$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.05.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1gMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.09.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.13.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.15.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g}xzo)4Y|p(?{kBYnUCrsM!^D&&Pvy;qT0W>h%`dO|CxC8TT_%dAyjT_o;hHZy zZPLS_*>By_H&(zfrVTqZ{G#8e-=a`yx6{ea(Qx9Z{MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.20.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.24.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.26.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.26.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g>SAse6$eJx@$#A|>O{W{#2J45)kuE0Z0pu@#IDiNvk&v-M0s67B?dY5^`%Rj~K z0ZptUhW-$56qFc-I`J73F#rGnU=Qat1Fcnr$A!qB`8xd9&-zoo=kau`94I1-=XCBG z;5@&*obmQ{-aI7jJb69>QNqz|Ha}~=y1DcIx4n}t@59i+)oN0XI-6nWOqbXC zw}7Ucy_O=h9)PHnQ{Oz+H-q;Sw2V~`@ZJDgnc7LlKQq1uj2-I-O`@-}jY>ItjX?nb f00000fNlK(0puX5=Ndi%00000NkvXXu0mjf7q-X2 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.29.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.30.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.32.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.36.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.36.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.38.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.38.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.41.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.42.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.43.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.45.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.49.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.49.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5bc3ab3d66a0661893956cbaea4e030d10e038 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{%ba4!+nDh3gqfoN~k3-|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.51.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.54.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.54.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.55.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.55.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.56.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.56.png new file mode 100644 index 0000000000000000000000000000000000000000..57361d73eb92d15d2961836d9eecd0ad84eb9d14 GIT binary patch literal 587 zcmV-R0<`^!P)zY{Dl8MiNDMtYJ>n22h0+6)rk<=&^TUj6z2c{0001%^RsfY5W>~)-b+2> z^1DUF#aOLJ!{3@|)?l)0%eMYvj{-sn-uv{4i~X@(T1nd9=#1@jit4Z2^6f79-8+4T z|KNlzF2^^dT{>v|s(LqsQ0i$OXDJ|jXpd2LJ|*gYB^wlw{>ii*9mwom7>w1nYzxBO z&uoV;8W}vBgR-D2W=e`N^gL4TyVCW)iKzNVo>WdZ3!F``&2IcsuxMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanosp.59.png b/test-integration/snapshots/signTransactionAddaddress/nanosp.59.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV6WkVhY_KSY@;9FxrrG^|(jxwsptr{n@A3J3LvKrMp}@)UfpQ z&Kp}6mPOkn3eEHTm#tl%8`%7xJ;yIe*Zu9wixoS17Op(CX4}QI!&B`|*UxLIzWM#J mK~QYJfQh6mD2Px&!3FUp({(TEcf4K%lJIo(b6Mw<&;$TF0if0Z delta 344 zcmbQvJe_%hM?DJ*ZHDFoiVC3@%dnRCzC z`V~)9PVasCf^!06)X{g}oKBtLJKXmqgF#60erVF4K+UT{a-ZvGu`n<+oXWm$dV0b! zrwg|(2DZ*Wd$;@m-}btj@;gNW*QwmjK7DoZr_15F(ob*Pyr#8De_>R@^>-C3nZCY} z?hWgnn0?dCf1~j2imS^R}(KU4NcoioL^=g<0CmrLP*4 zp4@q3%fhl~n?#{`e*dzy%X0&p|Fh@#CF#1qeR*-m&Yt;wtIlM}=a$7p{<}K4K>v4@ mjN7W$f=z14pb$a>e7~3$$LL=4St>3DlJRu)b6Mw<&;$S{AE0gk diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.04.png b/test-integration/snapshots/signTransactionAddaddress/nanox.04.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.06.png b/test-integration/snapshots/signTransactionAddaddress/nanox.06.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.08.png b/test-integration/snapshots/signTransactionAddaddress/nanox.08.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.09.png b/test-integration/snapshots/signTransactionAddaddress/nanox.09.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.10.png b/test-integration/snapshots/signTransactionAddaddress/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.11.png b/test-integration/snapshots/signTransactionAddaddress/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV6WkVhY_KSY@;9FxrrG^|(jxwsptr{n@A3J3LvKrMp}@)UfpQ z&Kp}6mPOkn3eEHTm#tl%8`%7xJ;yIe*Zu9wixoS17Op(CX4}QI!&B`|*UxLIzWM#J mK~QYJfQh6mD2Px&!3FUp({(TEcf4K%lJIo(b6Mw<&;$TF0if0Z delta 344 zcmbQvJe_%hM?DJ*ZHDFoiVC3@%dnRCzC z`V~)9PVasCf^!06)X{g}oKBtLJKXmqgF#60erVF4K+UT{a-ZvGu`n<+oXWm$dV0b! zrwg|(2DZ*Wd$;@m-}btj@;gNW*QwmjK7DoZr_15F(ob*Pyr#8De_>R@^>-C3nZCY} z?hWgnn0?dCf1~j2imS^R}(KU4NcoioL^=g<0CmrLP*4 zp4@q3%fhl~n?#{`e*dzy%X0&p|Fh@#CF#1qeR*-m&Yt;wtIlM}=a$7p{<}K4K>v4@ mjN7W$f=z14pb$a>e7~3$$LL=4St>3DlJRu)b6Mw<&;$S{AE0gk diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.14.png b/test-integration/snapshots/signTransactionAddaddress/nanox.14.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.16.png b/test-integration/snapshots/signTransactionAddaddress/nanox.16.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.17.png b/test-integration/snapshots/signTransactionAddaddress/nanox.17.png index 7de90fc39340d19353185493940d3e33f0b73d8b..3898b521e33713712d2656ba0049d466f22eb2d4 100644 GIT binary patch delta 580 zcmV-K0=xa(1l{=A2;eWQrNVI> zIcGY^T0&PzEmwr)x^6<6*4kl_PkqfsD;60hBXmN{*Qrd8BvEB9D(kTf=&# zn<~0?ZizN58ztd)vP%eBjUM6v0N|aBS3~Vpnk3YDrr6O-m@x%TsqC>9<*knXRI=X+ zJCbA(o`!&T&?dvUe*c<6NK?;mZMxL+{)7{n_{_Ixd2`WX*dhXavyW5;zVonawY03b@F_g8F zxGXBAQ+iI>NT`C|8B4bT00000z!T69=$)^ItG_#`0F-h){R*A!_9MJqF26@ z3ch4tx~3M4YTbdbnykS~KfUPRbkGQ3x#-#-5ZYsrrxi> z<*kNVKB(U0!|7x9;f+E1;Xxx*h6%(QmYGF<9DV z6SdSsT|Fo%L?_`{n*O^Uz|-~tU&qWNNomOg00000000000000000000UdumiOd{#V Szqbbf0000XDBhHa-iasNwlFMY@y$B~Ofl-TtDo;=jx zg$RmiN&o-=0001l^A*-oDdj5UoF$20zem;D{uucVYiTz*XaDS98mc7%_z7#NQcB4= z(?PZpx=LEPBCO@M329negGIjeEeEZD{2>WbOzSJ!E*mIMJ%2Uh9S0epe9-F{h0}dV z?~Vb|s;?v8J$Pk`BVB*xff$e+L!IzNcPj_Gre_R5xnibdn1!B4+G|#Mycaqe)+)nL zG1N1mVG{=h;s41gE@(H@#lgt{0Kj}U)SjhDLY`-d9zBH_li-xn9((C_b<&^GXwSDp zk0jZIr=g%-5Py9^=H431Bf93{wS-b3ap@B$E(3TLI6IOh3%S$G{%p^^QvJ3}g1OLLe@;7p1*IZZy?1P+J#9{Ju_gxSbZLNTAIj=U zTojeUDZQucB(#Fw8B4bT00000z#Gsn=$%``-QOKi-hXx{{O1m3)`J*(n(u_e%$JhE zm-I_zs=-)oI1sibtMJxOFG|)vaUQ@@80w!8+I^9y6-$do#}$!^IO@p0urtHNlqFB) z&4yY&s6Wjwulgr|Zd_d^il)3+76;*)FFS40!=Tx3-O@K!z%Zr_J2d>F->BcBP-(Z* z$eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.20.png b/test-integration/snapshots/signTransactionAddaddress/nanox.20.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.21.png b/test-integration/snapshots/signTransactionAddaddress/nanox.21.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.22.png b/test-integration/snapshots/signTransactionAddaddress/nanox.22.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV6WkVhY_KSY@;9FxrrG^|(jxwsptr{n@A3J3LvKrMp}@)UfpQ z&Kp}6mPOkn3eEHTm#tl%8`%7xJ;yIe*Zu9wixoS17Op(CX4}QI!&B`|*UxLIzWM#J mK~QYJfQh6mD2Px&!3FUp({(TEcf4K%lJIo(b6Mw<&;$TF0if0Z delta 344 zcmbQvJe_%hM?DJ*ZHDFoiVC3@%dnRCzC z`V~)9PVasCf^!06)X{g}oKBtLJKXmqgF#60erVF4K+UT{a-ZvGu`n<+oXWm$dV0b! zrwg|(2DZ*Wd$;@m-}btj@;gNW*QwmjK7DoZr_15F(ob*Pyr#8De_>R@^>-C3nZCY} z?hWgnn0?dCf1~j2imS^R}(KU4NcoioL^=g<0CmrLP*4 zp4@q3%fhl~n?#{`e*dzy%X0&p|Fh@#CF#1qeR*-m&Yt;wtIlM}=a$7p{<}K4K>v4@ mjN7W$f=z14pb$a>e7~3$$LL=4St>3DlJRu)b6Mw<&;$S{AE0gk diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.25.png b/test-integration/snapshots/signTransactionAddaddress/nanox.25.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.27.png b/test-integration/snapshots/signTransactionAddaddress/nanox.27.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.28.png b/test-integration/snapshots/signTransactionAddaddress/nanox.28.png index 6f2ed5c17883afac23809c143c62ef9157552571..06cd83b02032318c06abe325a50a699e4dbd184e 100644 GIT binary patch delta 41 wcmdnWyqS4|3S-qo)!!_iTPp-6t1(uKglv-&x@50*f&mCTUHx3vIVCg!05IGQ#{d8T delta 43 ycmdnYyp?%^3S-Sg)!%H!tv@Q8#3rjSR*Nt`QCRt0%8ro%2s~Z=T-G@yGywoj_YOY* diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.29.png b/test-integration/snapshots/signTransactionAddaddress/nanox.29.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.31.png b/test-integration/snapshots/signTransactionAddaddress/nanox.31.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.32.png b/test-integration/snapshots/signTransactionAddaddress/nanox.32.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.33.png b/test-integration/snapshots/signTransactionAddaddress/nanox.33.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.34.png b/test-integration/snapshots/signTransactionAddaddress/nanox.34.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV6WkVhY_KSY@;9FxrrG^|(jxwsptr{n@A3J3LvKrMp}@)UfpQ z&Kp}6mPOkn3eEHTm#tl%8`%7xJ;yIe*Zu9wixoS17Op(CX4}QI!&B`|*UxLIzWM#J mK~QYJfQh6mD2Px&!3FUp({(TEcf4K%lJIo(b6Mw<&;$TF0if0Z delta 344 zcmbQvJe_%hM?DJ*ZHDFoiVC3@%dnRCzC z`V~)9PVasCf^!06)X{g}oKBtLJKXmqgF#60erVF4K+UT{a-ZvGu`n<+oXWm$dV0b! zrwg|(2DZ*Wd$;@m-}btj@;gNW*QwmjK7DoZr_15F(ob*Pyr#8De_>R@^>-C3nZCY} z?hWgnn0?dCf1~j2imS^R}(KU4NcoioL^=g<0CmrLP*4 zp4@q3%fhl~n?#{`e*dzy%X0&p|Fh@#CF#1qeR*-m&Yt;wtIlM}=a$7p{<}K4K>v4@ mjN7W$f=z14pb$a>e7~3$$LL=4St>3DlJRu)b6Mw<&;$S{AE0gk diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.37.png b/test-integration/snapshots/signTransactionAddaddress/nanox.37.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.39.png b/test-integration/snapshots/signTransactionAddaddress/nanox.39.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.40.png b/test-integration/snapshots/signTransactionAddaddress/nanox.40.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.41.png b/test-integration/snapshots/signTransactionAddaddress/nanox.41.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.42.png b/test-integration/snapshots/signTransactionAddaddress/nanox.42.png index 85bc4b280f8593c480c83fb9838f709d74d142f7..8325832e317095ce39626c195a6adf9bfbcf3090 100644 GIT binary patch delta 542 zcmV+(0^$9+1hxc_BYy$?NklP!;=?c+urn; zHK~XZ5%Q)Ci2*W6Rv_L)wAE9TkA;=ZO-@h)0002Mj>sGIohyU+=Z>DXCw#lvx^^Mf zJh&N_ImrU2m_cl=hU8RbO@mTQa{{$iDGx+5%sHYW8i%Q4U zm5NZdu~o*#urtL6vFHN?dUHXwli#__K4|)^*ORLag=TIlU>t delta 545 zcmV++0^a?$1i1u|BYy$_NkloG%*j zg2qlD=(Yg>0000?=Vw|^-uqB+&edxA_4}o)bd-GNbTa`%E6(Hs19K^Tt-*UW;f z5@APmihB}yxqoQ*1+_OVpP#&9sj2eIe_1bTBpwKu=>HtV1nvtB2c4TWZIDqtLh_XOE$H+>q(rw_$1 zAz}{v1J0!qYdOdseT|^dZ@yoj_tLy^!UrJ3gRoW0{<9vy)7AmE!+t~NwcZ~900000 j0000002%-Q0CN5S>Z1Lj5wG4600000NkvXXu0mjfVTAy~ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.44.png b/test-integration/snapshots/signTransactionAddaddress/nanox.44.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.45.png b/test-integration/snapshots/signTransactionAddaddress/nanox.45.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.46.png b/test-integration/snapshots/signTransactionAddaddress/nanox.46.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.47.png b/test-integration/snapshots/signTransactionAddaddress/nanox.47.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV6WkVhY_KSY@;9FxrrG^|(jxwsptr{n@A3J3LvKrMp}@)UfpQ z&Kp}6mPOkn3eEHTm#tl%8`%7xJ;yIe*Zu9wixoS17Op(CX4}QI!&B`|*UxLIzWM#J mK~QYJfQh6mD2Px&!3FUp({(TEcf4K%lJIo(b6Mw<&;$TF0if0Z delta 344 zcmbQvJe_%hM?DJ*ZHDFoiVC3@%dnRCzC z`V~)9PVasCf^!06)X{g}oKBtLJKXmqgF#60erVF4K+UT{a-ZvGu`n<+oXWm$dV0b! zrwg|(2DZ*Wd$;@m-}btj@;gNW*QwmjK7DoZr_15F(ob*Pyr#8De_>R@^>-C3nZCY} z?hWgnn0?dCf1~j2imS^R}(KU4NcoioL^=g<0CmrLP*4 zp4@q3%fhl~n?#{`e*dzy%X0&p|Fh@#CF#1qeR*-m&Yt;wtIlM}=a$7p{<}K4K>v4@ mjN7W$f=z14pb$a>e7~3$$LL=4St>3DlJRu)b6Mw<&;$S{AE0gk diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.50.png b/test-integration/snapshots/signTransactionAddaddress/nanox.50.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.52.png b/test-integration/snapshots/signTransactionAddaddress/nanox.52.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.53.png b/test-integration/snapshots/signTransactionAddaddress/nanox.53.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.54.png b/test-integration/snapshots/signTransactionAddaddress/nanox.54.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.55.png b/test-integration/snapshots/signTransactionAddaddress/nanox.55.png index 85bc4b280f8593c480c83fb9838f709d74d142f7..8325832e317095ce39626c195a6adf9bfbcf3090 100644 GIT binary patch delta 542 zcmV+(0^$9+1hxc_BYy$?NklP!;=?c+urn; zHK~XZ5%Q)Ci2*W6Rv_L)wAE9TkA;=ZO-@h)0002Mj>sGIohyU+=Z>DXCw#lvx^^Mf zJh&N_ImrU2m_cl=hU8RbO@mTQa{{$iDGx+5%sHYW8i%Q4U zm5NZdu~o*#urtL6vFHN?dUHXwli#__K4|)^*ORLag=TIlU>t delta 545 zcmV++0^a?$1i1u|BYy$_NkloG%*j zg2qlD=(Yg>0000?=Vw|^-uqB+&edxA_4}o)bd-GNbTa`%E6(Hs19K^Tt-*UW;f z5@APmihB}yxqoQ*1+_OVpP#&9sj2eIe_1bTBpwKu=>HtV1nvtB2c4TWZIDqtLh_XOE$H+>q(rw_$1 zAz}{v1J0!qYdOdseT|^dZ@yoj_tLy^!UrJ3gRoW0{<9vy)7AmE!+t~NwcZ~900000 j0000002%-Q0CN5S>Z1Lj5wG4600000NkvXXu0mjfVTAy~ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.56.png b/test-integration/snapshots/signTransactionAddaddress/nanox.56.png index 57361d73eb92d15d2961836d9eecd0ad84eb9d14..73150ce04de49df42121f4850626cc3f36292563 100644 GIT binary patch delta 560 zcmV-00?+-+1jz)DB!3V|L_t(|ob8)kj)Wi#fZ5I7#QPtKyX=D*LV(sP<;TqTJt2dI zX>AKNh5!Hn001zZpP7@z7|+IW98yoe{KulwV!YO4;cw0~b8ykxG}WK1F+hy*IF9^@ zOZ}-`dr97}bf$JbMf0vOUEMXmYo{+bJ_JF<^>{_vX#?f1=6|m-#@bHf*vkO%gFeRC zd6#7SnJh3s{wMQx3LvAk(3z`!S(bz!KeG>FQP1GfY_tnHbEae%$H*h?eP@RLH_^1p zgH&1EvWdF)O2S{rMj>c4dWZu6_(HC$q4rWtPz#FV>5wIrC0>BCb*nFx6gNVS z{?mq=&Kl=kkbl>scS}xQ_)H#9Tn7346$FPXI*SFQOR3=M=5R4XS$BOoPL9-L^ZOR4`S2Osq`AhaWT%N2(MhXXUf~4Z2)GkKma`a)BRm|qdroda5yVEQ#KIpW^qMlhSGmZ;f?>+}O>ZR!- z%@+W^yxRc5R6{md4 y@%khTIw^#p#b5vc0000000000000007|1`v0uU3u%i;|H0000I4g0GZMJg#SN@zswaX1L?JoJBQ0i$OXDJ|jXpd2L zJ|*gYB^wlw{>ii*9mwom7>w1nYzxBO&uoV;8W}vBgR-D2W=e`N^gL4TyVCW)iKn<-X&dF56PI=5FI#Fm9q={1hwVvI`>RJK~hEIUX z0+id4o%PdKgSK+?NLi^gG8=rm;PR~}^q@C5bJL_6x__Bh2H`E}y%_)isHi3t-N*Vz z!Vlr-Ea)2|-jpmzDlSUxY-B2@J?yrMSshsw_~`OQ{QPQ5Q0nME_>JjeC!bAaK# zR86G%0>GAcE5PXrmU=m**sC#8k7{#t5Z+Gq5kvKxhCyaofWEk>iEoXfV|-IK`R*A;DR=T0ssI20000000000003Yj|EsJM6L}FJwg3PC07*qoM6N<$f@SOw A#sB~S diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.58.png b/test-integration/snapshots/signTransactionAddaddress/nanox.58.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.59.png b/test-integration/snapshots/signTransactionAddaddress/nanox.59.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.60.png b/test-integration/snapshots/signTransactionAddaddress/nanox.60.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddaddress/nanox.61.png b/test-integration/snapshots/signTransactionAddaddress/nanox.61.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.04.png b/test-integration/snapshots/signTransactionAddnft/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.05.png b/test-integration/snapshots/signTransactionAddnft/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.12.png b/test-integration/snapshots/signTransactionAddnft/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.16.png b/test-integration/snapshots/signTransactionAddnft/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..59e91efe8433df4e15c9f7099888a588bb033f4d GIT binary patch literal 397 zcmV;80doF{P)?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.17.png b/test-integration/snapshots/signTransactionAddnft/nanosp.17.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.18.png b/test-integration/snapshots/signTransactionAddnft/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.24.png b/test-integration/snapshots/signTransactionAddnft/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.25.png b/test-integration/snapshots/signTransactionAddnft/nanosp.25.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.27.png b/test-integration/snapshots/signTransactionAddnft/nanosp.27.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.29.png b/test-integration/snapshots/signTransactionAddnft/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.33.png b/test-integration/snapshots/signTransactionAddnft/nanosp.33.png new file mode 100644 index 0000000000000000000000000000000000000000..59e91efe8433df4e15c9f7099888a588bb033f4d GIT binary patch literal 397 zcmV;80doF{P)?Yj*NZe&VOqvD|9n-aC@AFFyQBuC7ni2p200000{>8((0`p2Ka-4HE ztjRY*Hh>Pj7O@%PHGo84hr4?*gr{`{CRKqB7x$=2DSG}HpN0^11i;K*H;>r;Q``|y z#X4f>H}T$r60f07tg#UT0001>oZsBW-3I%$#dHwaWrF^)uD}Pn`JbF~DMfa|?Uxxg z%rn{%Fvz~i@%f8>c+7@MkKTH>b#?CLbP8HN?!svUbZ77-xoZHuq9(P*>gi}JAd7HS zSeF3+0027Lzp3u{zsmDJTOLyp*OG07oZ8l>;%+0RwTaAeYICo=&YQNU-CO;OD(kuT z8Q^4U^DrBFc!%E$GXm~=gl+eC(Eu_Vw6SPso@<|*tlMDyMfi~IR|gj(U|=xOPj_1u r;dvgG&1*3Q8KVIJ00000zz@9vVN>lYqy?sf00000NkvXXu0mjfu2`>- literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.34.png b/test-integration/snapshots/signTransactionAddnft/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.35.png b/test-integration/snapshots/signTransactionAddnft/nanosp.35.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.41.png b/test-integration/snapshots/signTransactionAddnft/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.42.png b/test-integration/snapshots/signTransactionAddnft/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.44.png b/test-integration/snapshots/signTransactionAddnft/nanosp.44.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5570e4ad76e405b0ab284b7077def9e571c6fe GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|WK(M-^SI@yZbnAV^mPXZ=4>vJgy0F|P zta(4zh8N2p-t#GWXuFG{cay{J?%m<5W_`2&JzK9Lmr-I_+3e~)e~;#KpGbOZ_+{e$ z1oF%O}kFDOe-Lq#IfB@ zX=k}2k`FH3P2a%Li?JL1u@4ipJymCVC9!_dxKpxz13FFVnx|yCXa$6(12N0dnDu_Z z^ijuZOy7VQV>tlTTijSxr7ZGsb=sym`{6*=0002!xAa#L)nM^(YNjtARcUaIvh35I zD)WYwXMbM5jB7b<=IgEnB{#c~J3A1#)&+ImXEpnDK~C*c0V_9ig`58X-QhYb!%zSK e0000006$-8P~rC*O6s-%0000LsXG zmjbTyYrkxqwQI$NZNs3h#T6h;rCv9ZDclZNUAM`OA8SG1+`(w^Gf7(kE)+9vadnAe zmsi#5^1VQi=UhN_>-y)#0clh3my=3`HY-s-Avy{26 zp`t;$aB+dqP(yXtVVCZ1H1o=-<6xr4P=7Z& z)iayk2X}&@6)*!^V;uLBrVPxg@#YidxB*C<8Z)n!WT!SubyJrE{9;Ise$JJ;KAgPT zZeIac5XGTXoT$15e+}{4}0Z^ce82;9V-tYOE!^)ZZn<+?PB`WFqgJ`#PyVxcx@A9}Y zB5+FjBJwR;KvymmgO1{8ozql#3%Xap0`U9#A)CpFz<_E&URopWXz*1-cO>QNhH`Ww z|71|)B)HRi%OeJx?hL-r0YK(HF48JpgP&ks%ImlVspN`u%&y-=dzt?K0fElY zdqKzIyZfjAv;OHDOArLXVwysQm;LqJ@G0mJeF9|YCQR>sY#O}0fTAYrw|1S#Q_vQD zbSbpK^e>wzYT?B|1ynKK>j=*rTyS%>pe|*ix7IzFI{>(F#^xM85-!)h(E*?;pji<# z`%OLVU#yRUOk4q=F31)eocrdEcF{+lf?<#j)JJc45BM&=QVliiFrkkIK@bGT@dvdb VrlwKNOP~M%002ovPDHLkV1hyOkjnr7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.47.png b/test-integration/snapshots/signTransactionAddnft/nanosp.47.png new file mode 100644 index 0000000000000000000000000000000000000000..360b7921673a28ce4bf4749283f7f0ae892874dc GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_uB>EaktG3V{9z^cOv91Xeq z@2Y&a4|=z$J?|W&P}0>a-~P{EODcHuBt*zfsRF{^ODoUa0-M*g9G()vNJK z{mdDc*NW#KF1Q$Mm8{kCWyTe~quVF%E&7}Fx5f)NY`weJ#8m! z>M#Ah;3hU%IheO$-^0G(4@0O?~^z(36zm)KvJ%E!;pylGODy5X4fBa1esu_T3TFYE<`3Kz$ zFtJt){YLL9C~z6Nh-ci00RR916Lh=}NGX|$@wRDhqhgHZH>MqDuhZj|F(2=AU1h1# zd?=6iTRYO@F9Y;i7*^`|bZU3At?o|C$9V{ocWMq>?f$v%1oUGaEknPr1H!-f;$3J*N{W#yz9zDZ?qmn_|8Hu%Ws)toI73Kn7Huu6pkIu}E5|PJmq1 yvqkmo=%7~hY*{@6?yY)q843UZ00000{I4&Qe*0c&hQ_x50000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionAddnft/nanosp.51.png b/test-integration/snapshots/signTransactionAddnft/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.06.png b/test-integration/snapshots/signTransactionAddnft/nanox.06.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcCeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.12.png b/test-integration/snapshots/signTransactionAddnft/nanox.12.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.13.png b/test-integration/snapshots/signTransactionAddnft/nanox.13.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.14.png b/test-integration/snapshots/signTransactionAddnft/nanox.14.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.19.png b/test-integration/snapshots/signTransactionAddnft/nanox.19.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcC3Zu+K)$eTS%CGl0ex9trC@=CgV5`O3_U-ZvK;Y@>=d#Wzp$PzN4-e}A diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.25.png b/test-integration/snapshots/signTransactionAddnft/nanox.25.png index e17bdfa94f5e8966590db18b3229d7fb5553080f..9b9ae3db1fd74acb9240d806e4a07603045de545 100644 GIT binary patch delta 397 zcmV;80doGS1E&L!B!6y6L_t(|obB3C4uc>JfMK@mCfxr>++`0Wh7{SAllkv(`WuxL4jrHCVzfoBL)Bf0JxP3tLvia z#W22KlbMX|KAd+T%0BU-;CsrRlqCI7}4%Ph@}ZZibbd^4lu>LrQ_Upigs zC=M$SnT?)VrTvSiIDf~BQ1l(cl4k!MfG>3>7ZT821-wp`XV81n2ubjHrd>~GT z&3PZ-ej#yMJ%2eF?|s4u$dwS2l9*BT66(3MOcxg_%WOV?N-jO||pOygt0000004Uze)zcKM_6FAg0000i)QxEWlBD0e)|C32b8fS!8(lR7q`sM%1wv92bm>7zDLUC&zU_iWUSlPUfa)C_zyB tQfhq!5Cj$1^`Djj00000002yU1Ib_06doJ*h5!Hn00>D%PDHLkV1g!*vs?fG diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.28.png b/test-integration/snapshots/signTransactionAddnft/nanox.28.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.29.png b/test-integration/snapshots/signTransactionAddnft/nanox.29.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.30.png b/test-integration/snapshots/signTransactionAddnft/nanox.30.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.31.png b/test-integration/snapshots/signTransactionAddnft/nanox.31.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.36.png b/test-integration/snapshots/signTransactionAddnft/nanox.36.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcC3Zu+K)$eTS%CGl0ex9trC@=CgV5`O3_U-ZvK;Y@>=d#Wzp$PzN4-e}A diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.42.png b/test-integration/snapshots/signTransactionAddnft/nanox.42.png index e17bdfa94f5e8966590db18b3229d7fb5553080f..9b9ae3db1fd74acb9240d806e4a07603045de545 100644 GIT binary patch delta 397 zcmV;80doGS1E&L!B!6y6L_t(|obB3C4uc>JfMK@mCfxr>++`0Wh7{SAllkv(`WuxL4jrHCVzfoBL)Bf0JxP3tLvia z#W22KlbMX|KAd+T%0BU-;CsrRlqCI7}4%Ph@}ZZibbd^4lu>LrQ_Upigs zC=M$SnT?)VrTvSiIDf~BQ1l(cl4k!MfG>3>7ZT821-wp`XV81n2ubjHrd>~GT z&3PZ-ej#yMJ%2eF?|s4u$dwS2l9*BT66(3MOcxg_%WOV?N-jO||pOygt0000004Uze)zcKM_6FAg0000i)QxEWlBD0e)|C32b8fS!8(lR7q`sM%1wv92bm>7zDLUC&zU_iWUSlPUfa)C_zyB tQfhq!5Cj$1^`Djj00000002yU1Ib_06doJ*h5!Hn00>D%PDHLkV1g!*vs?fG diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.44.png b/test-integration/snapshots/signTransactionAddnft/nanox.44.png index ca5570e4ad76e405b0ab284b7077def9e571c6fe..b1caf4f00d36bebf3aa43fb71cecba362688d320 100644 GIT binary patch delta 41 wcmcb>bdG6)3Zv*m)lV$-lO!u9%QDJ~e5_u-Fn9h(e+D4%boFyt=akR{05)k3nE(I) delta 43 ycmX@dbb)Dt3ZwW$)lY22lPd2msGKa#C@(T^=d#Wzp$Pz9(GM5^ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.46.png b/test-integration/snapshots/signTransactionAddnft/nanox.46.png index dbef48d440e3f066c936b2e8bd4fa998cbe5c621..94c5ed4a47d537ead62d8be03ce7379e7f4656ab 100644 GIT binary patch delta 811 zcmV+`1JwM>2FnJJEq~o|?H~w+ZRfnne*Z_>?{Y3O<4^@$0>=FCU35~TfD$#XrlllF zk|arzB+2Rg)T{6JTdzN#&yHX$9AP&BvxTuvsqx+&EvW-rE70b@O@jkNKs0|gLX4b1 z6QmR~9sMQ~^!gv@tjQiNuh-QXtwSpm?lECKO4Y#TO$iN#HGhbdunc1uKFz<%Jtce8 zZoQ_nrwO9o>a*2MyM7Al&82|*^4>2SXYX2ZVOub$YjFlhkJ79g$rNq}Y_8j6^T%4y z7k4mPd{5G5KnTqfcXD%yX688uT}OX1#02ya1jghv#WqK5Ds_UB1f;_jU0nAS#k1Ns{Eo{EVx}+(kfT z&+xMcd&%-~v7!6UcPVpQLqmgf5#j=2poZ$OX_wA!wD2hD<LP=5wy)p+xca=8Q)PK{aDO0v_N zrMhXz27cg@qu+C+?l-5XzT0QO5k#{oH9M+q0r>+KYg2lylv?S9Ltpr>LjtExV&px` z#&yXY>?d=ulN|k>$6i54#p~~AZJp)bvKd)b8G4Tit zs1_8ZHR6t(pBjcEDOV4aql?f_X$T|>Q}qoY_3jM5&;%gQJ}%Nu?TUyy^H;R9+HGIc zqX$2ns0DNB!n^$c0}>tAcR`mWcJ(iRC&AknmVYEkl9L$<6;bxj=YelQ7ttp`Tqj|A zo?@@T!wV>CvVMElg}eoA(ML~(c9{NTFPc_(HBbRnjL$m43!M{gtrmnU6NXmLU~K|$ z;fyW0cqT%Qd)@?470|2*n*ElU{-3Omf-IZ?pf1Q(b3Xg#fez6}--01Yi}X>C*$18j p?j*%6)lkC2FnJJEq_~b!ypVrNvAu>{+E=!^usfZ3X-@8@rbSS(IEsR@isSZN|tN#=gE(`(D@w4G#WC2Bx zQp~jXi;x59kHpDLH3^+;WZvZ*+V#yqm?Zw zeI*%B)fS;lK!2sWVpBiWyAEMxr)sVqDWsr-@yF$FdEh>msi#5^1VQi=UhN_>-y)#0 zclh3my=3`HY-s-Avy{26p`t;$aB+dqP(yXtVVCZ1H1o=-<6xr4P=7Z&)iayk2X}&@6)*!^V;uLBrhg2~s`2I%<+uSzoEkH)mSm?k zOLbG11N>r0j(*OSx;~t|+HPL~R}jUaRGg@~1>^@T)~52K2U|a3=z{qp9 zjdO`H*iVeXPNMgB61~5Zb-k}hE@1h2JYo(ijojY;?Ez4rix~dahTiY_n#0PO`kN_8 zVI?Z*`hSCHw{^SNCM)mqxG^GdO8O%5En7fWE)|20;%J@IRCx=!SHJ@B`}!f9$%w#! zYC&FFBkpMMRYP|q3jtdD|BTmhgi$QB!%`{s^z(MO+xVUP~gM{jr! p_#`gAQVliiFrkkIK@bGT@dvdbrlwKNOP~M%002ovPDHLkV1nJdjI96w diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.47.png b/test-integration/snapshots/signTransactionAddnft/nanox.47.png index 360b7921673a28ce4bf4749283f7f0ae892874dc..36e2d17e09155d316cf5a0b96ba9d33f47547939 100644 GIT binary patch delta 460 zcmV;-0W%vU{gzbRb;(8Ut~0Dv*D zQ%z#@M89(&FUKMSFb`A3&+YG2H3i?@OT0T@&fTT8nHVs2hZ6_czV9xS!4q4CWaW>NOyMh+0ZQ!$6sDL`#_*(pzptVZp z$8diSSaJ5_|2$ZOb+h<$AO^387?a@v6d3@(n*0KhhPhMFJ<=`!00008ON^sD-*BJ4c*=zFjEKl(xWo%yI|?iZy?0J?Yr z001xsD%B)LPxLDX@^&mT0P`?a{M>#|Ra4-dOOMsIQtWl_Ba?0c7=Q9^V{-68W)OKR zcrxF`iApcEGr24Sk}3dg8q8DMh4MgVz?|jd9I`&6$0?-ccLgn0E8w$PXyG_zd@cUA zptZKnx8dhKV8z*w|MOrC*3IJgff!s5F#rGn00000000000000000000004kB`35Dh WzJXiPy&V7m002ovP6b4+LSTYu)#La8 diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.50.png b/test-integration/snapshots/signTransactionAddnft/nanox.50.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.51.png b/test-integration/snapshots/signTransactionAddnft/nanox.51.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.52.png b/test-integration/snapshots/signTransactionAddnft/nanox.52.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionAddnft/nanox.53.png b/test-integration/snapshots/signTransactionAddnft/nanox.53.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.04.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U0117_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.09.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.14.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.18.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8a2bbd23908360c9469609a3dfb1da10aa9566 GIT binary patch literal 451 zcmV;!0X+VRP)3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.19.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U0117_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.24.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.34.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U0117_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.39.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.39.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.44.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.48.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.48.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8a2bbd23908360c9469609a3dfb1da10aa9566 GIT binary patch literal 451 zcmV;!0X+VRP)3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO z-LnuB|Bmr79CL%!`Js0$d>*hmo4@60!SoM(X%Wuzl(lb?7uNEiE?duUO-h}$&EKni t5gu@S(!W9DBgwBq0{{R3004j&{R7YXGnBNHNCyA_002ovPDHLkV1lAN(DwiU literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.49.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.49.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U0117_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.54.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.54.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanosp.59.png b/test-integration/snapshots/signTransactionNewfundsreq/nanosp.59.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVj|4U*o^I;X$!z%@h)q?XJKFiuoV!eF!10g!3meESN{+BcPFei`)H$ zdT7js#vXn3?%mZ{OX(%(__#+(8=!avKa#ozkTa?ibF91^T?fQTI5}7z1AhPj0G;Ol zD?&-`C0RfW*Ce?uHsJZ(OYM(x>rOt=a|^MaJY|yCtmQc6u1wptyK3>|wegzA-OLiN zost~LT(&=(@74-$CQug*g(V}P{SL*Q6UvgeJ#qSMv|>J3(g6ABcK1S1d>!L$IOYbc z^GiRq@Oi-MZ2p#~1=GLup+QMF&r{ZZNnTjXgS!9oc~8gej9syAW+veQ$0z+8G(M92 iDl`B900000c+elwH8YfdU_#^o0000x8%nCnw8u0Dk}gpws+c zMJUO=BpZm~nk2Wy2E3npsr^uH-Nh$*ZzI-|r%dviwH&8Blxe$mS1n$=HeU0%o7v*E zQ<4Lj%l3Qo!&>3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO-LnuB|Bmr79CL%! z`Js0$d>*hmo4@60!SoM(X+aUr^OUu3k{8zUpe|d_Z%s;_wawqFeGwjTeA2%`<0Hwh iLIVH*0001h7ySdz`ZJWYlt>2v000017_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.08.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.08.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.11.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.13.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.13.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.14.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.14.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.15.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.15.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.16.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.16.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVj|4U*o^I;X$!z%@h)q?XJKFiuoV!eF!10g!3meESN{+BcPFei`)H$ zdT7js#vXn3?%mZ{OX(%(__#+(8=!avKa#ozkTa?ibF91^T?fQTI5}7z1AhPj0G;Ol zD?&-`C0RfW*Ce?uHsJZ(OYM(x>rOt=a|^MaJY|yCtmQc6u1wptyK3>|wegzA-OLiN zost~LT(&=(@74-$CQug*g(V}P{SL*Q6UvgeJ#qSMv|>J3(g6ABcK1S1d>!L$IOYbc z^GiRq@Oi-MZ2p#~1=GLup+QMF&r{ZZNnTjXgS!9oc~8gej9syAW+veQ$0z+8G(M92 iDl`B900000c+elwH8YfdU_#^o0000x8%nCnw8u0Dk}gpws+c zMJUO=BpZm~nk2Wy2E3npsr^uH-Nh$*ZzI-|r%dviwH&8Blxe$mS1n$=HeU0%o7v*E zQ<4Lj%l3Qo!&>3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO-LnuB|Bmr79CL%! z`Js0$d>*hmo4@60!SoM(X+aUr^OUu3k{8zUpe|d_Z%s;_wawqFeGwjTeA2%`<0Hwh iLIVH*0001h7ySdz`ZJWYlt>2v000017_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.23.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.26.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.26.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.28.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.29.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.29.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.30.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.31.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.31.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVj|4U*o^I;X$!z%@h)q?XJKFiuoV!eF!10g!3meESN{+BcPFei`)H$ zdT7js#vXn3?%mZ{OX(%(__#+(8=!avKa#ozkTa?ibF91^T?fQTI5}7z1AhPj0G;Ol zD?&-`C0RfW*Ce?uHsJZ(OYM(x>rOt=a|^MaJY|yCtmQc6u1wptyK3>|wegzA-OLiN zost~LT(&=(@74-$CQug*g(V}P{SL*Q6UvgeJ#qSMv|>J3(g6ABcK1S1d>!L$IOYbc z^GiRq@Oi-MZ2p#~1=GLup+QMF&r{ZZNnTjXgS!9oc~8gej9syAW+veQ$0z+8G(M92 iDl`B900000c+elwH8YfdU_#^o0000x8%nCnw8u0Dk}gpws+c zMJUO=BpZm~nk2Wy2E3npsr^uH-Nh$*ZzI-|r%dviwH&8Blxe$mS1n$=HeU0%o7v*E zQ<4Lj%l3Qo!&>3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO-LnuB|Bmr79CL%! z`Js0$d>*hmo4@60!SoM(X+aUr^OUu3k{8zUpe|d_Z%s;_wawqFeGwjTeA2%`<0Hwh iLIVH*0001h7ySdz`ZJWYlt>2v000017_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.38.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.38.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.41.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.41.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.43.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.43.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.44.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.45.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.45.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.46.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.46.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVj|4U*o^I;X$!z%@h)q?XJKFiuoV!eF!10g!3meESN{+BcPFei`)H$ zdT7js#vXn3?%mZ{OX(%(__#+(8=!avKa#ozkTa?ibF91^T?fQTI5}7z1AhPj0G;Ol zD?&-`C0RfW*Ce?uHsJZ(OYM(x>rOt=a|^MaJY|yCtmQc6u1wptyK3>|wegzA-OLiN zost~LT(&=(@74-$CQug*g(V}P{SL*Q6UvgeJ#qSMv|>J3(g6ABcK1S1d>!L$IOYbc z^GiRq@Oi-MZ2p#~1=GLup+QMF&r{ZZNnTjXgS!9oc~8gej9syAW+veQ$0z+8G(M92 iDl`B900000c+elwH8YfdU_#^o0000x8%nCnw8u0Dk}gpws+c zMJUO=BpZm~nk2Wy2E3npsr^uH-Nh$*ZzI-|r%dviwH&8Blxe$mS1n$=HeU0%o7v*E zQ<4Lj%l3Qo!&>3P1nQ!puw(?Z|3mTQg0kdePn^CQtymA1G(bMO-LnuB|Bmr79CL%! z`Js0$d>*hmo4@60!SoM(X+aUr^OUu3k{8zUpe|d_Z%s;_wawqFeGwjTeA2%`<0Hwh iLIVH*0001h7ySdz`ZJWYlt>2v000017_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.53.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.56.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.56.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.58.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.58.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.59.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.59.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.60.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png b/test-integration/snapshots/signTransactionNewfundsreq/nanox.61.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.04.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.06.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.06.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.09.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfYdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.101.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.101.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.102.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.102.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.103.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.103.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.104.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.104.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.107.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.107.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.112.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.112.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.114.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.114.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.115.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.115.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.117.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.117.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.118.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.118.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.119.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.119.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.12.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.121.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.121.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.122.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.122.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.125.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.125.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.13.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.130.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.130.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.132.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.132.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.133.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.133.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.135.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.135.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.136.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.136.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.137.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.137.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.138.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.138.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.139.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.139.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.14.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.141.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.141.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.144.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.144.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.149.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.149.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.150.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.150.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.151.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.151.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.152.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.152.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.154.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.154.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.155.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.155.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.156.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.156.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.157.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.157.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.158.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.158.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.159.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.159.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.160.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.160.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.161.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.161.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.164.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.164.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.169.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.169.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.171.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.171.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.172.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.172.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.174.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.174.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.175.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.175.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.176.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.176.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.177.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.177.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.178.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.178.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.179.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.179.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.182.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.182.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.185.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.185.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.19.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.190.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.190.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.192.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.192.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.193.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.193.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.195.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.195.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.196.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.196.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.197.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.197.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.198.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.198.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.199.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.199.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.20.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{DgdcQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.204.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.204.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.207.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.207.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.212.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.212.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.214.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.214.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.215.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.215.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.217.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.217.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.218.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.218.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.219.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.219.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.22.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.22.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.221.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.221.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.222.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.222.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.226.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.226.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.227.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.227.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.23.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.23.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.235.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.235.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.237.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.237.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.238.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.238.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.24.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.240.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.240.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.241.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.241.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.242.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.242.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.243.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.243.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.244.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.244.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.245.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.245.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.249.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.249.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.25.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.25.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.251.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.251.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.254.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.254.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.259.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.259.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.260.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.260.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.261.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.261.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.262.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.262.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.264.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.264.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.265.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.265.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.266.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.266.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.267.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.267.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.268.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.268.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.269.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.269.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.270.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.270.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f2c6765c64985f83c79d0b4c0caba5f557d442 GIT binary patch literal 398 zcmV;90df9`P)IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.273.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.273.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.274.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.274.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.275.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.275.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.276.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.276.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.279.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.279.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.280.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.280.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.284.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.284.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.286.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.286.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.287.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.287.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.289.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.289.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.29.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.291.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.291.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.292.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.292.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.293.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.293.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.294.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.294.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.298.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.298.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.299.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.299.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.30.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.301.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.301.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.302.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.302.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.305.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.305.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.31.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.31.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.310.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.310.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.312.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.312.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.313.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.313.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.315.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.315.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.316.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.316.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.317.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.317.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.318.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.318.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.319.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.319.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.32.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{DgdcQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.324.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.324.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.325.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.325.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.326.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.326.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.327.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.327.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%0000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.329.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.329.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.332.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.332.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.337.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.337.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.339.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.339.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.34.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.342.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.342.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.343.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.343.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.344.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.344.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.345.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.345.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.346.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.346.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.347.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.347.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.351.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.351.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.352.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.352.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.353.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.353.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.354.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.354.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.356.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.356.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.357.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.357.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.36.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.36.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.360.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.360.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.365.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.365.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.367.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.367.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.368.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.368.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.37.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.37.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.371.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.371.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.372.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.372.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.373.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.373.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.374.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.374.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.375.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.375.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.379.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.379.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.38.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.38.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.380.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.380.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.381.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.381.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.382.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.382.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.384.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.384.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.386.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.386.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.389.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.389.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.390.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.390.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.394.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.394.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.396.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.396.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.397.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.397.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.399.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.399.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.40.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.40.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000vb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.401.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.401.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.402.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.402.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.403.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.403.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.404.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.404.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.408.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.408.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.409.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.409.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.41.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.410.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.410.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.411.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.411.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.413.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.413.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~U|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.416.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.416.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.419.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.419.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdcw}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.424.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.424.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.426.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.426.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.427.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.427.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.429.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.429.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.43.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^vb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.431.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.431.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.432.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.432.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.433.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.433.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.434.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.434.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.438.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.438.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.439.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.439.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.44.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.44.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.440.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.440.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.441.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.441.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.443.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.443.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.447.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.447.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.45.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.455.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.455.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.457.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.457.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.458.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.458.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.46.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.46.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfYdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.461.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.461.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.462.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.462.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.463.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.463.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.464.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.464.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.465.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.465.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.469.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.469.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.47.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.47.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.471.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.471.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.472.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.472.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.474.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.474.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.478.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.478.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.479.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.479.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.482.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.482.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.487.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.487.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.489.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.489.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.49.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.49.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.490.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.490.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.492.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.492.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.493.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.493.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.494.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.494.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.495.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.495.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.496.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.496.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.497.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.497.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT50000?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.501.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.501.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.502.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.502.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.503.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.503.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.504.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.504.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.506.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.506.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.51.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.510.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.510.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!T|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.512.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.512.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.515.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.515.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.52.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.52.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.520.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.520.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.522.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.522.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.523.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.523.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.525.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.525.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.526.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.526.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.527.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.527.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.528.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.528.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.529.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.529.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.53.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.53.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.534.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.534.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.535.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.535.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.536.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.536.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.537.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.537.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.539.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.539.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vdL z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.540.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.540.png new file mode 100644 index 0000000000000000000000000000000000000000..f88daeea4071fc398530f860c9f55de3082f551e GIT binary patch literal 396 zcmV;70dxL|P)5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.543.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.543.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.545.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.545.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.546.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.546.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.549.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.549.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.550.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.550.png new file mode 100644 index 0000000000000000000000000000000000000000..525864b4c841ad2ac2bb4fd41fe4249a381c9af8 GIT binary patch literal 476 zcmV<20VDp2P);VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.554.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.554.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.556.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.556.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.557.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.557.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.559.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.559.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.56.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.56.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.561.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.561.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.562.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.562.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.563.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.563.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.564.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.564.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.568.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.568.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.569.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.569.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.57.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.57.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.571.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.571.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.573.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.573.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.577.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.577.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.579.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.579.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.58.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.58.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.580.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.580.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.581.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.581.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.584.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.584.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.589.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.589.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500006P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.591.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.591.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.592.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.592.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.594.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.594.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.595.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.595.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.596.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.596.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.597.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.597.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.598.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.598.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.599.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.599.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfIH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.603.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.603.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.604.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.604.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.605.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.605.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.606.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.606.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.608.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.608.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~U*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|mGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.612.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.612.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.614.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.614.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.615.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.615.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.617.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.617.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.62.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.62.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.625.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.625.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.627.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.627.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.628.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.628.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.63.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.63.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d91f35e38180fed864e282a2ecb196fd84305f GIT binary patch literal 510 zcmVOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.630.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.630.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.631.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.631.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.632.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.632.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.633.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.633.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.634.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.634.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.635.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.635.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.639.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.639.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.64.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.64.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500008VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.641.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.641.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.642.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.642.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.644.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.644.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.648.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.648.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.65.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.65.png new file mode 100644 index 0000000000000000000000000000000000000000..636049d8dc5581a5df052f5955b2417438ed9e95 GIT binary patch literal 374 zcmV-+0g3*JP)7bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.650.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.650.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.651.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.651.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.654.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.654.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.657.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.657.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.660.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.660.png new file mode 100644 index 0000000000000000000000000000000000000000..ada3168c73944065f395a93add9a391f4f56b259 GIT binary patch literal 390 zcmV;10eSw3P)00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.662.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.662.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.664.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.664.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.665.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.665.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.667.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.667.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.668.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.668.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.669.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.669.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.67.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.67.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM00001+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.671.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.671.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.672.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.672.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9690835a888f65d0db1e6a220eefa3e1c20bba GIT binary patch literal 376 zcmV-;0f+vHP)Q31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.676.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.676.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.677.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.677.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.678.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.678.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.679.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.679.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.680.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.680.png new file mode 100644 index 0000000000000000000000000000000000000000..748523e82eee4d16290527c5c71e7c3c2fdc1e9b GIT binary patch literal 393 zcmV;40e1e0P)3!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.681.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.681.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vd5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.685.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.685.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.687.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.687.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.688.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.688.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.690.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.690.png new file mode 100644 index 0000000000000000000000000000000000000000..995bb96e78661b4f258906b6b4f1606641299ac0 GIT binary patch literal 393 zcmV;40e1e0P)Q31IlDwDssDvzV5qW`4@A*nmN+O$3aGDYT000000Di@5^$naSBIP*e zyzox02$=vKdM#oa;w7L&Ux(Xl4B>C}4V+X3I$YeN5)nQB^go6W^$EZ---da_;h*9@ z0adIchW;boDk!lGbz+Z=7ytkOu)w5!!1Xn|h}^!|?^L#T+gMaJ%ZokSu5{iWJncQ_ zGNx((_TRMVmU2RM-098j8=I90NGcp=Sk3sFstHQ>&|b@xc?p<22FK@+HhIt7k!@ZA zCJ(^D%T>`IeBf>r^?krCo>*BOwfHxn$T_!jly218#_H>4Z>A`})c^nhoALXvh!a(W zAF6InaHW8{u)2AamyOt<{WeO$5|B0u{fFxWoEz_JtDE~6tO5<5;5H3gRYN^gH;-~X n1@)QXrn(6L000000KoPS?Y-SzS3B~Q00000NkvXXu0mjf0@bdo literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.691.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.691.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.692.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.692.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.695.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.695.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.70.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.70.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.700.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.700.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.702.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.702.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.703.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.703.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.705.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.705.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.706.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.706.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.707.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.707.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe8e489b070fd92815486ec265c6822ba35098b GIT binary patch literal 374 zcmV-+0g3*JP)Y4+kn6GD*Ee})h5d8$NP9H50kLjV8(0002Mzj%39;5;)+$1z67 znp`2-0D0(hip`+c04e%;xT}Q{-rf~BsR*=O+*O%be*bB|l%P5S;AX9xD|Y{&I|7PW zD~5idHwy|(LkBU(LJR-^0C3QI9dLc}Ze~x+`j?8$zn&s1xo zDeWznyd=G$IBuLxckAXJ)e*2ZEZT3_EUcEV^>MFcs>2BA+z0oBH4UJL9xx3K4bb@; z4t}dq-4B??5D(#8jPds#l^5oI3yY6e&(^r;;KKy~0ALydzlu1QKxJBan-d9C$L!`& z!!5*inkK2K+5lmem90ht9PRIp+0COg8es4sUO_e#TQ>8cGyPov00000006*Kz7#0a Usf#TtjsO4v07*qoM6N<$g6%Jyr~m)} literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.708.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.708.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb0568912cba535bb7e71276ad3ab6966b7924 GIT binary patch literal 381 zcmV-@0fPRCP)1+-000000Dw>N72SY&W>&6q z&Vem?Lb3yV=sm@5(CdH_eIM>-p@i?~2282~Ef;rHX6EOg{znO_PXNOFHOv)-my?|>rbe4nFyp?5E=e%`FDQ_ohf2LJ$og9-dAVlIpDDcQ{hCK9ND z+0FmjZX-76n5~m)2PFN_Uo<*kV!ZD^`N$Z|0*(K6D`Z21X-q+V_hb5FUeN#m00000 b0AA)7#u&Pp_+*A-00000NkvXXu0mjf>3^aq literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.709.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.709.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37d7b31004ee8578401dc86c701cb6fcad0e34 GIT binary patch literal 383 zcmV-_0f7FAP)Y4+kn6EXoL{ZW{&-t$x&rDTRy7&IjS000000Q`%`>JFS|X5~2N zys#%%NG8CC-cwA2UII$=eYm?PB|KMm;G`X8!pzeknoq4!|;>hPmSKPr7$N z6>G)NZ}etCiD_sM_gIJl0000BOj-wApR=3UFDCn2$J)yF-4+&A&GKRk-?FvY?c224 z#%s=Hx~g52@lK0BQ{GS=4_fOs9$}cTOh9rW=!Uf$->&KbOx`tAsgKS} zz~liKbG)}y_XBQY@pnLxb8eqe{-oEQtUlgt?NB#VZXf^v08w#&6>+YL@GsTP2~HGH zBUCq!in0*fX}r8r9OhyPNSaX|2%P}kzg_GXIsrG1dqFjHG2sO4nb>UA%^z*(0{{R3 d0000`@&=dJzd!78%i;h4002ovPDHLkV1lWkqs{;T literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.71.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.71.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVQ31IlDwCGL_!uYQIpIVzvP~;6t#rfBn79X00000007`AepV0QJTq&@ zwbq3rxk54lKJ=bq8uSv-qVK~!ZItj@J%E$CK+DBlm6`eb&;CmZs#gG(`E8mjPXD5N z1$41i4E;uL6;xP;CUK9A7ytkOut3m0;QE@~%>HAszYT1xY~O8T(bX(3_V8D>KF6^| z7B=2tXBu@+QTCs-_?GsD?s%uSY3JiKkDvG}6Hwe2o`!WA->L2f<$D;IH5FwI_>E0(|M zUIA6C6+^$!TLl@*&>)`iAO-*c08HTY9B_Wko^!rqvA>+yI25k0XrM;uZvI!42eD4a6|Gq2VhJ$KC?5!&fU9P3{|-;T&?Yj*NWIG*Tug(AimtT!e@`3Pkd(r(E+qf}00000JjHAD0Q!l@{5t16 za3p7hoB$nqE#fr9n}9j`I^5O95Zl&cTl-0iZqW(5mb`m9zgwC&R9C>-vS@!`v$5LV$mr#FElYcLE5LYr?GEC+ zVr<4~Hvz`$J<9eH^?AT;jQkPSa?Z;=N;hiD#^USM-uAfdF%$p*z!|^)is&n#KBc;8 zpre55p}KjLmm9I2+8G@&&4W!qIv(X>Q}V|31YEL%8&@}vay?Yp-NZe%)B&0#W0SYbqzo(68WkrToodW;>0002Mzj&?gKtJz&{Cph8 z!k&yUIRG;ClEq=LHvlpFGTqrm6W*&k&?!l@xx8EDy_f$#^{*yaodH;;bedZ{{hi$z zkmTB8>H~XML5|B%CHA-x0{{R3Hsyux2={g=hAl<5duyGM6f6fL+$F?ZURL_dIm}t| z2&Mj*MYhBZlFyZB+2Ey{=MZ-P8Bm%Q^$ji?v+b2^Uhey}Ni$&bBSS;y@1y~kTrBH5 zT(T<2zqsctTLTnImY+E%jfw$~i(dTMrIqm9nCza71^@s6Rg}IJ(f7tf*ekpJwCnm! zbQDmPR5x2$dNZ#6P@!Jke6n9dRNM*wt~Hg)v+pzyz@L;8^bWvy-j`H2Tj?EuaZ9S3 ptt>6VlG>{p000000000=eF2K7`i1gtvrGU0002ovPDHLkV1l+iuMz+N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.714.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.714.png new file mode 100644 index 0000000000000000000000000000000000000000..e71f287e592d1a2b12526fe27c9a99feab74d9af GIT binary patch literal 391 zcmV;20eJq2P)Q31IlDwDsh!lB%A_5s>r}uoNkxHozghx^W000000Km6+?XJK)5jn4O z&Kqm8B4h$|=(UJxh?jsf`a0arn<4z{uE3-s(Ba}9m5Au^r~fg8s67DNd}`(qn}3Si z1BzHj4E-VAEGRJzb>bNdF#rGnU<0Fd!1|nBME+y4e^l%&`LSz@V$X81gu5JNuGekF z+xYji;uNKS(xUI^23t4YW@*jBJ+$$i2}pnYetq4HZ&NWq=@RPS>N7rEvrB;SADbIY z2J?L*y95~bcMrqMh^XfQkFog~aLPH?W0bzB)i;Z;H%l84_w5P*0DxHhz7;XIG5IaK zn+7H}DLw3NUgc#WHmJW)irB`3B_Lgovh&5Q>jbRF&VG0ED%T0{*=Fy>Zs=yNdqCgF lF}?E#0000000000JHHAY!xJZnhGzf(002ovPDHLkV1lzMuM_|P literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.715.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.715.png new file mode 100644 index 0000000000000000000000000000000000000000..49253dd6ea2f05afd49f53350fec9bafd7c6d524 GIT binary patch literal 391 zcmV;20eJq2P)8VnIV|~8+uDI4SEUKqi@6AY?Sc3dH{o}K+DBlRVl@;KmC^yRIdOm^WQXAoc>Ao z3aDbO82XLgE-0}L4dNX)VgLXDzyeP90rPwIQpyvX{cT|HsBHICHOt8!?y~hcKeibk z=krs^d;?&CVmt@s$ZkCIro}Hsjk=El{?H#pIZ| zNBJed`FfAAyqux>Jm57J{|4-G&c`*%Hd@EV>f_DcE)7HF0s;U45Eb`d5n~0^Z>erN z7${OksBT^r000000000={s6vi#u2)MVh{iT002ovPDHLkV1hUGs*L~u literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.716.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.716.png new file mode 100644 index 0000000000000000000000000000000000000000..66badfdbc522723d7e5979ed5c4fde5c5b8038a2 GIT binary patch literal 383 zcmV-_0f7FAP)?Yj*NWIG*OiY7?O;l+0|DHCop=&{*E+qf}00000JjHAF3G@?@^>xm9 z;+Y%~G66dDTEsNOOTZd^9d5HRg!k+d=u`wcT->7)5qzYQVk48SzCVIFb#r?@kq zh;_u!FXF9&63b90?y(UA0000c7_<*KzGfGZD;E39iLE`~c5hMCED!c@mZi^HW$E<8 znLc9{ewQ14*z|Tgry)mNA9M^x!$;Qoq!A}jN z)JMl9VDNnJKHNoj`bPJr8m4FCWD d00000kG|Xc%Y7G6;y3^R002ovPDHLkV1n$>r+@$e literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.717.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.717.png new file mode 100644 index 0000000000000000000000000000000000000000..b19114b3f69c9778196c3f2efe4dfb0276c8284d GIT binary patch literal 388 zcmV-~0ek+5P)Y4+krlZF6dOY6YHd%h}ZkuZQTH3R?v00000{ENrv2J|zt{W``t zuq9VW1|aSFlwuh401C}xJM>rK@EZ3;CFjW?2k5_9u)eMyh1ONaaYTkcE^d(ULCA;aM zBY`?YcJr)R4q^wjk5`JrTr2=#xs&bG0l1z(_0MjeHFW^y?6P~24INB407o`9+i$?M i>kj|`0000006%YaAmbECC^U}%00003!UP)ai6FMXe1Y19&A6B~9@AR<@tEuxM(Q7hAZ?)@HYF zVYQ8)n9FoEyC~zG7Jp{{LUTN5t=o8pVZJf}#f6|7)^2>enhDCcaJ*J3aR~_CHJqM9 zf(xs02?!p5bC)}L!`(=AKj1MI{|D@9t;adapY)C=o1b@EJ45&F3IG5AEqULHn5!au zN_8{9L;*EJb@N?W7Gfuj7fOo5Tr2@aGs*+06L3pmAnoL{Nu7Y}gFU{w`7WxVi>1B; n#?EZhQ{4mr000000Pyk)Q;)}Q6T#LC00000NkvXXu0mjfJ9?($ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.719.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.719.png new file mode 100644 index 0000000000000000000000000000000000000000..aa96dd1f6c5e05fdf0c07d15c02f4fdbae51c483 GIT binary patch literal 392 zcmV;30eAk1P)%tKJCV$>sj6$;c<2F>%zPJ z?AeT|n}FjdE$y26hHiN%JrIhPAs$JQ-uIxT;j%MoKRzK)o7ytl(v&H>a#6lP0 zgSwj=+-aaXb~pbk%8l5huuaWn$qFC`MgJ1I0BiF-LWgHw=mIR{m@9obtQ(pxeF=U9 mjG1xM-2?yt00000VEY9#vdMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^5d9j7t<;LF&D+?RH z%eHh>b-@0UmU2!0Lbcp!ZSaZB`i>u&04ol-8P;Zeo2m;`*}`#KTUnQY#ZL{#FC+hP zcNw=X0gDfEaC5QIH{Is}w+N5Eh2I0Rl+y7URjw=@S5`l7w$`NkIt2g#fV6$zikPS( zd{K3Cfhz^n!0P5%yG+Ceot-!B-|@u~UmGTbKu(I|2-kmLE17#F(m*100000{ELV635*kwbvx&5 zcqV6rOn?r(7BLO+60k;Jhr78mgs1fh3@QR0F78o@h@OA;KZX$X3V@ldGLKmPDee_e z#5!W=7x7j>iDjr0_jnKk0000COnMGDzh)Pa%NP4~6FY8O`#{mNJUPPU>cOY=HePcM z(^Qn({+kxPM;Gi?@%9Yvfn@^H=e1vNH{;t>Oi+4+`dF^aOTgqB?4LvGyUQ=`H(TZ< zU~&O=9?mxUDen7#OPEJLnco9eIp=zg(mSfJ+!=MFl%K!;y&JNtV#kbsEMcRdB|Yfdbz iL;(N*00000w7mhY=Hpxzw?Yj*NWIH`n3x6;5lu_=eSU3Zex$UDbtwS=00000;4MDhCooP#*3UU- z$1}MiI2^2ww=>%DrGi}r80TPr5R1FZS}``~X*U7J zwcmL-vq0~O`aa+m?$J-aH(@R3yuC*0L2Wx&Y+l`4758cY000;B{wrdjf%>BErhzLB zRLAb-S+hKdb$VV#2b+L&KJ?3+J!Zn}h@uC3HtZan!PFHnkhU}Q*G_pj2@CCwYL>B-6002ovPDHLkV1k@KuC)LF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.723.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.723.png new file mode 100644 index 0000000000000000000000000000000000000000..7847f5e877da5a08533bd0a52eeda5327cfeadd5 GIT binary patch literal 410 zcmV;L0cHM)P)00000007_O$9n_jiO9CR zEQ{loT#+&Xb?9pu(~vI#TlDL2Hycy<_1=IH6td0$xH%f;8Haz# zI|Ed#GlqVZ?<}Zr8XClBT!;Yx000gwt^=;0u#3p;XZrmL_7iJ#qY9Q6d$`@cbIY>Q zpUrCa)BxMh8tlj1Ra7BE7Oy4@^bcDk;i_BE8%fxLm52!C2|7h>ICs4uEb5i zL>wbjH$TK+8Sbuk9c4NQ*E)X@2pekv00000005r;0nQ8zk*{BW$p8QV07*qoM6N<$ Eg43$5!TY4+lWNizaAeUN$JJzuqnw9Wv9sign_00000;9oqvZ{Ru+*^XK!ujsUp%)y*?@|B`nE zG_lSY`j338pu#dVh&4810001h1EYPw{WZIYOkeExMeJqw7ER6aW((78joX(rUdGqc znhv=CrbVC89k%bh!`8ySvGGhm`5ycI@i4wa%><=e=&!ZUI8}BDF#ci3Clj5#gZZAw zE&;}4|9F4*os_b^517I|`o;Yju&K57bCf=*^(ULJ4_h0`@~j2`09Z`ie??5GA}m|o zG;pVY>R8=8E6PUfp!GIN$r4b`hdy}DLMPx_?0l=6XN69{g+3dhzIMt|)zEa&FTqE^ mzG1kjZUO)R000007<&UA5 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.725.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.725.png new file mode 100644 index 0000000000000000000000000000000000000000..dc71c033666f8e424fa62761dc65beff09b04c7e GIT binary patch literal 391 zcmV;20eJq2P)*328bc`;xZ!KEEcJY_@=`S_%LF00000{>8)l2F??ac3f+9 zyptSqZK6uVTC*WM{e5;#Bg-*bUF&m-2cF0oI&~(u+!Dql& lH{4V=0RR910002=y#ZQD)#V06{ZIe^002ovPDHLkV1glswXy&J literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.726.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.726.png new file mode 100644 index 0000000000000000000000000000000000000000..e653ab1813781799dee1e119aa942a786a0da04d GIT binary patch literal 392 zcmV;30eAk1P)ViD`f#vf0w@|DKdgHcQz?rzrsd00000;4U8C2QW`WKCg4m zjz@At$N|uy*CGx>yaD(`Ux&Nd7{b&0045cI4j1>RL`0u|`fo#sIs@QlFU=#Se~LQ; zidaVs{U+XBP~tXp5!YCV0RR914vf|T$M4xidwt-8!wyP zG!+Thf6}5`bi&rj+w3jw6Pt51XTaXH=x^|~vDx0wXvfl?-3&0!!SNveRNXXi zq=4#J-Tc)m3$a1hTQ>z8fHW2Q6-o|!mL7n)d|x@-kqlOWzHYGW*?)7XYG}mV4?F;! me+ev}^#A|>000009J~SP+~zT~lN@&d0000*329h|8=I8k`}{((uN2szm=XX000000{>8)l0s4tZDd(IW zpX7>=4WL7>MQnz64N#)5!);cE@brFwPF0}8#XTw!(eI!3&k&-H0Jz!f<`KJpiaP?T zSVs)~N4!~3Vj4P$H5Ot3004l4LF<6)b9NEAeX`%kY_GPksB)GUuW-9^@onMPUSn=! zsybkMr$yJ41FCZ4YH@dL?qQCAy-|o?ln+oGbz~DZ3Jc#Cy`o$;5G_C;# zkNtzU8y4t2QTGFG;U4|u`w`Z1&f9mCuGF@b)#>KdOx0oKME8aP003Cqy#I>mNTB{v zc5{F$2~@}I=2^2W#12|7sTr&R(#g=Xvh62|t~_$$w#+N2M@P4vA-{IYQrXaO(NB|) mfHpJSWH$i-000000NCD7hWngVwQr690000Q31IlDwDssDvzV5qW`4@A*nmN+O$3aGDYT000000Di@5^$naSBIP*e zyzox02$=vKdM#oa;w7L&Ux(Xl4B>C}4V+X3I$YeN5)nQB^go6W^$EZ---da_;h*9@ z0adIchW;boDk!lGbz+Z=7ytkOu)w5!!1Xn|h}^!|?^L#T+gMaJ%ZokSu5{iWJncQ_ zGNx((_TRMVmU2RM-098j8=I90NGcp=Sk3sFstHQ>&|b@xc?p<22FK@+HhIt7k!@ZA zCJ(^D%T>`IeBf>r^?krCo>*BOwfHxn$T_!jly218#_H>4Z>A`})c^nhoALXvh!a(W zAF6InaHW8{u)2AamyOt<{WeO$5|B0u{fFxWoEz_JtDE~6tO5<5;5H3gRYN^gH;-~X n1@)QXrn(6L000000KoPS?Y-SzS3B~Q00000NkvXXu0mjf0@bdo literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.729.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.729.png new file mode 100644 index 0000000000000000000000000000000000000000..405f78a727ecb3c2acbc898c36f8f56220c24b4b GIT binary patch literal 387 zcmV-}0et?6P)Nkl=qY00000002J4m-hwi6Op!E zYjwPm6Dbp*L$75_L%syG=<9G#cc$>|eF2-gK&Oj)RwAP3pY_WWvW@__x$5Q_yMM_$ z0=igd4E>*ccR_{Q&>-%y5CZ@J02~;t1J3W+Mda-_`-{r<-4+&I&GN8?w`+}$8~^Rc z<}_1X2V6gC(R6q++8NK7WdH#H03;RnUlAJx)DNm| z8aOGSI#xGd6=fmzq_9QJZOIZ)9)&*LgcCXe8~xqAy7{Wm3CI$}6I4T;g&qNG<2*xk h6951J0002MrC;--$>sOB1$Y1e002ovPDHLkV1m74rfvWL literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.73.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.73.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.730.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.730.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.731.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.731.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.734.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.734.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.738.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.738.png new file mode 100644 index 0000000000000000000000000000000000000000..e685fb90ecf7ca3783d57d20b7e4d28dabb17e37 GIT binary patch literal 412 zcmV;N0b~A&P)?Yj*NWIG*%$f$!pqtRL|9euS8)-$LZYco(00000;9opuH{d!E(e0e` z#Fl&`WCCpHt%zxemjI2v4R`Zk2+!FKxTpwpxVT3pBKG-nyc;|0BtpDVkMMPJ^^_v+M z%vaPs;Gp`Z+x-Xq@K_DiJ9@jjXE*0wP9H(b$6Yy1K=TQ{BzFn0BWf~ZtbH79C+Hwt zoNUhl004kb<9-!EO=dDbH5pfnyUDd6`DpH@s;1UclB+K)zCsUnwqX&cN|p5q2OB+C z^&cD@`k|$W3v~jmF5EY4G!r>&lp2}#VpQ+s!?T z)C;m6=_YF~{pXc&`$ROuLV@rnx(8Uw*QaJT|H*dR%AgzREu(ivD1ZOdONJszF7cO{ z515rW7q;YOxRp46UnnirpO;|()wOHk?+d(BCzkzQJEd=-fU~&>$X^X5_byr9-g11| Qrfndur>mdKI;Vst0MKlTga7~l literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.74.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.74.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.741.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.741.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.744.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.744.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.79.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.79.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.81.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.81.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.82.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.82.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.84.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.84.png new file mode 100644 index 0000000000000000000000000000000000000000..52256207f5bcbacd47c9796ddb3066b7cb06a1e3 GIT binary patch literal 378 zcmV-=0fqjFP)YdET}LIO=67;F#rGnAi&+%0p}<0W_HD_U$>zBnWlJoatr?@u#)i`wPUa8 zedAj$zGeGBvpm>Zww|6M0mX%*8`f@oyP5&YZ(+Z$X2rp~*9l0#&0qD+;botvdjurl z<}Q|GsCh;8e!w!a{03}lt@|;`H+uWVX7%pY20KlDx&QzGEJNU_h`9o4wwjNyi2|z7 zb6V*x#NM<_2Ukr%ISRc>hBOi|5zVOT=BG3gkh~Y4K{XUd4(p&R{apY6000000KirL Y09-b?J>2Y@hX4Qo07*qoM6N<$f+aYl&Hw-a literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.85.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.85.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcc0969f6e857d65b375850324bd90a68d09245 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-zba4!+nDh2lAYZeBfNS8b z67@Iro|~uFnHaKYx^Cp*fB$pSkySGpxt*PXntvb`{<*%Pf9TohL8*#<|$IXbG^Fu-^bp(KDwF_XxZEY`<48rXyu38m07U7!KzYL$!CW^_LeiByi6Gv zDt?K3I@j4mXoFAv^eYjpR#k^oR7=$l?D5rp<%gsrQjZcy>s6;g9JQX{an^L HB{Ts5*4~zv literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.86.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.86.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.87.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.87.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.90.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.90.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iOtemlc*V znAUcuSOZX~ZauZRx0!=q8zOE&!Mp5QfmVRrpw-@OucXZ!aNCgr4L~9Hca@m`sFZFE zA9I@o008ijJi)m3-u#lMeBX_ux(zJ>pEf8|zdbCTPX0S5#J4+XRy6E4kIt|tQBy`9n^GNyaL9TzQbT- zx2nD3<16jcFT#(-7PJ@x0000000000003a3U%)e$1E37KH2?qr07*qoM6N<$f^u`| AHUIzs literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.95.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.95.png new file mode 100644 index 0000000000000000000000000000000000000000..c382d99aed5bb2f15cc780be5bca5e21cfa006e3 GIT binary patch literal 360 zcmV-u0hj)XP)(|B z6+^$#+XW@Ip_5qSAO-*c00bC)4miJgH?x22`nQ3tf1ap{mnVDpm95W^dd6e?SMF7h zQ~Hlwd`r2Ydfn-*+4=etzi6(2SIeS*!P~}WduN(oWd#g=d^mZbG#~+k*ZbtR7uDwh z%b4Ov*vmQZ?@_+d+c#DpZ}tWN0Dy1;|B5(PK)p(JbAST{)WGWIx28LYeW-uD5}Np` z2}n{=?$AiU!sP^w1gsbLf@)~66%rt^+W`Oo000005bOyl9<;bbxmNT500007bH{|q1A^JIxtI}D1W4FLcE00000Z}IUyfb-03UXC$3 z9?2Dw9gv1TrPvL69WX~f4R^6o!q@u%PRar;7k5==mY#p=A0?=c0JvF8bH(%zx+5Tq zwPNTedb6OwG_(_A+=u}H000hJ-v?ZuyqnqWvwq!b_F-A^^5Pb5*S@6jYrMarECK6} zT+)_#g>1R9wHGCOQE>#U4U75;n~lZxdXB$h1T@aU{V{#w>axk90~-Ixox5|1e$ag$ za4)auhfXfSsTkw(9F;bvmW|ohi(4yt`^6am0H7^_w<1myP?=NS=}G~${};BpyAj)I zm>gH_fS@1xiAD#U%Xh~L&ro(&fsU@wi7~68Lb*Re2UPwppfU~s00000002Dh55tJh U)&I6%`v3p{07*qoM6N<$g6lh>A^-pY literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.97.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.97.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8e7bd43e2d0cdba7f20c122e3ba5ff2e8ff703 GIT binary patch literal 375 zcmV--0f_#IP)7bHKNyA&?|HJsT06raq9FhP00000;4MDhCvcyct=ln1 z$1`amnSeC(DaADCC18zy8t!7Fgs=Ar+>`}cF7B$#EFFL9A0?<(0Nm_#bH(l-bSof> zwPNTOdb6OwG;|Pi+=u}H000hp-v_i$-p%asS-ExJcun=4Rxkb0d?DPW|~Vh00000004l;`~mg9 V!Hg5EzKs9?002ovPDHLkV1oPmpWXlf literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanosp.98.png b/test-integration/snapshots/signTransactionOtherEosio/nanosp.98.png new file mode 100644 index 0000000000000000000000000000000000000000..78d8a6ef2f7ca325c115d80048975dcfdd512657 GIT binary patch literal 380 zcmV-?0fYXDP)Y42I!pyb1R|Qt#pq64DG919k0(@AFF+8B04Hbd&-B00000fPe9b9>8^GwtSwZ zDR3m8kW7FNy{DK4y#y@L_u<}bl<Ic&%>4gP`>O=iD*$2krn%zuFS=Ji z6>G)N&-Cts3b&z2+~YwE0002EJ994g@ZBK|?tkqy_wU^S~ zZ}Bagxor2=*teNG(XARHg2}>#rN8Y(^-Z)b$BY0i?EkJ!~g&Q00000 aQg{PgK;iqS`{dsM0000L z_&w7PitR>eqb=PGk$~jFQ4MP~zEwpBf>0VZ5_X+_C=v>7H z>1vj!t_R%4DEEL#&UxNP`JLW;XK{G7v_?6DHx~c^fZGswD`Lk~<%4E7JJ>OSD)gS# za09WGZZmXJO+fk=dX)@mBw%Ya17|n4(n!GIwfG2TLxX9wfVTNEy~+&$00000002Ng YU$q^v<#-Dsk^lez07*qoM6N<$f^%=47XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.01.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.01.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.08.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.08.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.09.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.09.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.10.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.103.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.106.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.106.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.107.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.107.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.108.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.108.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.109.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.109.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVi$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.124.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.124.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.125.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.125.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.126.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.126.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.127.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.127.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.143.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.143.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.144.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.144.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.145.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.145.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.146.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.146.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.163.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.163.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.164.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.164.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.165.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.165.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.166.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.166.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.181.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.181.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.184.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.184.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.185.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.185.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.186.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.186.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.187.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.187.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.20.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.20.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.203.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.203.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.206.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.206.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.207.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.207.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.208.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.208.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.209.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.209.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.22.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.22.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.229.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.229.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.230.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.230.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.231.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.231.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.232.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.232.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.253.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.253.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.254.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.254.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.255.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.255.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.256.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.256.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.278.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.278.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.279.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.279.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.28.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.28.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%00008}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.281.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.281.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.301.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.304.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.304.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.305.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.305.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.306.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.306.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.307.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.307.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.32.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.32.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.328.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.328.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.33.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.33.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.331.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.331.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.332.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.332.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.333.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.333.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.334.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.334.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVi$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.359.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.359.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.360.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.360.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.361.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.361.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.362.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.362.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.388.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.388.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.389.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.389.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.390.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.390.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.391.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.391.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.418.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.418.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.419.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.419.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.42.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.42.png index f9daa857a29cd5cbac1d90a6571900c4d7f78ecd..432c69139767a145b78cb7a60532b5fea05b0452 100644 GIT binary patch delta 356 zcmV-q0h|7r1DOMmEq`rtgdhxnVcO|Uxc`xIm;SKBPy%iYxEl9;ez~q;f&u(W2><{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.420.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.420.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.421.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.421.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.446.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.446.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.449.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.449.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.45.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.45.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.450.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.450.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.451.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.451.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.452.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.452.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.47.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.47.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.481.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.481.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.482.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.482.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.483.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.483.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.484.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.484.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.514.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.514.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.515.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.515.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.516.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.516.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.517.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.517.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.548.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.548.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.549.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.549.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.55.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.55.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%00008}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.551.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.551.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.58.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.58.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.580.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.583.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.583.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.584.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.584.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.585.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.585.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.586.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.586.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.60.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.60.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.61.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.61.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.619.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.619.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.620.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.620.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.621.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.621.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.622.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.622.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.656.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.656.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.657.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.657.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.658.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.658.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.659.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.659.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.694.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.694.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.695.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.695.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.696.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.696.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.697.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.697.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.73.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.73.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.730.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.733.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.733.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.734.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.734.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.735.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.735.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.736.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.736.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.740.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.740.png index c1dd7f062713241ced4aa93d07412ddd29031c7f..c90cc3d91b4e3bd966aaa6547135ceb9b0228654 100644 GIT binary patch delta 935 zcmV;Y16cgF2fYW7B!7fSL_t(|ob8%hlH4E+MM-LQ;{7j)z2u{7T(q7SA#8VA=PO}A z2mu1FyS1VyilQirqPUztD~)^a&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.743.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.743.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.744.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.744.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.745.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.745.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.746.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.746.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.76.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.76.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.89.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.89.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.90.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.90.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.91.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.91.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherEosio/nanox.92.png b/test-integration/snapshots/signTransactionOtherEosio/nanox.92.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iAcjEq+#9sR0sRv`oAOwx|-Y3nNb_fGwFo}C+!O)v<_v_NralBc7D?&Jq!d_N=N)a!NAdyGh ze4~AB1eaG7$F;PLVRI2iWz z(MYSxcnS_?T)DEluqJ#-VRtUVXSe+tq+H2~@z(~%i^qE(qUXYg)DWr?d8FjDbN_j`}{+oB*3PTrR;j_Bit|O@5 zjPFo5Is=Sy)Go`YpLP*GE3cNSBfpozcj5AC()fVTNa!W#4MhBbMsSXm=|(XC00000 i0000000000!TAMO;pcw$>T0q80000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.05.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.08.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.08.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iFmVh>;!A7^8^flkoA) z3|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.14.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVFLOwd(L@nUN+(~O+_ppmM7iho5uKe zJa_u;!m?kN3f;FZqeHb#y5+KD-ClpoZhMeB$bu|vw|5kFt948CCibJjbOf}W{X|Oa zs?%+bB+KsaJO!O-6t#A_R^n^Fwnu#*@GCjLpIiAL(-AOwlQq*;4~nvWR^{EAk645O z006GU;j4&p&nI_RN-k)#l~QN&Gu|8IR=3S$Z+@!0uTJ+|E@{!HJPGR@`@VH9s61_M zP777`rfrob0ylH6N6b9Mj=Ztbs{J;-JCjVNpk1b*i)KS-dSz9oyFSmHD1Bc86!6g17;GCqcuR%Up>wr2LJ#70002MJ-q>cYG}cQfkmPK0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.18.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=icl%Yb%;L1Uy@2wmnh$4YtK0Xcr00000IF2Kwlu~-SOAtO* zJ0Pj!c%G+iW*F?k*J=kwQ73pwgUClQu3L)P5h-(@s~z}-h;sQ@;#y z4j%LUCb1Hb5n-Jw?yYg~y&+-=3LY|F0ijaPZD;v+=} zmC=}_wPk)*wKMgj7d`#1{Z?qG!ZE}1r%+eGy@#m*dtEN=2er9zH|)mV_y*G}Kuz_m zVA-1{gX3&m#2cm)&?_>+tS7~k?rPu$qq%#~Yi^2hqB5!mMwl+UKgy-&d82+!njJP_ z^{TJ8DfKLK!v46GwRu&SV0{o8{2`<8x_Iu1vCZznEB`{c`+)z3|COYAaNY&3aR2~T z;&=kFC5<3(3R+CW7qe7)l4RY|S{ma7IqF1AfEq#d%B6jO%eb5oX5L=kBw_;8>FgD< zIHAu(Oh6Bp$s45d6xf6pv(pL~nftcT9ZR+Z000000000000000004j|`34CriWvJz R3@`uy002ovPDHLkV1i4I?kxZS literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.23.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.23.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.24.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.26.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.26.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.28.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.28.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i%Q2B47ZyDH58R7tmm zkJ%;x004ZX7m{&m!#8k;cVf%fc1FH2c)IG$`h_$6HT7JBM#{mHjTn`_zTU{yRD^te zZRb>XmbG88bD1}#F!!=}?Qc~kRduYJ`@8X$+Dlk=3so}G(?VO#zQkes&XU949{w$R zpKT+PasI2?86Ialt1jZt24_RtmB*;F7d2-z*A2QfEg7d))%QD`CFMbV_b?B>13WRc zpH$Zm4%?ya=BVXH$a$e|eR*0J@W^vvp6$kU;m!lTO~fO~={U>*fH?;4J?vyg5bS~` zTV@yJOtq$?`5x_EDdGThBiKD`Y5#xAIF?b>M)&%phy&1_&Z9yWC-g|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.34.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.36.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.36.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.38.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.38.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.42.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a6d236c7887f07040af2627671d0995ff1c331 GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|?+Wba4!+nDh2l;G{zeJPnB@ z-_-X0pSYu&|BR6Y6EBC^tN*s4QWIFcX6{e~YGU9}JR*_YvwO8g;qG0`L6&{T3%?w; zVx0fz{VTqRmE1P|%`^ICVx~RW@F4TqyYTV{of1#~820B+J9RocPj%%>=at*8@Z5RZw8iQR?kqTZFE@V)U)hegQ)GM{g5JGfWbjW|HH$mG z*azt1A70B+<`_CI3yUcg5IKH!%8iwi?SH<@{HnV5RPTG+_gy`wZm}(2-QhFQuwobU z>^)Pu1Wq13r=+WVdFw2rVEcE=mic|YYtF9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_zja)4 zT3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt)15Li!1c%TEgG-PL#oHh22)nG8PLQ3 z*ye^)>2T+jWVj7X`^<7YtVNwd*z zQw@#eH;hb!o&ACcLc4<2D@iyArPuuc07V+r(0fe`e;!**+QJOgO|Fai>nP!~n9+My z$t9x;PQoc?qIy7Bct~98D@vah$ETt5wZnnJXIL!!Cbm#XqgrN-c39L(D+{M84v|-{ zMCvJ_k}g<+>eumnb!m|xs#fhKM?ad$t620amp#?r_9d;7ip+qvf!UM1YTNJWM)v_d zGODQX`HX=kmGm6(q|;N>(4XTR?eH8=0RR910001n@dXq>+af1lu}A;_002ovPDHLk FV1mad=&=9* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.45.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.45.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.47.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.47.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.51.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..754a872e9ba1132b8742ca9d0876133a0474759e GIT binary patch literal 449 zcmV;y0Y3hTP)19-!*{*!YqrPQ5p z|IQ2>W{ds~m{i~DvHqkV9;=~sL?5GjcQ~KrbP9TW-YcgaFr2|3$z2D?6*Y-9R!&F9 z1$7Z_E|%8-006+Jw?7qee`%%J3Y-;xG$A$5xYq;Q@UVM-X{B#vSm)7%yN{dDh~j70nq#-Bi>1m07`Z2h6`B zq5NB0i)mkt;X~7xr33o=E~)ckOP`a%&hUj_WPd+kNwHq81kI}OCDts$$};5gYGpqN r`hPndD7Hu(K12Zk000000MPmeN()1S>Z`1-00000NkvXXu0mjf&yU3i literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.52.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.52.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_zMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.55.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.55.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.59.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.59.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf8cb522349ed92abfc2c731ea76302c13c617d GIT binary patch literal 598 zcmV-c0;&CpP)Q;x2vQFGCZE5fN71?@19O10>=SLm-3@LI@#*gb-qkF~+NJ0pV+P z10-cXZrf&8Gb-GLpVbZUQk~#=7{qww%4JEe7LZ2ndvyc;A$mEV=Kjs3^72^RmC8$l zX$&rFdnZ@}kPzK^D7fp&;O_>+5Cq<3V*&DjGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvXLH8)c~Ar1({#-!`Ju_ zRQh#r_a=^0>wt49aAMrs80i7}jaS_TJoFM4{?xj$>T`X2koQ_d5kd$dgpf-ZyC~!m za~S@v1n>0O$+<1{u_^$R8v|NZ)u+ZKVNE|e!01ueVvCWU1H(?WLZ2o&&2JW`CLYcE z+?|-<0Y|fV0PNgmUDGoLljY2lz^S3tjPvs9U3%8ZN)Ir!(x9Bcud24Tw?wij;LjS1 zx%J+9H*g{7ZD9SR_llJ`A%u{Dbfg{;@?pU$sI}BFgwoxFPFq{mGR8}#(8N(ewC@(< z6h{gTP#xc~qF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.60.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.60.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z}8ba4!+nDh2#AYZcr&#}U7 zZ`AJm_t<+{&c~xUqSrgj?$7^uGM^lxR!y4<(gieOc}1%J13TmF>szlKnfk}ch|%uL zyddc?d>i;wyw=zw5mN8p9@BgA`#@IEY&igO^ z=F+NZ^GoV=;{h4C**>a+U)p7M;?>0+sWqF#3xY4O&5o45_;<0|eX-qQ2j8We=UOb> zZMs}k>j3||)eqyfqx$ae|Gl@S#Bfc+%(dTy)@}7VvNy1nWh%Gy9rfnv20%moW)xc) zOI*p~P%GLyyH{Ajahb5)DX#!+@#Rm2-nE$jd-8L|UEaK qHCdOqB)aZzalBZd0}3@DSWv?_b>q2WtK$2SAg-sYpUXO@geCy>?2!2Y literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.62.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.62.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.64.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.64.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iQ;x2vQFGCZE5fN71?@19O10>=SLm-3@LI@#*gb-qkF~+NJ0pV+P z10-cXZrf&8Gb-GLpVbZUQk~#=7{qww%4JEe7LZ2ndvyc;A$mEV=Kjs3^72^RmC8$l zX$&rFdnZ@}kPzK^D7fp&;O_>+5Cq<3V*&DjGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvXLH8)c~Ar1({#-!`Ju_ zRQh#r_a=^0>wt49aAMrs80i7}jaS_TJoFM4{?xj$>T`X2koQ_d5kd$dgpf-ZyC~!m za~S@v1n>0O$+<1{u_^$R8v|NZ)u+ZKVNE|e!01ueVvCWU1H(?WLZ2o&&2JW`CLYcE z+?|-<0Y|fV0PNgmUDGoLljY2lz^S3tjPvs9U3%8ZN)Ir!(x9Bcud24Tw?wij;LjS1 zx%J+9H*g{7ZD9SR_llJ`A%u{Dbfg{;@?pU$sI}BFgwoxFPFq{mGR8}#(8N(ewC@(< z6h{gTP#xc~qF literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.69.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.69.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z*b3`S9A)SY<$OJXncfMi+Zw@EtqqxU>i4NWU#Fo|hO0RR91006+Z_!-@S>uRn3 z-pmH}(Bn71l0_{Fk91HarzhC z4CrF582U!YlPSuM9qwiB>;=91#U#>Y zz~y;*7};#0Z_*9Go%NwxY99RM&q+4`C;2L$Gpy&S4#29d>w%fEGYS9z00000e7iq- W^WT9(_)Y`>0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.73.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.73.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=ix2ba4!+nDh2#;HE73$om8Fvv@^-T?I9X}acX(Y| z$Pcml-Ruvp?mh6@XvNnRQ&TTN+arw$^Lsn+R>l@G(~OS^cUdw-2AU zQDbCa__O47%ABfmvwtL*e^_#Z&uyPZ3}5NpolCB+?0cENJXuz1CY!&|Bc1D8E+%L> z?c2JI^GTl9&fKKs2KIAyzEKN!y*^iMYxT8bFa4$CzpvH`vGnlg&o%umF#T_}*B|C@ zGDq_&(wvOW?VtEo(5lV88?ihP*uXSU^TmD}9Sk;UiI=6vaUzDB>+N^gTe~DWM4f#5%Ro literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.78.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.78.png new file mode 100644 index 0000000000000000000000000000000000000000..dcac12e76e032daeb70b1268069cb764cc07bcc4 GIT binary patch literal 419 zcmV;U0bKrxP)F9F(UX_US^UwHe303a^q&XYr6^H*; z_YN?9U9szT^`3$@9zz##k3wb%_z3`Lz(ZsPkNiMwRs3Pl)%n2gnaZ_(wZkr86B`0nEX000000001hxA3*wfqtBG z{`x%6jh>8Pasa~6hgcj2djsI3ABH0o9ty!YMRM5r%>uasKhBE;J87 zsRQBsiX`Ifb!t^LEY0HdCQ4yWXikv)vejycOM63uBRVLheJWY79(XaH?P$+4tTr!*@ogRg>a+U%bvSAC-@8h!hY60LL(RXM7ydKgNi*Z$Q z#Jshw6$)s`k`>T5FwaC*WXF5DVGAmeioH#_icmNxYWgv-q=3Fh7#Zv-YUs!D9$oM~ iJp}*&00000n8q*m#Ul$Gmfy+%0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.82.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.82.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i;FA7 zzUJQ~0001(|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.88.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.88.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.91.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanosp.91.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVP5WT#8-1>K8Z7+|-S!;Xga25w;0=(8wsqNp&6hK{-lyna~rJ!oyDOBh%T5k6Aia&7*D}L zj4Ly{3#-GI6n5t#e0G1^uhHH%>)WyUm^Q})14+O%6>dM^Z7=`;05Ac2Z5N!&;-m=c zT(+q9(SnkuZq_VCiz;^7A8P^FLTpRGM_IJx9`An~8&MY3#@b7wwd)$^Iz}=>7Im8e zgQ&fxZVZh0oJyZ~HL3-9DUl*{u{ope)m$0gk-UHNt~2A6eM%88j3ALm+bZ3LHB z6vwr+jbU>UM&rkWk-xUg{gz<+awEdJ8JYp=;7=+EwY1SH&{-U6farorGto$^%6JM6 zW?Z?lyRasFNnv*`!e@WC{Tk!#u)ZCekIUw`FpvaXro!z9ybT5b001UnKidW8GMyA* zoy#8TeY~Kgxtp~}(W082_Q#q4+lXxue6&Sd?(zQDu@PrcZLEDsw02$NTt_7{Y*Duv zFo@b~>c+rG&Z+d7SEF8#mlG+Zi_IBzujWd5NAmugcijp@7hzlBv%1@^BdFhu?@%~8 z1B`OiF3YH&b`d@+ua>GKzn8*y;qq$I_<+zz=q2b4MErq9aE_JfMlk>Y0000000000 d0002N`2|&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.07.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.07.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.08.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.08.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.09.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.09.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.10.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.10.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.17.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.17.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.18.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.18.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.19.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.19.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.20.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.20.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.25.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.25.png index ff979c46f802ff00b4f16ff30d15641343dd0c88..11cbf1591dc0cff7709ec07291bb9e3eac813445 100644 GIT binary patch delta 491 zcmVI4gMbo9e3HLt|cd13B2r&oafGh8<(rE_U z1TddE4gdfE000000C)?3s|^^(dw)GU=N4Kb!Q=php%1Y*4E6@#ihdaG>`N1TRvR!# z6limCw~F^ZTz~3+n!xG|fMt|EbBmwTPKJF(aw^cRkV3d3o3=_eD(oRt?*^G%-!xPa$dHW zG2N*$144fy-?H(lJd}FuY_Me2m;n<0=QcN;PKSk8lIb?^*k```0CWaaxQjaHqA_@E zTYmIDAoMf!d4DaZJ@x-;7(9Olq@D~L9X2)4NPWYoG$`yBR8ZO#tX@gNi!gfK4*<|) zPz^oT#PsK}&7>{OP{ZW9nZM2wKARbRWR+ery5J;Sawe+>q=l!%rN5%~X>ooU`n+~H zQTR-YrQgIBDrr{B?9mRJT4`tDQpG9q>QP8NHB{0COJq?0I$p1?EfQqas=egsOEb9@ z3%PPBseZRFZIx7I28<2Np43%axu+Z52S{X8x$xO6I4gMbo9e3HLt|cd13B2r&mR;NrbiI?Z64 z0OnKI1poj5000000H^S`+JJVfwa>FLW}ziLs2l({^e!5QLEiv8(RafgeW`-aY6BYa z0rehq6=ja)4T3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt z)15Li!1c%TEgG-PL#oHh22)nG8PLQ3*ye^)>2T+jWVj7X`^)lII8`Rgd*vzXC)R>>u!3r@l*XQFyQSa?WW>MKg07RRTd^R>f) z!e>}4{3feUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.28.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.28.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.29.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.29.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.30.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.30.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.35.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.35.png index ff979c46f802ff00b4f16ff30d15641343dd0c88..11cbf1591dc0cff7709ec07291bb9e3eac813445 100644 GIT binary patch delta 491 zcmVI4gMbo9e3HLt|cd13B2r&oafGh8<(rE_U z1TddE4gdfE000000C)?3s|^^(dw)GU=N4Kb!Q=php%1Y*4E6@#ihdaG>`N1TRvR!# z6limCw~F^ZTz~3+n!xG|fMt|EbBmwTPKJF(aw^cRkV3d3o3=_eD(oRt?*^G%-!xPa$dHW zG2N*$144fy-?H(lJd}FuY_Me2m;n<0=QcN;PKSk8lIb?^*k```0CWaaxQjaHqA_@E zTYmIDAoMf!d4DaZJ@x-;7(9Olq@D~L9X2)4NPWYoG$`yBR8ZO#tX@gNi!gfK4*<|) zPz^oT#PsK}&7>{OP{ZW9nZM2wKARbRWR+ery5J;Sawe+>q=l!%rN5%~X>ooU`n+~H zQTR-YrQgIBDrr{B?9mRJT4`tDQpG9q>QP8NHB{0COJq?0I$p1?EfQqas=egsOEb9@ z3%PPBseZRFZIx7I28<2Np43%axu+Z52S{X8x$xO6I4gMbo9e3HLt|cd13B2r&mR;NrbiI?Z64 z0OnKI1poj5000000H^S`+JJVfwa>FLW}ziLs2l({^e!5QLEiv8(RafgeW`-aY6BYa z0rehq6=ja)4T3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt z)15Li!1c%TEgG-PL#oHh22)nG8PLQ3*ye^)>2T+jWVj7X`^)lII8`Rgd*vzXC)R>>u!3r@l*XQFyQSa?WW>MKg07RRTd^R>f) z!e>}4{3feUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.38.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.38.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.39.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.39.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.40.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.40.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVI4gMbo9e3HLt|cd13B2r&oafGh8<(rE_U z1TddE4gdfE000000C)?3s|^^(dw)GU=N4Kb!Q=php%1Y*4E6@#ihdaG>`N1TRvR!# z6limCw~F^ZTz~3+n!xG|fMt|EbBmwTPKJF(aw^cRkV3d3o3=_eD(oRt?*^G%-!xPa$dHW zG2N*$144fy-?H(lJd}FuY_Me2m;n<0=QcN;PKSk8lIb?^*k```0CWaaxQjaHqA_@E zTYmIDAoMf!d4DaZJ@x-;7(9Olq@D~L9X2)4NPWYoG$`yBR8ZO#tX@gNi!gfK4*<|) zPz^oT#PsK}&7>{OP{ZW9nZM2wKARbRWR+ery5J;Sawe+>q=l!%rN5%~X>ooU`n+~H zQTR-YrQgIBDrr{B?9mRJT4`tDQpG9q>QP8NHB{0COJq?0I$p1?EfQqas=egsOEb9@ z3%PPBseZRFZIx7I28<2Np43%axu+Z52S{X8x$xO6I4gMbo9e3HLt|cd13B2r&mR;NrbiI?Z64 z0OnKI1poj5000000H^S`+JJVfwa>FLW}ziLs2l({^e!5QLEiv8(RafgeW`-aY6BYa z0rehq6=ja)4T3NEPiZt`Ipj4RdXY1hAa$iQvyzMR{=S7Pt z)15Li!1c%TEgG-PL#oHh22)nG8PLQ3*ye^)>2T+jWVj7X`^)lII8`Rgd*vzXC)R>>u!3r@l*XQFyQSa?WW>MKg07RRTd^R>f) z!e>}4{3feUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.47.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.47.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.48.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.48.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.49.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.49.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.55.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.55.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.56.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.56.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.57.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.57.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVAy%1la_TB!3`DL_t(|ob8)Yl7t`(MA@yqiT6Jeci9hSDK>!^5uw$7UmB5O zfMlSFArL|cA%qY@LI^R&7~|Eifbg}t0g|#Gw{5eF83pdb&*}zvsZQ`b3}QTT;nI?e z1*DPtUfqCyh+fXOxqmasUS5m0lD(`jjlpGY?*wZA5~5oV1%G#482rBhF$95k*;s%) zpbXF=cKa*Qg#p7(3D5u}%J?pf@eg6C*6^5R5+Q^TLdYW-EXMVTEn+E|L>n#av})ch za0W~PqmE|>YiMd!i$_{$DM+{Aaw($piF7@4i&T|G^HZ&lYB4-}fKw-5iQbp$i9FK- zgcRyDdRjiv$$v(AKve^9wiRT4%@1GWLs040!QGoUPOSsZrND`CZ)2nf=zqNGDd3@n zo$#m7@Rh31^_@Z9YY{~VA%qY@E@AAVkW0*A_`4Fk(`P5=w$#U}08kzbXjN6;8jnKz zn4u+<~NH|6OZP7?oLebfPbS|JOFlXvo7fwgUNE{N#NAb zYQ}l_^e#Q?WTgkRv{GSd*;~HSI^Gh=rhp%7Eaui{>)pVGptphbk=`p-;)D=F2GWsw zM97B)tDx3W#}G<)6FO~eRm&JJl|mCo1<}4&j9VNjG(c^{bZ&27CB`ivKwrwAcYG0Q z`~vDifH^#16!y6o8f!ejnMHcC+E#^cmqL-}<9r?%g6;(efDl3mS;Q}HXZx;G8OBNg O0000b^-1l9zQB!3-AL_t(|ob8)Ya)uxbglVTY@%~5RE`8uHLlcM*5mw#rNf9Fh zB;pc7AcPP?2qA=o5Mqom#;b1u;cImRBxOHt+h$iYD%^#i)eZ1co#1&G#CYV&Wl63U zkVfu%bp!q(dO4rw{>`NF@>txJ%1eW33@&SXCs+fJ5Z!txxPR-);O_>+5Cq<3V*&Dj zGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvVV~tP}KmOZ3UTM^TXHp5LEhgaQ7yTQ|o|pDR5%k+ZgEq`i)oJ1w8Z; z7XH+_vFdYudyw~9L=i#=A%u`i7`rIs5_1^-t_1J&*~z&r^|2}dlp6zDRn@1)C1FiJ zI>6{r*J6v2o&&>9wL+gJI?ZnurzRfF``n$F-~mUocz*!w+-6t8-GokCTh%hgOQq1nQ9-ot7UL903Jp*nVmi0C&xmmf2+*JM=N(^!8oz+L z5Fig2g*Lq}hQ=BXaAuL7G}|)xb}1BjKF;TXA?RLk00<$3kVX6gZ7ln)f@L~j00000 LNkvXXu0mjfBLxnO diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.63.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.63.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.64.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.64.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.65.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.65.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.66.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.66.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVAy%1la_TB!3`DL_t(|ob8)Yl7t`(MA@yqiT6Jeci9hSDK>!^5uw$7UmB5O zfMlSFArL|cA%qY@LI^R&7~|Eifbg}t0g|#Gw{5eF83pdb&*}zvsZQ`b3}QTT;nI?e z1*DPtUfqCyh+fXOxqmasUS5m0lD(`jjlpGY?*wZA5~5oV1%G#482rBhF$95k*;s%) zpbXF=cKa*Qg#p7(3D5u}%J?pf@eg6C*6^5R5+Q^TLdYW-EXMVTEn+E|L>n#av})ch za0W~PqmE|>YiMd!i$_{$DM+{Aaw($piF7@4i&T|G^HZ&lYB4-}fKw-5iQbp$i9FK- zgcRyDdRjiv$$v(AKve^9wiRT4%@1GWLs040!QGoUPOSsZrND`CZ)2nf=zqNGDd3@n zo$#m7@Rh31^_@Z9YY{~VA%qY@E@AAVkW0*A_`4Fk(`P5=w$#U}08kzbXjN6;8jnKz zn4u+<~NH|6OZP7?oLebfPbS|JOFlXvo7fwgUNE{N#NAb zYQ}l_^e#Q?WTgkRv{GSd*;~HSI^Gh=rhp%7Eaui{>)pVGptphbk=`p-;)D=F2GWsw zM97B)tDx3W#}G<)6FO~eRm&JJl|mCo1<}4&j9VNjG(c^{bZ&27CB`ivKwrwAcYG0Q z`~vDifH^#16!y6o8f!ejnMHcC+E#^cmqL-}<9r?%g6;(efDl3mS;Q}HXZx;G8OBNg O0000b^-1l9zQB!3-AL_t(|ob8)Ya)uxbglVTY@%~5RE`8uHLlcM*5mw#rNf9Fh zB;pc7AcPP?2qA=o5Mqom#;b1u;cImRBxOHt+h$iYD%^#i)eZ1co#1&G#CYV&Wl63U zkVfu%bp!q(dO4rw{>`NF@>txJ%1eW33@&SXCs+fJ5Z!txxPR-);O_>+5Cq<3V*&Dj zGC+&i?Kh$;1BRUvpaDpf@m&NNL5)hU)B1k7Q?d#ICb)s=o|X@EvVV~tP}KmOZ3UTM^TXHp5LEhgaQ7yTQ|o|pDR5%k+ZgEq`i)oJ1w8Z; z7XH+_vFdYudyw~9L=i#=A%u`i7`rIs5_1^-t_1J&*~z&r^|2}dlp6zDRn@1)C1FiJ zI>6{r*J6v2o&&>9wL+gJI?ZnurzRfF``n$F-~mUocz*!w+-6t8-GokCTh%hgOQq1nQ9-ot7UL903Jp*nVmi0C&xmmf2+*JM=N(^!8oz+L z5Fig2g*Lq}hQ=BXaAuL7G}|)xb}1BjKF;TXA?RLk00<$3kVX6gZ7ln)f@L~j00000 LNkvXXu0mjfBLxnO diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.72.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.72.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.73.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.73.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.74.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.74.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.75.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.75.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVc{DRtTD|E?xBfr2qWr_kwP0)m>7*3ir5+*ZBK0GJwIdkK8{P Vl(|2DoFoI{d%F6$taD0e0sx~57|;L! delta 66 zcmZ3?vVdiR3gh#Qs>c{jEi|%z8E#n8u+LpW@{MNJi{l^VVn5j0vNC|djAQ!Wjw*A@ SOuK&y#P@Xdb6Mw<&;$TnUl@e| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.81.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.81.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.82.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.82.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.83.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.83.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.84.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.84.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.90.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.90.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.91.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.91.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.92.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.92.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioAddress/nanox.93.png b/test-integration/snapshots/signTransactionOtherFioAddress/nanox.93.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iJVP}gJ3L||k$b*k8>d7(401yN000000Km8SSzUo~DW&{5 z#<;L1Gh8-+487#B8T>Usj=l`HdeVj8)fE_21lnEPy-F#``RDr31+OCj%bay{kKI4` z9RWqGJ%;|^Zxs|+h8nTQMhpM|0D#cGx%ImZw(E%LMP#=L`fGIsI;i=d7-LE)?}Y0& zGi;bg)Fa>``<6eqpR~hbHZ=F>qj#^a&b^FILEFbYGui;^48A3E4IrPWK|EvSbaWKR z58Y=Yi3`4vCl+mw;yW1GT-MRyBY6d#oxJM--_4+gaHH4@$0A@zFdBod4 z#hn4oSVtWCL%dT^;uz}09*GzL003ZMQ6A8wPB~{0DTjCc?&-(B+qeDG2%Wo@mdRVA zmbirn?P1-4Pw7W7O@`cDp!4T4158ru*a2wPvGQ6s&f`>czwM{i1;9z^#@q6>E&zTu zI=$c+iuycY8}@rZy-$`FeOY$}(|ha{PVRjG0DynCq8j?6TIP4F1^d@TUp;-FUcbk2 z-ZBvz)hSDQb^L5@%+cQ^)?byP)kIeq)$~UX2Id1j`r!4(E8SQy$z05Ux@FBx=V$q{ z3_$mvESAN-0|F-my55TK?d=q#5PnaP3lkX;r9N-J6$xOZQqlP zQh!1n`syU#o$l7N2^UWY63r+t{O;v)>f`eIS54RD8dBfQ+Ijq${GV?PTG!;9=l__^ z%DQZ!+nbF7%s?ag6k2OiKOD24`dq$W_WPwXI(y&VS(JHw>9j1?mf05D<_F&jUDxrX zxqsfZ{|%S*kLCSZUpsSw>`J!FEJ8*>&cZ zMl8O?oYeD_Wy}3X&sJ%rPV8TO+3f7yUg1cfr3viUzWJUn`Z@ddw252yi3a|ByH7Ju z^UZ9j#O>@nM$$JOj-#WUrE40=IgTsJSZKoc?i;wN2(-DlTNOgc=O6vl1gj$e+q52Yi;usv zI|7PWTMT_Vf6^=GvsqmzwyvZ%CS^OOWJA*$ zFf~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&OvAZ}HJ6ZibAo73aUB8%=hL3}FYkcb#96M(51DH46I-SbK6y&OBpRDH;R$kr*I%o>QPD8fD000000N`}L6jyWcS|LQu P00000NkvXXu0mjfFW}h! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.07.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.07.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9cc4e395030ecad1d4b0f8ad2b2ae4747e9c70 GIT binary patch literal 486 zcmV@P)JR+wf;P6H58)kw7ytkO0Kh9KQv!xb0_C`dGyF3d^-+Wn4CA=f1}MYV z`21Bxl$DnBN;Md66=#G>&habs;Hlt~K2mv_iB%6u8CguY+dGQfph zx-_B}J~h%r?lOR&*646%4W#T%Z{XIP@4&tuaJc@=p??R1U65YUsa0BQFzc<=MAKDE zQr{K;0001#%=s!p2xaA4aMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.10.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.10.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.14.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..9573f43ee512e712e1c81779837a89e97f945fb1 GIT binary patch literal 426 zcmV;b0agBqP)UEIA&DarY#|JDVscL0|8beVg+{Da>+ zpoq1{&>#Fg1qB{Mjo2d*0{{R3An21@ziF^tM@&1B-6rU-)gAajv;GrfOey6|xZar| zVIEQ60iEhwey#t|4vW>$d_^Bu_v-G;Vlru}YnEeG%uXWKDVjEaYlob! zC~7v}Hop>dRZM+}v|lLwT1K76N-1LM*%svu{m<23yquK*2(8)R!XwuuCVhXVj=|jh zfa1*SK>W?{*23&P2}5^4eV)HAgUV{Cve^!c@EOJ*AFpC@OY&A200000008huZ=#7M U9W%UB4gdfE07*qoM6N<$g6&N_0%s;U3u{Ex36p0YO=K0I|vWYzU+b0Vc`59a)~I{Eip{7loA zjTfuG2W2hvoh!xlEYWA(4I!0P{2O(xSN^oCI>4Dc;h(Db72B_$XKFugc(dHg`u*34 zWmV_dN0;m~&poCamgI+qbF> Y%-<$^&2i*q-VT!SboFyt=akR{0Fi^k7XSbN literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.16.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d47cc63bdda47434f3c01ca8eaba5161967d0a5b GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WLba4!+nDh2lG+(oVfJ5M| z67@Iro|~uFO%P!6(#UO>-0|F-my55TK?d=q#5PnaP3lkX;r9N-J6$xOZQqlP zQh!1n`syU#o$l7N2^UWY63r+t{O;v)>f`eIS54RD8dBfQ+Ijq${GV?PTG!;9=l__^ z%DQZ!+nbF7%s?ag6k2OiKOD24`dq$W_WPwXI(y&VS(JHw>9j1?mf05D<_F&jUDxrX zxqsfZ{|%S*kLCSZUpsSw>`J!FEJ8*>&cZ zMl8O?oYeD_Wy}3X&sJ%rPV8TO+3f7yUg1cfr3viUzWJUn`Z@ddw252yi3a|ByH7Ju z^UZ9j#O>@nM$$JOj-#WUrE40=IgTsJSZKoc?i;wN2(-DlTNOgc=O6vl1gj$e+q52Yi;usv zI|7PWTMT_Vf6^=GvsqmzwyvZ%CS^OOWJA*$ zFf~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&OvAZ}HJ6ZibAo73aUB8%=hL3}FYkcb#96M(51DH46I-SbK6y&OBpRDH;R$kr*I%o>QPD8fD000000N`}L6jyWcS|LQu P00000NkvXXu0mjfFW}h! literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.18.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9cc4e395030ecad1d4b0f8ad2b2ae4747e9c70 GIT binary patch literal 486 zcmV@P)JR+wf;P6H58)kw7ytkO0Kh9KQv!xb0_C`dGyF3d^-+Wn4CA=f1}MYV z`21Bxl$DnBN;Md66=#G>&habs;Hlt~K2mv_iB%6u8CguY+dGQfph zx-_B}J~h%r?lOR&*646%4W#T%Z{XIP@4&tuaJc@=p??R1U65YUsa0BQFzc<=MAKDE zQr{K;0001#%=s!p2xaA4aMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.21.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanosp.21.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV8}fKv7zCC+vSo?4=)(ERjDRe_ts@Ugw+* zd-92p0jP(*7BLL*0wAMb4|lgQgu8VI-qZ|qxN(oFlv1xh^It=VIs;&4bel)K{Zrf- z(2RA&p+Ces1tpH5PVAA00RR911{UQ3P3n|$E~UufUB7$!@$dF+|1?79uF^7jYt$0A z@Sr`cJMby}D5lAfn+tUQTr4xdB(;tmfMy+&*Sc{YC(-@3pIR3HC#4&2%h$R9_}S?6 zf@3J^^MGyG?*a8bDJ}Z4?h2;&*ejge`v3p{|7=Ay^hdSK?^X-;uZg~T`aZpWkK?>$ zA~vd1N|QJNLnh8}fKv7zCC+vSo-b+6sA(1~Gf1iky*Ewgy zo_r!?0P3NyMGQl{0F=?Mhr8Pt!ri(9Z)yfQ+_*<2BK7(+|22fDGXQ2rw|T_dKgFE^ z%~(eq`a`@^P~sTs#2$$l0001BU{M~>q)s_!5h;gv{qE_=jP#eEF1DKvCN1PT2pF*h@c{GK`QF67!OK&zGUZ zc7*|>Bm@8e00000{1;!lZ{Tw&rE(l&+;}H{;`WLcpU-Q=ISx``1l9EBS6I3W9Tz~Z$W|A(0@ZbVsL~VTa5f>fsv*t1>rLtKS$N8Y$%62wWuhmm2&iPhxphX>U zMeP;A_>Nw);5>EDo*8N3JT4$Pu6n^FE8%{ n9W(`Dry*Nn000000C2ir6_RuDar+&q00000NkvXXu0mjfVqMb? delta 447 zcmV;w0YLuO1K9(RB!8euL_t(|obB3Ma)cldKv9y)PT2pF*h@aBP!u#hsJzt0Ms0v>tPdkH51!0*Y8$41HwpEy(d2dVh#_Y{UQn0DxBrnU6J< z!p_aDQcb`9YZd9q&YGPc5i7SoVxj|n)-)4BNSoE-I3Cnn+0JTWTRnxvH7}hGw5S7G z#9k>Vf6^=GvsqmzwyvZ%CS^OOWJA*$Ff~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&O zvAZ}HJ6ZibAb;|I=3T#-l!lLkb!&jWHY!2PzjkZQh;?FT)D3+MT;0U7MHm180Mm)P z%^{oE&cXxP-iW=x=44z_Y^>_jbS$RT#F|CP-mK>liuApB>eSgotn;LB`@cAzG6Hl1 z<01|bW$?|mp#xIl<)CS9A{;wr@i+sRH{Cj&%ElDrs%M|9=M+|6 p-Um8p3c^l9w!{Dc0002sbiWi=bMaasM9lyI002ovPDHLkV1j0S*Hr)j diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.09.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.09.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.10.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.10.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.11.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.11.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.12.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.12.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVF1DKvCN1PT2pF*h@c{GK`QF67!OK&zGUZ zc7*|>Bm@8e00000{1;!lZ{Tw&rE(l&+;}H{;`WLcpU-Q=ISx``1l9EBS6I3W9Tz~Z$W|A(0@ZbVsL~VTa5f>fsv*t1>rLtKS$N8Y$%62wWuhmm2&iPhxphX>U zMeP;A_>Nw);5>EDo*8N3JT4$Pu6n^FE8%{ n9W(`Dry*Nn000000C2ir6_RuDar+&q00000NkvXXu0mjfVqMb? delta 447 zcmV;w0YLuO1K9(RB!8euL_t(|obB3Ma)cldKv9y)PT2pF*h@aBP!u#hsJzt0Ms0v>tPdkH51!0*Y8$41HwpEy(d2dVh#_Y{UQn0DxBrnU6J< z!p_aDQcb`9YZd9q&YGPc5i7SoVxj|n)-)4BNSoE-I3Cnn+0JTWTRnxvH7}hGw5S7G z#9k>Vf6^=GvsqmzwyvZ%CS^OOWJA*$Ff~P!uJ65nKC#q`)|!Otlo7BjH8wCP;`5&O zvAZ}HJ6ZibAb;|I=3T#-l!lLkb!&jWHY!2PzjkZQh;?FT)D3+MT;0U7MHm180Mm)P z%^{oE&cXxP-iW=x=44z_Y^>_jbS$RT#F|CP-mK>liuApB>eSgotn;LB`@cAzG6Hl1 z<01|bW$?|mp#xIl<)CS9A{;wr@i+sRH{Cj&%ElDrs%M|9=M+|6 p-Um8p3c^l9w!{Dc0002sbiWi=bMaasM9lyI002ovPDHLkV1j0S*Hr)j diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.20.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.20.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.21.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.21.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.22.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.22.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioOracle/nanox.23.png b/test-integration/snapshots/signTransactionOtherFioOracle/nanox.23.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i6(jcK$eh+>1nTn8d^)H2T)4c@k?WUbFFdiyyPXzp zthJ|m{&MRFS8WfzHd^s@#ne>KwbPW=-uZr6_J{M?qQ6nkw`)E9wApIal+z8Vyn3&H zFN)v}Sdn>m>(1>{o9|02(2eQ^t|b69%J?J9(#?H7%;@pz=H+xH$M9x TT3q-#1SI3>>gTe~DWM4fJeJ04 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.04.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.07.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.07.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.11.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.11.png new file mode 100644 index 0000000000000000000000000000000000000000..a8df15afee3dd32378596a3ea7c82f45a9200db5 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#piq;7Ktp2I zuFmiFLggppqPM;2Pa6Um*(?1#s9wPI^H?Q=aBWgFjCBV_QZ!; za_Q_3uGSuSZP4*?#mw7NX6d?0?fiX{agX5MnEluOt@Wz<9eF48(ru>G5;eNtdXsn^ z6nB+o6kea%ykA;L&+*{yoOKSy3t|@>z4cb#C7o}_n=MSd4j0$GS2En+F(r@F{q<41aE6zK0PP8Vh&@0+ooFWq}<~dcdW`64?j9zC-&2=w5=Oi zRsMB%mRS2K3+>jpJLl~#V~6?;>(}KLOLdl=bne_dEBXGT%*D@UG2UH%a-G7Vpa(bI zZwaTD-|Dq{zmD<3W&7G$k<0TBy|{Y##J1&K7o}Po&+ho<@=~j>zjDj5Uj4-175?#8 zHRp*>*{piktlCfht;Ji9Yf)3K{Qk4!=!2rqhs%7556xx&GuzUAlKrS1w9o^ W?s?JC>OHQ_APG-bKbLh*2~7Z2C&Hls literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.12.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.15.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVF1DfMMF{O?>|&ahEr})j+a-S;<&ahOah{AUzpCe~_K|qm)~I!Ruet;5KAcZN zwZrk4uc69TP71r_f6FUi8Fp6(jA0$|mqVWLB;(xI`2CxMC6#ofSKV`H*ZJvY4_AMSm?r(ppA000000000000000000007yu6X1qcUCDQbN~PV delta 364 zcmV-y0h9i%1FHj&BujEhL_t(|obB0La>F1DKvCN1PQ3pmv6p@@VN?M^#xJG0=PMyt zylfoHDFFZg07xn2oO8}s9}>jZ(;d*{JZ{@&S2HTSi=U@E;E``AfBT|X3s9(O-L<*5 zm4n|KB5py!r|evTt^m0~tG(MFq^%rq+mQk-Kq2>cRhVB?NjJj3`I`g)0Pvx*aC+oX zbEk)WSC^)FFG?H4SpZK@=BbELwoCpx$|0-lqn(T_zpCe~_K|qn)~I!Vuet;5KAan& z+TpCQ*HC3EjlypEfAk8NhTYWxXV``K(;*vHl5xw|`2CxMCzW)hSKV`H*ZIDf4Q+P= z|53MTcMqf5ktX)GD9w{`aqekrog?Xv+0$IxtI_mz z)2`0@IZ4??H(Wa5-Uoad761SM0000000000000000002s7NB3)^H0K~aqCn70000< KMNUMnLSTX&&#im_ diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.04.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.04.png index c1a66c3d2ded9643857fbf02844d87151322b5e1..2d8f3742529532000f121d4cbf17501aa47be0fd 100644 GIT binary patch delta 393 zcmV;40e1eZ1FQp(Eq`r}gdhxnVRo`N@%~5ZUFHV~Ary&GhqmxOKQ@jZquYW?$)p4T z00000fL;7qU%-7LQkIY7Fual{LMEUNeJx@d;w7L&zYceIWe6YZ3%IEXbhx-jB_j3x zXZ$gQs67B?&YF3|=AYvBfF{-vL!ZTa3rf6(Iqj>B3k00xqfo?Jn+K#Td)` z&-kMYUV8x4^qRTH<{$j_fGXA=L!bD23ktl38nMPe3;+NCP=7Fc9AM<-J;s>MUXAJ2 zA5T=p%gJYyE7eOHzscw8kuxf?ujFPcm#f|K$F!XO+HBn>5+H8~&G?=?HWaZ=Ij|Y} zL?Hp=ImJ6)Sgx@g^pZjX9)J2ZrzgGSKy5xC-=Lj-|5Hpn1Il2fX4?y&Tq%$3Jt(s={1LH)AYt=zP2mGrJ= zflO{1?AAPFymfrYnMS=-4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU n+wK-*4G91M000006a4{;nmxBF@ul1V0000eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.07.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.07.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.08.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.08.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.09.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.09.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV-B!72FL_t(|obA~`a>F1DKvCN1O?>|&ahEQbGO9!rFvQ5of2)LG z5MXc&DFFZg07xn2oO8~vz9fjR-2rH_ACKekvpE^=;%9dNy_z?89R@WXHM2~q*;1sD z``#VEKdP7O*V?~TNtd71RV7^(SjOOGv7Z!c01DNuLyNo39Dn@T5OE0#-eqeAngMcw zR%>^EAvSZsWk(7$0EJxNRbu|5Qko^a&EF&d0D#Yx1wY%8iY7~#j3FYmqq4TZ3rgOi zGm@#T2(`H=-&&jdk@i~kt9r?@@57HatDP+%^)6;(cH(p*@r$y}nbMpA=RP#QKF!lC zr$6yTTly1++J9*E&Vc3(<jDd^cpnu)VH?MCnS-T|;HKyoM7_DvYOdN|o;su-g`y>1`o)qoB#j-07*qoM6N<$g2d#$ AM&HX9wWbeZcE5i1DbI+mxCuMH;#L z*#W!}yuS za7MCyD`IWO(YUH_7gxofEM4;2X0@>eB>szubURKX61ynfob9?ZK!32Wu5EJ~iFV0D ziL;tx-{NVb=6{+2-KWW}Ai`4M*+<$FXLs6-KJTsp(9=JCnpvlB!syk*$hN17(Hez; z&A9eN=_-zod9=ojFJb$5PhZt3o)?s}CEYfAP9NY% diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.12.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.12.png index c1a66c3d2ded9643857fbf02844d87151322b5e1..2d8f3742529532000f121d4cbf17501aa47be0fd 100644 GIT binary patch delta 393 zcmV;40e1eZ1FQp(Eq`r}gdhxnVRo`N@%~5ZUFHV~Ary&GhqmxOKQ@jZquYW?$)p4T z00000fL;7qU%-7LQkIY7Fual{LMEUNeJx@d;w7L&zYceIWe6YZ3%IEXbhx-jB_j3x zXZ$gQs67B?&YF3|=AYvBfF{-vL!ZTa3rf6(Iqj>B3k00xqfo?Jn+K#Td)` z&-kMYUV8x4^qRTH<{$j_fGXA=L!bD23ktl38nMPe3;+NCP=7Fc9AM<-J;s>MUXAJ2 zA5T=p%gJYyE7eOHzscw8kuxf?ujFPcm#f|K$F!XO+HBn>5+H8~&G?=?HWaZ=Ij|Y} zL?Hp=ImJ6)Sgx@g^pZjX9)J2ZrzgGSKy5xC-=Lj-|5Hpn1Il2fX4?y&Tq%$3Jt(s={1LH)AYt=zP2mGrJ= zflO{1?AAPFymfrYnMS=-4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU n+wK-*4G91M000006a4{;nmxBF@ul1V0000eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.15.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.15.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.16.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.16.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.17.png b/test-integration/snapshots/signTransactionOtherFioReqobt/nanox.17.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i0WbcEP)btR=Df{+4PdfZt&Lux%FjpH+Q=5vpaxEMMJx5cdufM^7^BHbiwNkz&5>M?s52E zerG_@)*hQa@%I#T@fdoDXDq}300008_QkE=W$?LDn<_2)m`4BI9l(HQ{wIVGW6Uez z`j;6N%roj4pk&|jwteS0PRxep5uHZ&?r=Wq&`Z$c+dVt91DaRxM>?(pubYNeRm#Eb^;&A& zyViT>LQH1RiZo6!#Ps~-M=8}QQ8mwH|Dvyc9kch=rrfyAS>EoMo&ieLdQ`@kCoIi? zUP>V8bw)iKddL5_RQ^y@`WHvN;S!`Ijhpkg&h{urUJuV=D5|2&VjpbyJ>bkN|8!J~ zr?WHzl)r1$W4~!Ge_5Zi@w>+AjK%ifgaH5m00000*!=;>jZTnH_)p#d0000|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.05.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV0fhdEP)(ln@G-q0$!K=NB?fuw{HrLjV8(0002ME^gWl7#Cwq<>NRM zTk;K;3CKgA^Oy#I2}se;!(FX(;jZ0)K}De5#oenIV?O@$U%KG+4uG0gH}}~6gWo%# zh_%PipZu+Y0?SY%*4T&v0001c^Shf}!5RH&Ik1!Lhjs&+ijA&(s`E!E)G%zPa>nGrn`L_jgz$)aQRa%z}*2p%uzC|KG4gdfE0002M Zv?ps6OcGknhPD6z002ovPDHLkV1gVir?db7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.07.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.09.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.13.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..9117c2d96fb5479caad65d562b9ca63e4fe432b5 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2#Vo{3%Pg~-x zm%e-cPu$^MZ*cYkf6u|Lpy#!9JM#``aA%pR0(CKHE}c_+uCi>hYmLp^hE?kyZ_BNl zA^ah}#&)hl$anUH!r_^ zXxi@yw0pgX?y-}ff3&Xu>KuF0IbHMp7FC7c-!}YIjl7$<-m7@g+Y8&<4+iOXeUY(z zl$-y!Ue~o`_3^LPxi_b6T6!c}d-)v8sl^uRs}C2?pR}lEO3`BZH(vx^9=~5)#b(j| zZ8O)iH?u=~Zbv(RXIng%*YEr`+tNCo)TibpK9UTx7v8nm^*Ow0uJDex_bjGNJ#yrD zLXx3h*dOlZ{9>!s6^CE&e0V>9(eM6*SAW0p_ly4DyZyOLj|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.15.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV0fhdEP)(ln@G-q0$!K=NB?fuw{HrLjV8(0002ME^gWl7#Cwq<>NRM zTk;K;3CKgA^Oy#I2}se;!(FX(;jZ0)K}De5#oenIV?O@$U%KG+4uG0gH}}~6gWo%# zh_%PipZu+Y0?SY%*4T&v0001c^Shf}!5RH&Ik1!Lhjs&+ijA&(s`E!E)G%zPa>nGrn`L_jgz$)aQRa%z}*2p%uzC|KG4gdfE0002M Zv?ps6OcGknhPD6z002ovPDHLkV1gVir?db7 literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.17.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.17.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.19.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.08.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.08.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.09.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.09.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.10.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.11.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.18.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.18.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.19.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.19.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.20.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.20.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionOtherFioStaking/nanox.21.png b/test-integration/snapshots/signTransactionOtherFioStaking/nanox.21.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iP@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.04.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U01bz7|tK=8Pf3&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeM zeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjw zrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-JKNP(P|G=4Qb zboDz5C*`6Q5#YeO!}_@lc7XLbqOB?n-T2*;MGfo;AR%B1H!dv{g>Gv000a)uITI!UqLss#X{_)yE7_EW+j@9 z(vMt8t>ntKrC3-V77e!8%f1mXTvhv6;x6`bKp1!9EbH9#Dt!5RBhQ+Ivn#`m8^p`l zE&|FcnBoo2?l}RIFaQ7m00000000000002M!}$dXt>A2GsY9s%0000& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.09.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 GIT binary patch literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.11.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.11.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.14.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.15.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd0b0eaa958bff396380e4c9b2122d3b82439bb GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.18.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.22.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.22.png new file mode 100644 index 0000000000000000000000000000000000000000..2a61cedadad92f3be64d4dbd7983be4a009f333a GIT binary patch literal 430 zcmV;f0a5;mP)P@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.23.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.23.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a66c3d2ded9643857fbf02844d87151322b5e1 GIT binary patch literal 428 zcmV;d0aN~oP)XlGsZ>kPyOvqCBt-_k4`fJerIRNib>%00000007vya}mvajT3E0?R?^2fBC{@QHaCK4cT2+jDOJT?@uPC2j{`a~fC<2l7UUs$fO9Q2Yx z0v><*HK!-Nt(s={1LH)AYt=zP2mGrJ=flO{1?AAPFymfrYnMS=- z4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU+wK-*4G91M000006a4{; WnmxBF@ul1V0000w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U01bz7|tK=8Pf3&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeM zeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjw zrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-JKNP(P|G=4Qb zboDz5C*`6Q5#YeO!}_@lc7XLbqOB?n-T2*;MGfo;AR%B1H!dv{g>Gv000a)uITI!UqLss#X{_)yE7_EW+j@9 z(vMt8t>ntKrC3-V77e!8%f1mXTvhv6;x6`bKp1!9EbH9#Dt!5RBhQ+Ivn#`m8^p`l zE&|FcnBoo2?l}RIFaQ7m00000000000002M!}$dXt>A2GsY9s%0000& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.28.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.28.png new file mode 100644 index 0000000000000000000000000000000000000000..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 GIT binary patch literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.30.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.30.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.33.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.33.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.34.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd0b0eaa958bff396380e4c9b2122d3b82439bb GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.37.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iP@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.42.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U01bz7|tK=8Pf3&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeM zeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjw zrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-JKNP(P|G=4Qb zboDz5C*`6Q5#YeO!}_@lc7XLbqOB?n-T2*;MGfo;AR%B1H!dv{g>Gv000a)uITI!UqLss#X{_)yE7_EW+j@9 z(vMt8t>ntKrC3-V77e!8%f1mXTvhv6;x6`bKp1!9EbH9#Dt!5RBhQ+Ivn#`m8^p`l zE&|FcnBoo2?l}RIFaQ7m00000000000002M!}$dXt>A2GsY9s%0000& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.46.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.46.png new file mode 100644 index 0000000000000000000000000000000000000000..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 GIT binary patch literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.48.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.48.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.51.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.52.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.52.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd0b0eaa958bff396380e4c9b2122d3b82439bb GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.55.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.55.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.59.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.59.png new file mode 100644 index 0000000000000000000000000000000000000000..2a61cedadad92f3be64d4dbd7983be4a009f333a GIT binary patch literal 430 zcmV;f0a5;mP)P@)+k+{n&A|ZND{cYWW4^;C%F~*cqJ_(|4HWzqyVTv!VHkKAvvt?##956108XvqcA>x`J?X4|&L_(G=Td9_0_+mk-stb>@6m6XS*mI6xU;o|Tm@5sDf zkz7*F+tnuYN^Ix}$ZAUR_Fc+#U!zxlOZrh;dL`Wk%mDpACQLkEN%Ud^Kiz-z4{VZR6bLhgQsDVy+lV=V66rY)Zgr?M?yP1eTsU8w{B000000Kn@0 Y0myeqXvrh%5dZ)H07*qoM6N<$f+sS;`~Uy| literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.60.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.60.png new file mode 100644 index 0000000000000000000000000000000000000000..865f0bcdabb24dd323cbc9201ff39708dea0134e GIT binary patch literal 539 zcmV+$0_6RPP)w`7ytkO0KfrM>ww*F;?;sH#+Xvd1Ie@U@=CH^HZotU z>7>a^d41`Q9Wm(jDTmu+z;3hwkW|y6mxk3A%9A@Pa^m);@>pUrvDrQVRf#BL&^(YA z8q)M&vxv#5JScaea|;V-10b_t(x8Q}Ekvl9&Q{W?Nk3-K0NFUUZ_=BaDw0X^n%HJv zf+SZJ3TT!swglidvvNqnYE;S|7W$dVeK|z$tb@ezyJNK*uUnEZi_^Vw006i_)^`^b zzxTVY=Pe1m1s!MCN_ecr_f)X5Q6rH2-jjSt}~FdF0ZJ#3=V z>Bh3%m}4dA_TkxNUW06I=ns0E9PYCo!ngEpZ$4i>e^sG`b--aZt^z&ttU za(x`fMoTP&3_$JrnuuYD7l7jZ+TGp45Pa`8V3Nks;rt$zoO7Lj^xF_bodK|o(J+rV z{8QW+(D*u{>rdjn1tnfX--OTDhyefq003-Yejo76Yk0HgI*udfT)LA_W%Wk2o;J1A zwKO96u~e=du`ULqmSv|)%~*sf0Fq`}j0T`QKY92>MNZ$*gw|CiyV=eGXdGI{pnFk% zEWO}Gx6N)6lM`A=cge|YQvj5Ke6ylb(tR{B(7MCfE7JCMeAWP2s9Pp0DxO`Glw9VV z-8SbGBssHCLa-d*AArj-RYH>fq9RM~P}h33?j1Y3U5uW-_3(;&T=f7^k0jw1K@Z9S z0N?_d-ved*(WhO{Tf$q=W|r)PbrpW3f7OL{8TGQ4?k~G-zI6K>XUC1aCDkrncT=9u zU5xA;^*d4M`&Hy}E$AlhGOA-jSA^*9?Mqk#;Hb4Nl2PrE=>8d`INf+oxoQzU17jH) z_7;}X=ybYlr?4jlbr&vo8C7bfvWrW{$u8by5x&Hpoulk3EU*vQ%&L7rvQ0@2(EtDd e00000K9gTVo3(bWm-Ng40000OUo@_5g(0y37?X|D@Xk zidZX#ex~;nlz0s7#26DX0000WK)^g8bxA zOXkmc2VY(sr)a9d`-(Za#BW^|?(VaDgvP@AJ55Xv82l1DqKhG@2YIl%`F|xFAP@Q% z#w)5*#xy|7OAP+j+7g}0+Y+a%W7CBzVzG;Bs!Ni?(7OlxV)SQm4FG`SPCPYsl_l-y zy`W+$w451jr93OOTB;zWgSpT4!j?R1EWLR^U01bz7|tK=8Pf3&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeM zeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjw zrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-JKNP(P|G=4Qb zboDz5C*`6Q5#YeO!}_@lc7XLbqOB?n-T2*;MGfo;AR%B1H!dv{g>Gv000a)uITI!UqLss#X{_)yE7_EW+j@9 z(vMt8t>ntKrC3-V77e!8%f1mXTvhv6;x6`bKp1!9EbH9#Dt!5RBhQ+Ivn#`m8^p`l zE&|FcnBoo2?l}RIFaQ7m00000000000002M!}$dXt>A2GsY9s%0000& literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.64.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.64.png new file mode 100644 index 0000000000000000000000000000000000000000..8be056788bad1cdf3dbbc255c0ea4d4cd3b05775 GIT binary patch literal 580 zcmV-K0=xZ*P)17_XLqLG z;whO4q>ZY8OPkSL*#T)SzQG zt64Ldq`w@lig$heG+ME&u60{GQW{Wu)*i|4JFgAw10Lp%eLxtC)Bl?N0RX^3$N8N7 z;VbB2p5KV2G>fCEWY(hAO6#|fGg7lu8|D9^$vy66-w2qls{UuI1=>01{IRum zV@-OfY=AKJA&t$TuK|4a!*oXrRruLmfkwAPtINAq&bjdZlmDoK))9bhQr%o*_cwY+ zz%ADrQ-9I-7G!u0J;XC6VgLXDfGTkVDpCdb*)J zH}kv3_V>nH(1B0jo_-MB;7ql_*bdjYA7I}GR^>F|lWd;q5pe4lg?FLoW7*WdV59=c z>!;Eu3+1_~$L!VT3IpNa$qCZBCHWXM007|8O7KDE#lLnHD8CFf(6H6esMOM? zFIli?diZpGZUbaihD|J+spaC27x#12!_zIT8v%%#J`sETnq4Pm!kf*#1)0jb(CkIi nTNMAbk`e#_000000J{AFfBS!k;W;VY00000NkvXXu0mjfjh4`` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.66.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.66.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc7747369ad9ce6f52e16e8bc02bdf882c51c8 GIT binary patch literal 376 zcmV-;0f+vHP)%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000(~L}hq*&sVk8k{L>2+T#EK00000z`wY8H(;EZo!cP< z$Ci9TG68AmQ;KQOOTZcZG~C56CEUFmFenSOT-;TeSvvl-KT1%&0^p|B%@w=k5vQjEC2WPmO0O zX~)bCd$|m*9bbHm)7hRKG>T~FcHC&}s_h*(OV9uRl>Ze_bRCqZMP%}Dv}giC2w4uM z4G5D*o^_uG#2k3H;^&;NfHcaDuGe{3?fBx)iwS=BL;wH)7^Cr4M6r@uE3fjl#P>BS zKi7|1%eQq`!o#$B{i3y?t6dkUG6_hB_?>dF;Si){!vtvEgk^@H&alRE=B_sk00000 c0002vo-R$#P0uMJJpcdz07*qoM6N<$f&<8m;xxpYfE4{a+|3t5c&;A6q$1Ga;vSWm<@cX{H-xAefMxcUdBo)}aWkNZ zb;Qtb;ynckkD*Rn;~)kA001oD^c)bkynF@qLAPINh+BscpBZ3g%^zDtL{-0b(`Qqg zd>T{NHTTM&_0?wEbBerH51=7mw)L8wi)N8ke)ug%cjBe0L($yc?=uhlPQdAW&Vk2U zQ0IRS#ilxRRoH|9004kUsD}PqesrQ5y1;#^p?+&Ydr`BGQ@#y7{Wbo31~j`)_{{)0 ryM9SEbU?jrQVj(F000000C30~B5Lh`vjCY|00000NkvXXu0mjf0JD;x literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.69.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.69.png new file mode 100644 index 0000000000000000000000000000000000000000..1649b937bf81d0fdff9ab12ba8524ff13e33b9a2 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|P?@_4kC0(AkwgZMj(tPAGO{Q5X5JHdaS;>-ra zFUm(vUZ^f`ujl!mxVWXdgk7(waa#9oEo159^FIf3uJUI%bSAI(==^Z~buG;Q zlIGZ&nITlIa|CE$1B2vs#=N;#pZ`ePW^w=h{yDK+!RuGwxo4!!IM?La`Usmv)*mFl zANRJ-oxiAjdj!*+f{^T3`RPSLYuoagSy+@A4_?~Kd~3tIs9zsXPV2ZiyJ3|n(34J* zs~5Iww6fjaBoZa0cVyO7+ZWPPoF*4Z&l8uvUpM$*(}mUBEnBA%{(F6*2UngBC3hQ0s* literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.70.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.70.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd0b0eaa958bff396380e4c9b2122d3b82439bb GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x1ba4!+nDh2#bkSi29*4lC zm*-ae_r4VO>);h-!@#3%PYPumIe51MW^b}@;sKiNO@t1fVF7`Oyd*!{0(Zah%%(nEa>ywSvjU2nVRM+lXGMmvg z_}!kX=XLKY+XKzp&|aI@w}@y?1fi#gkKF@0!f|vdeJy!Z4|_Y@_mX%|Es;NIUcPj8(DLtKLuF z=j497d%tu}pm^yD&nmMt*;RSFFB!zt3jU1CNk02~_8Ir^uiy0C(<`XnQ(?RJb@7(hT{C3tJCn=T=6wA2Y0B$w+16DzZ4<7{{P&4XzI9f4 z;(HeDmpeDfs!pC{+dF&CjZIVjcicUBj`4%tUPf?8K?w&gdmComH2%IhyFenIu6{1- HoD!MMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRecordobt/nanosp.73.png b/test-integration/snapshots/signTransactionRecordobt/nanosp.73.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVqj>B3k00xqfo?Jn+K#Td)` z&-kMYUV8x4^qRTH<{$j_fGXA=L!bD23ktl38nMPe3;+NCP=7Fc9AM<-J;s>MUXAJ2 zA5T=p%gJYyE7eOHzscw8kuxf?ujFPcm#f|K$F!XO+HBn>5+H8~&G?=?HWaZ=Ij|Y} zL?Hp=ImJ6)Sgx@g^pZjX9)J2ZrzgGSKy5xC-=Lj-|5Hpn1Il2fX4?y&Tq%$3Jt(s={1LH)AYt=zP2mGrJ= zflO{1?AAPFymfrYnMS=-4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU n+wK-*4G91M000006a4{;nmxBF@ul1V0000R&ap+*2eI1gSK-yRoFlkeE1Ak8hWW+b2Wb0xo$eb}` zx>+-f42x_S+3=K^$NDUu2&fHI`LCjU&3q2u9MjOPO*1*#dQ554;{X}>#q?4erD=RC z*PDZ7+5ccb3TlwLXPGG*9d%!&!rv9U7EA-5<*EbDxo?VYrF@N|U6cyj13uNJ`el6A z8u#L&l^?>~6n_M_!Sn|Jcn~t_f7~+A-ty8=d+O60k1$7tCBIzfGwpaA}H463p?nTX@`hPs`%lMnG6YK+SX3;(%T#MF! znf(C(z<}e3&i?QgbTeCQ#7?@E(V}G5qA8SqzD}lmGw# delta 539 zcmV+$0_6R(1hfQ@B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s17_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.10.png b/test-integration/snapshots/signTransactionRecordobt/nanox.10.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.14.png b/test-integration/snapshots/signTransactionRecordobt/nanox.14.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..807849bb1bb2337615a1a44acb6539c86dcbd3cd 100644 GIT binary patch delta 36 rcmX@hbe3ttC)OPABPX*bes>Zn`@L>c*Iczf3_#%N>gTe~DWM4fJZulY delta 36 rcmX@hbe3ttC)ShGI&RLM_}xjQq;=gU1gTe~DWM4fHxCZy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.15.png b/test-integration/snapshots/signTransactionRecordobt/nanox.15.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.17.png b/test-integration/snapshots/signTransactionRecordobt/nanox.17.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.18.png b/test-integration/snapshots/signTransactionRecordobt/nanox.18.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.19.png b/test-integration/snapshots/signTransactionRecordobt/nanox.19.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.20.png b/test-integration/snapshots/signTransactionRecordobt/nanox.20.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVqj>B3k00xqfo?Jn+K#Td)` z&-kMYUV8x4^qRTH<{$j_fGXA=L!bD23ktl38nMPe3;+NCP=7Fc9AM<-J;s>MUXAJ2 zA5T=p%gJYyE7eOHzscw8kuxf?ujFPcm#f|K$F!XO+HBn>5+H8~&G?=?HWaZ=Ij|Y} zL?Hp=ImJ6)Sgx@g^pZjX9)J2ZrzgGSKy5xC-=Lj-|5Hpn1Il2fX4?y&Tq%$3Jt(s={1LH)AYt=zP2mGrJ= zflO{1?AAPFymfrYnMS=-4|rsVzkHSS#RNR^uP$FD-EJgotxBphA8_&~T~tX;Gu4nU n+wK-*4G91M000006a4{;nmxBF@ul1V0000R&ap+*2eI1gSK-yRoFlkeE1Ak8hWW+b2Wb0xo$eb}` zx>+-f42x_S+3=K^$NDUu2&fHI`LCjU&3q2u9MjOPO*1*#dQ554;{X}>#q?4erD=RC z*PDZ7+5ccb3TlwLXPGG*9d%!&!rv9U7EA-5<*EbDxo?VYrF@N|U6cyj13uNJ`el6A z8u#L&l^?>~6n_M_!Sn|Jcn~t_f7~+A-ty8=d+O60k1$7tCBIzfGwpaA}H463p?nTX@`hPs`%lMnG6YK+SX3;(%T#MF! znf(C(z<}e3&i?QgbTeCQ#7?@E(V}G5qA8SqzD}lmGw# delta 539 zcmV+$0_6R(1hfQ@B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s17_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.29.png b/test-integration/snapshots/signTransactionRecordobt/nanox.29.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.33.png b/test-integration/snapshots/signTransactionRecordobt/nanox.33.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..807849bb1bb2337615a1a44acb6539c86dcbd3cd 100644 GIT binary patch delta 36 rcmX@hbe3ttC)OPABPX*bes>Zn`@L>c*Iczf3_#%N>gTe~DWM4fJZulY delta 36 rcmX@hbe3ttC)ShGI&RLM_}xjQq;=gU1gTe~DWM4fHxCZy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.34.png b/test-integration/snapshots/signTransactionRecordobt/nanox.34.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.36.png b/test-integration/snapshots/signTransactionRecordobt/nanox.36.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.37.png b/test-integration/snapshots/signTransactionRecordobt/nanox.37.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.38.png b/test-integration/snapshots/signTransactionRecordobt/nanox.38.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.39.png b/test-integration/snapshots/signTransactionRecordobt/nanox.39.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVR&ap+*2eI1gSK-yRoFlkeE1Ak8hWW+b2Wb0xo$eb}` zx>+-f42x_S+3=K^$NDUu2&fHI`LCjU&3q2u9MjOPO*1*#dQ554;{X}>#q?4erD=RC z*PDZ7+5ccb3TlwLXPGG*9d%!&!rv9U7EA-5<*EbDxo?VYrF@N|U6cyj13uNJ`el6A z8u#L&l^?>~6n_M_!Sn|Jcn~t_f7~+A-ty8=d+O60k1$7tCBIzfGwpaA}H463p?nTX@`hPs`%lMnG6YK+SX3;(%T#MF! znf(C(z<}e3&i?QgbTeCQ#7?@E(V}G5qA8SqzD}lmGw# delta 539 zcmV+$0_6R(1hfQ@B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s17_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.47.png b/test-integration/snapshots/signTransactionRecordobt/nanox.47.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.51.png b/test-integration/snapshots/signTransactionRecordobt/nanox.51.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..807849bb1bb2337615a1a44acb6539c86dcbd3cd 100644 GIT binary patch delta 36 rcmX@hbe3ttC)OPABPX*bes>Zn`@L>c*Iczf3_#%N>gTe~DWM4fJZulY delta 36 rcmX@hbe3ttC)ShGI&RLM_}xjQq;=gU1gTe~DWM4fHxCZy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.52.png b/test-integration/snapshots/signTransactionRecordobt/nanox.52.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.54.png b/test-integration/snapshots/signTransactionRecordobt/nanox.54.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.55.png b/test-integration/snapshots/signTransactionRecordobt/nanox.55.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.56.png b/test-integration/snapshots/signTransactionRecordobt/nanox.56.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.57.png b/test-integration/snapshots/signTransactionRecordobt/nanox.57.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVR&ap+*2eI1gSK-yRoFlkeE1Ak8hWW+b2Wb0xo$eb}` zx>+-f42x_S+3=K^$NDUu2&fHI`LCjU&3q2u9MjOPO*1*#dQ554;{X}>#q?4erD=RC z*PDZ7+5ccb3TlwLXPGG*9d%!&!rv9U7EA-5<*EbDxo?VYrF@N|U6cyj13uNJ`el6A z8u#L&l^?>~6n_M_!Sn|Jcn~t_f7~+A-ty8=d+O60k1$7tCBIzfGwpaA}H463p?nTX@`hPs`%lMnG6YK+SX3;(%T#MF! znf(C(z<}e3&i?QgbTeCQ#7?@E(V}G5qA8SqzD}lmGw# delta 539 zcmV+$0_6R(1hfQ@B!Bx!L_t(|ob8%Ra>F1DKxwBp;r>U;UApkZLqUKf119x*E1M`n zASBEu1ONa40D$FunWSH@SNa-b9BPcSu0t{tNDD;)lQv~V4!#}#ncD9&>WVR%dOsBI zpU2O26{)S_h${zUCLCi_j-ykols`3>N<@2V!reAD3QcV}@P9-=Mtl>bz7|tK=8Pf3 z&6;7#u*l5F%u{9_Yg;@KP%~8dFHyeMeGcCo!_ciwGdS9MOli~OfHLsK^is3ZWZ%m9 z=3rU&KNygL8l>)7)|HKlx}Q?v?~Gjwrh#p_>VR|Xo1$AOUqkE{rNXuir`lA18Q-E37UHAsP+mNb4fJ#_Uu3Mb{F6%pXTy2JXp40eF^IHIj84BhzM zlSL75-7y1QyA@lcpzh=;k{&s17_XAh>o$5S#BNE=lF zmo{TZUOv4K++g<=J;oSa)(^t{i})IRJ{_ex*W@%zg-eai9%GDh-d(Ds9(7dqPD8;T zvhg?$b!;Wv5s(po2%4?cB%lgN5A_YkB9?ZlCKGw<$~>;Oa7RFCh{k`XQh8&rcX;KT zhTYn-*7_J2W5y^wau4@p|C7-aR3UYbYQ%Mxt!Qq3N`>Dmb}5)< z4SvW0*W7o-btCE>Tm~tyOpp`dSvIAb1R>KLEgskV*fKE(7&V z?}|6#E6Bl$o#SXVv`K%qW0JSmb*WTY(jY4trP@ZRm(sPW#4h##X=$@`8?+EsYjd)t z@1ovIN8^fIv^)Yj@K#v84{pUw2e^JjG*tzE$#;uv;N*@77*Y3viDM($-n#m;n z<#1KJ>+7en7t88e?`ua&2DNAHk^H{%+Q2^GVeZ%mgt0jNui1Ye0010xoX^=GzJea+ z`HfggvpA|sW-V&1w0;XYBQ;C4QT{KQJmOyVjezN@>VGDlVlM}TdB@E%<6dghqmn!L z;9ZMwc51kCi1;?PivW54Qrf6#I9aV^5e5JN000000000000000cpKj{MfaK&emA24 P000017_XLqLG;whO4q>ZY8 zOPkSTwxX^@qSQf;GTrF5+-v5P%GTG}k#1}%iu+MI0Z zyQo{~Xk3wtmPbGb-U_St!L69-0N0O*rmEmC`EHR7oZJxs0Av8=9jTRT!3Pm>Yn*DzP0Kh@V`JDaXE9haK z--x9&i=(P!)}q!*>$i|IQnOSW<^Q6|J?>@S2$-&_{%7JT_Hsa&cib!++)HhGRB{I& zylWB8P7PNM5#Ppk5g^ZBs>e5*zY17{0RR91000000000000019&NpLh`Y|w6G4lWb N002ovPDHLkV1kJp_w4`x diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.65.png b/test-integration/snapshots/signTransactionRecordobt/nanox.65.png index 53a92bd8e3a256f4a1c8afb8eb128d55818ffe26..2abe5bd22134872dcd5e55eb8d60fa68d17c4be3 100644 GIT binary patch delta 52 zcmdnXyq9@{HX~cezJ!!TCng&*W-FeZB*Xv#yZ$mZ71np`D%iOQB;e`l=d#Wzp$P!j CQW1^- delta 52 zcmdnXyq9@{HY3}W{RvB$PEIyt%vRhwNr(XgcKv0n|6Skl&{Fd*NWjz8&t;ucLK6Vs CBoVp* diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.69.png b/test-integration/snapshots/signTransactionRecordobt/nanox.69.png index 1649b937bf81d0fdff9ab12ba8524ff13e33b9a2..807849bb1bb2337615a1a44acb6539c86dcbd3cd 100644 GIT binary patch delta 36 rcmX@hbe3ttC)OPABPX*bes>Zn`@L>c*Iczf3_#%N>gTe~DWM4fJZulY delta 36 rcmX@hbe3ttC)ShGI&RLM_}xjQq;=gU1gTe~DWM4fHxCZy diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.70.png b/test-integration/snapshots/signTransactionRecordobt/nanox.70.png index 4bd0b0eaa958bff396380e4c9b2122d3b82439bb..00e1084afa656e00bf4d80ae79ebf323b3c25927 100644 GIT binary patch delta 48 zcmbQwJfC?(3?u*hwyImLdxh65d46hJ=8V~svl$gc-u>1(|KR40UIrlWboFyt=akR{ E05Lcf_W%F@ delta 48 zcmbQwJfC?(3?sjM>#Xv`_bl2kcW#nZojhrBHlu=w4YO_gTe~DWM4f DqMHyp diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.72.png b/test-integration/snapshots/signTransactionRecordobt/nanox.72.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.73.png b/test-integration/snapshots/signTransactionRecordobt/nanox.73.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.74.png b/test-integration/snapshots/signTransactionRecordobt/nanox.74.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRecordobt/nanox.75.png b/test-integration/snapshots/signTransactionRecordobt/nanox.75.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=ix z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.04.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.05.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1gMA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.09.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.13.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.14.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.14.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.15.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.15.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.18.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.20.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.20.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.24.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.25.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.25.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.26.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.26.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.29.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.30.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.30.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.32.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.32.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.36.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.36.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.37.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.37.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.38.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.38.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.41.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.42.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.43.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.43.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.45.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.45.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.49.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.49.png new file mode 100644 index 0000000000000000000000000000000000000000..c61bb2168117ec609be242a3bea6fc33d72ce66e GIT binary patch literal 533 zcmV+w0_y#VP)x z0jb=N+qT)=j1EunvpNAU^$UIsgBXvabJ=oqOOZzIdvyYTh`oF~JofKlZ!fpStM>LX z;64V^a&HuC0Cr-xUYgwN&cWA)h*MDTT{c#rBcPn1#oX-=Qg;qG?UVuyz^zAUxC=iJ_;+jh> zYnMU9wi?9WEfDnxFgALgH6{u>LeG1RHRT9UzbTVGz$0ck!;}H2Cz&+uunj#MI7}?Y zl{5RmfHCi@G`ndLzIr>*+28Kwp9%Zl3(`~8hH&=--i84H08Fs9$kpk#JXwTwx1H&C zU5K4k9POT>MJ;OD56=>?3$C7o>sqPjGp@fz>nS&?jb}d+J$ql{wF5JmQ7avG1awmO zntB7EC+1XbMXKIfkXra`j#G!-H`IGFccxbpzr1VCF!UlU>Z!xat3A|T#y4cxdjuHE zkv}bC{j?Y1tLdGEYKT87!*>~SY2rLVa0)#Iy+Oo3XarZUObe3%00000000000D}7k X4(rw94b7)500000NkvXXu0mjfl*Q=N literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.50.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.50.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.51.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.51.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpVJ%=P)QwWIm`<|5Qk4+$fIEDZK0000mou8SVZQHgV#29NW z{ra6!E+TgR=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC z#22Ar;_`Y$ZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q};) z9?e3lpgm{S9OD>yeAm9uNA${RsyNkYP#D2lN%#v{CN)Csbp28cUxt>$u+21WIu^f*`-7vgrjXresbaYyK6mzf z;^{b@@NSy&R1{IBpsrvMH`2HdNJDc^sP)ou#Ar&d!Ty|$*zx+M-;uSqH{~_`49@{x zBc)mA*Z?=1tY1N)aRwO8k?sD|mxaDM&19O!rz&4|f=11t_E|My)zlfnxzGW%VR{IoWp%;%5y#44eV> zLZc^tH~;_u000000000000006@(+*09Y%L6meK$K N002ovPDHLkV1g|2;e8Iq)I6z=S&;fO6V$S<%+OAw?#~C~bTQRetX*TEeCty^-m%dDlp9^gD12Rqbao7oR();x>c%Tw9O?QiABX{IqNy)@ z(NpDM*YueIpj0RRAp zY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7svlN$tqIW^;Y<)40p4u7SMkor2%bILN zX`mk|uS@N)`t*UmvO2nO2A>ts&YBsw=wgRn52OvJ?ai?VvF^@ii)hIaor>_9iQCTT zr}(S@V|R4~G7&Hy8kMx5T zFpO!#3JrhJZ?tbQsFd5;Wcz5?ampV+mIq-k&G~N~z-i}zKZoa)WOoe<0000000000 h00000000000KZM?E_SE@KZ^hW002ovPDHLkV1kEf3poG) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.54.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.54.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd74af98c7614831157139e1b5366c9fb105fcc GIT binary patch literal 578 zcmV-I0=@l-P)HOBgJ1+n>-jvf|v>K25gIYPQAE2E;FPA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxF zgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfUSJ+U&>QQJ|grgw*PP`mJt7(rooHGCb zz*Ix!rIk7JBg)geqZS*K`iJg@mi3TA~(ooARNMVLndb%$gDnDcEJZw2O zrBYP|g&t+r$zlO9-S*=mJ?vMq+zNzz>*+0lh4+BgrgT{8*^F>0)d$*JE@CrCYSe0z zvMfbdg*7MPaYVjUoA@#B0m9{|?)q(lXr*U{?yJy}Zt!Gh-oE|>8swg5=%c8H9tJ`9 z9?{twO#lFRFx_-QaiLczcY^CI=nb)MNftCJD~{xwmf?Sf~-_2*VC#^f^A8v#B~rpPF1{PYk3M*d4RmE zD2Z=Gxv|pOT_bkkh<|fDJ_rLE96^V{1^@s6000000000000000000*92eM@o6C16n Q_W%F@07*qoM6N<$g8bV2;Q#;t literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.55.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.55.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4b280f8593c480c83fb9838f709d74d142f7 GIT binary patch literal 569 zcmV-90>=G`P)oG%*jg2qlD=(Yg>0000?=Vw|^-uqB+&edxA z_4}o)bd-GNbTa`%E6(Hs19MXmS^a3jzQz%ZBQcHd`g_ zGeM`5OL7%jl1X0e(AJs)j?n2r7>^0p%z~^EVMld}dlGrMX!zui)nCEV06l}t^FsYP z3B`Ne)Ja`jlkCKWLvLf(`iF+e8C3dEa;wmQZ3absn7 zlM~bc00026BJu`(=gMIIdq+>(6TaPSUAqu#zPK5dImrU2m_cl=hU8RbO+neLc_GD? zMZrTqdy&)Pxd+e`n))Xy^}eX57fp{!$JLdJQ1-D@#>Q|k#RswI0|a_=LA5u(^ET_C z8M9s|mkotxZYp3Lg!cs5YBzlv$)^v+FCk(M`~%LV5^Fig9(|3V&~Lt9pZC(dal!{6 z!-KF@%l@+-z|+Z1Lj5wG4600000NkvXX Hu0mjfD5U~Q literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.56.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.56.png new file mode 100644 index 0000000000000000000000000000000000000000..19b3df1d41af447337411ff8813406fb24a43679 GIT binary patch literal 601 zcmV-f0;c_mP)zY{Dl8MiNDMtYJ>ng4tvy9CqffL<9NYQoC5#=003Cd&&tU{2v@^S-QlDIk2%#~3@G5_P|l4GKvAWZI4nWcDs}#_F+b3&PFM zY=bZA89bYVvY;zwN{Siid8FKTrR#qaRjo9H%IucK!B*m|ApC_KL$0^`&=Vy7IXTv`fAYY)3gsb|WVENIk&X1PU? zoK`@i1!R}bY*mt7W($ayQsuSL;6j43%JOoa9D9$^0(6-c`Id%`W&!CV(Bn7zaEM00000NkvXXu0mjfFwYRj literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.57.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.57.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanosp.59.png b/test-integration/snapshots/signTransactionRemaddress/nanosp.59.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV z4H2iH;Ja+BKu171L5sQDALQIQ;IvZ;GyuDDeix1TL$s(7{>^C;00017a$$8YE=HB9 z_H1aP{IW0;Cwl;9yRQ@>Dv_e>tky3@e^DS3al|#3TGlRuh;229zgr;c5nyceJZnr8 zc7&ey8f(fCpng*(eSk;Ia)v2?18|;X(zL@i^lacTu^3m*>;nVFysy&irbYPb?LcRL zyPJO|?0+vvPgxtn-4A#h1^@ss!P+8Mr`z&m5!T&yrr&iTR;xJLJw=OJ)U+Sg60i%d zo`lb}QqN~xe~s2tZd4mWy;`V-_@gp> zmm!xX&JzTu&{NPGMErwBaFJIg000000000003e!QJc83q6TxFP00000NkvXXu0mjf DTPe7P delta 412 zcmV;N0b~A>1eFAkBp%#JL_t(|obB6Na)U4oKvB2Tov{BUc`yB7!nm@~kwRjB>(0T~ zhKN&8@Le`mpd+B1pvBzn4^npyIPH`I4ZyCP-$i5o5G`tie{-4y0001&Tv(lpi&14d zdp0ytep#4_lRW^l-B*ebl}J%`R_m9dzbFuiIO3X1Eo+xS#I_p5-z^aJ2rxE!o;4;4 zJ3`NUjWy*6P`@dYKENYpIm48H0jMXLH0`hrJsUVoEXI{H`@n!P@2fPsX%W79JJ8wR z?&hBf``-)FQ`UxX_XFOB0RR9@u(rt6>9#ysgmt%_>33a-omCv|o}xu9YT6Ia60i%d zo`maKspm7UzeejRH>!79jYh(9XB zcNubN;ygic3OxnALBv031Xr(23zGo=0000000000g8Kyy>(%28&8IB@0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.06.png b/test-integration/snapshots/signTransactionRemaddress/nanox.06.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.08.png b/test-integration/snapshots/signTransactionRemaddress/nanox.08.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.09.png b/test-integration/snapshots/signTransactionRemaddress/nanox.09.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.10.png b/test-integration/snapshots/signTransactionRemaddress/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.11.png b/test-integration/snapshots/signTransactionRemaddress/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV z4H2iH;Ja+BKu171L5sQDALQIQ;IvZ;GyuDDeix1TL$s(7{>^C;00017a$$8YE=HB9 z_H1aP{IW0;Cwl;9yRQ@>Dv_e>tky3@e^DS3al|#3TGlRuh;229zgr;c5nyceJZnr8 zc7&ey8f(fCpng*(eSk;Ia)v2?18|;X(zL@i^lacTu^3m*>;nVFysy&irbYPb?LcRL zyPJO|?0+vvPgxtn-4A#h1^@ss!P+8Mr`z&m5!T&yrr&iTR;xJLJw=OJ)U+Sg60i%d zo`lb}QqN~xe~s2tZd4mWy;`V-_@gp> zmm!xX&JzTu&{NPGMErwBaFJIg000000000003e!QJc83q6TxFP00000NkvXXu0mjf DTPe7P delta 412 zcmV;N0b~A>1eFAkBp%#JL_t(|obB6Na)U4oKvB2Tov{BUc`yB7!nm@~kwRjB>(0T~ zhKN&8@Le`mpd+B1pvBzn4^npyIPH`I4ZyCP-$i5o5G`tie{-4y0001&Tv(lpi&14d zdp0ytep#4_lRW^l-B*ebl}J%`R_m9dzbFuiIO3X1Eo+xS#I_p5-z^aJ2rxE!o;4;4 zJ3`NUjWy*6P`@dYKENYpIm48H0jMXLH0`hrJsUVoEXI{H`@n!P@2fPsX%W79JJ8wR z?&hBf``-)FQ`UxX_XFOB0RR9@u(rt6>9#ysgmt%_>33a-omCv|o}xu9YT6Ia60i%d zo`maKspm7UzeejRH>!79jYh(9XB zcNubN;ygic3OxnALBv031Xr(23zGo=0000000000g8Kyy>(%28&8IB@0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.16.png b/test-integration/snapshots/signTransactionRemaddress/nanox.16.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.17.png b/test-integration/snapshots/signTransactionRemaddress/nanox.17.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.19.png b/test-integration/snapshots/signTransactionRemaddress/nanox.19.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.20.png b/test-integration/snapshots/signTransactionRemaddress/nanox.20.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.21.png b/test-integration/snapshots/signTransactionRemaddress/nanox.21.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.22.png b/test-integration/snapshots/signTransactionRemaddress/nanox.22.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV z4H2iH;Ja+BKu171L5sQDALQIQ;IvZ;GyuDDeix1TL$s(7{>^C;00017a$$8YE=HB9 z_H1aP{IW0;Cwl;9yRQ@>Dv_e>tky3@e^DS3al|#3TGlRuh;229zgr;c5nyceJZnr8 zc7&ey8f(fCpng*(eSk;Ia)v2?18|;X(zL@i^lacTu^3m*>;nVFysy&irbYPb?LcRL zyPJO|?0+vvPgxtn-4A#h1^@ss!P+8Mr`z&m5!T&yrr&iTR;xJLJw=OJ)U+Sg60i%d zo`lb}QqN~xe~s2tZd4mWy;`V-_@gp> zmm!xX&JzTu&{NPGMErwBaFJIg000000000003e!QJc83q6TxFP00000NkvXXu0mjf DTPe7P delta 412 zcmV;N0b~A>1eFAkBp%#JL_t(|obB6Na)U4oKvB2Tov{BUc`yB7!nm@~kwRjB>(0T~ zhKN&8@Le`mpd+B1pvBzn4^npyIPH`I4ZyCP-$i5o5G`tie{-4y0001&Tv(lpi&14d zdp0ytep#4_lRW^l-B*ebl}J%`R_m9dzbFuiIO3X1Eo+xS#I_p5-z^aJ2rxE!o;4;4 zJ3`NUjWy*6P`@dYKENYpIm48H0jMXLH0`hrJsUVoEXI{H`@n!P@2fPsX%W79JJ8wR z?&hBf``-)FQ`UxX_XFOB0RR9@u(rt6>9#ysgmt%_>33a-omCv|o}xu9YT6Ia60i%d zo`maKspm7UzeejRH>!79jYh(9XB zcNubN;ygic3OxnALBv031Xr(23zGo=0000000000g8Kyy>(%28&8IB@0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.27.png b/test-integration/snapshots/signTransactionRemaddress/nanox.27.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.28.png b/test-integration/snapshots/signTransactionRemaddress/nanox.28.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.29.png b/test-integration/snapshots/signTransactionRemaddress/nanox.29.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.31.png b/test-integration/snapshots/signTransactionRemaddress/nanox.31.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.32.png b/test-integration/snapshots/signTransactionRemaddress/nanox.32.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.33.png b/test-integration/snapshots/signTransactionRemaddress/nanox.33.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.34.png b/test-integration/snapshots/signTransactionRemaddress/nanox.34.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV z4H2iH;Ja+BKu171L5sQDALQIQ;IvZ;GyuDDeix1TL$s(7{>^C;00017a$$8YE=HB9 z_H1aP{IW0;Cwl;9yRQ@>Dv_e>tky3@e^DS3al|#3TGlRuh;229zgr;c5nyceJZnr8 zc7&ey8f(fCpng*(eSk;Ia)v2?18|;X(zL@i^lacTu^3m*>;nVFysy&irbYPb?LcRL zyPJO|?0+vvPgxtn-4A#h1^@ss!P+8Mr`z&m5!T&yrr&iTR;xJLJw=OJ)U+Sg60i%d zo`lb}QqN~xe~s2tZd4mWy;`V-_@gp> zmm!xX&JzTu&{NPGMErwBaFJIg000000000003e!QJc83q6TxFP00000NkvXXu0mjf DTPe7P delta 412 zcmV;N0b~A>1eFAkBp%#JL_t(|obB6Na)U4oKvB2Tov{BUc`yB7!nm@~kwRjB>(0T~ zhKN&8@Le`mpd+B1pvBzn4^npyIPH`I4ZyCP-$i5o5G`tie{-4y0001&Tv(lpi&14d zdp0ytep#4_lRW^l-B*ebl}J%`R_m9dzbFuiIO3X1Eo+xS#I_p5-z^aJ2rxE!o;4;4 zJ3`NUjWy*6P`@dYKENYpIm48H0jMXLH0`hrJsUVoEXI{H`@n!P@2fPsX%W79JJ8wR z?&hBf``-)FQ`UxX_XFOB0RR9@u(rt6>9#ysgmt%_>33a-omCv|o}xu9YT6Ia60i%d zo`maKspm7UzeejRH>!79jYh(9XB zcNubN;ygic3OxnALBv031Xr(23zGo=0000000000g8Kyy>(%28&8IB@0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.39.png b/test-integration/snapshots/signTransactionRemaddress/nanox.39.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.40.png b/test-integration/snapshots/signTransactionRemaddress/nanox.40.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.41.png b/test-integration/snapshots/signTransactionRemaddress/nanox.41.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.42.png b/test-integration/snapshots/signTransactionRemaddress/nanox.42.png index 85bc4b280f8593c480c83fb9838f709d74d142f7..8325832e317095ce39626c195a6adf9bfbcf3090 100644 GIT binary patch delta 542 zcmV+(0^$9+1hxc_BYy$?NklP!;=?c+urn; zHK~XZ5%Q)Ci2*W6Rv_L)wAE9TkA;=ZO-@h)0002Mj>sGIohyU+=Z>DXCw#lvx^^Mf zJh&N_ImrU2m_cl=hU8RbO@mTQa{{$iDGx+5%sHYW8i%Q4U zm5NZdu~o*#urtL6vFHN?dUHXwli#__K4|)^*ORLag=TIlU>t delta 545 zcmV++0^a?$1i1u|BYy$_NkloG%*j zg2qlD=(Yg>0000?=Vw|^-uqB+&edxA_4}o)bd-GNbTa`%E6(Hs19K^Tt-*UW;f z5@APmihB}yxqoQ*1+_OVpP#&9sj2eIe_1bTBpwKu=>HtV1nvtB2c4TWZIDqtLh_XOE$H+>q(rw_$1 zAz}{v1J0!qYdOdseT|^dZ@yoj_tLy^!UrJ3gRoW0{<9vy)7AmE!+t~NwcZ~900000 j0000002%-Q0CN5S>Z1Lj5wG4600000NkvXXu0mjfVTAy~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.44.png b/test-integration/snapshots/signTransactionRemaddress/nanox.44.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.45.png b/test-integration/snapshots/signTransactionRemaddress/nanox.45.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.46.png b/test-integration/snapshots/signTransactionRemaddress/nanox.46.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.47.png b/test-integration/snapshots/signTransactionRemaddress/nanox.47.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV z4H2iH;Ja+BKu171L5sQDALQIQ;IvZ;GyuDDeix1TL$s(7{>^C;00017a$$8YE=HB9 z_H1aP{IW0;Cwl;9yRQ@>Dv_e>tky3@e^DS3al|#3TGlRuh;229zgr;c5nyceJZnr8 zc7&ey8f(fCpng*(eSk;Ia)v2?18|;X(zL@i^lacTu^3m*>;nVFysy&irbYPb?LcRL zyPJO|?0+vvPgxtn-4A#h1^@ss!P+8Mr`z&m5!T&yrr&iTR;xJLJw=OJ)U+Sg60i%d zo`lb}QqN~xe~s2tZd4mWy;`V-_@gp> zmm!xX&JzTu&{NPGMErwBaFJIg000000000003e!QJc83q6TxFP00000NkvXXu0mjf DTPe7P delta 412 zcmV;N0b~A>1eFAkBp%#JL_t(|obB6Na)U4oKvB2Tov{BUc`yB7!nm@~kwRjB>(0T~ zhKN&8@Le`mpd+B1pvBzn4^npyIPH`I4ZyCP-$i5o5G`tie{-4y0001&Tv(lpi&14d zdp0ytep#4_lRW^l-B*ebl}J%`R_m9dzbFuiIO3X1Eo+xS#I_p5-z^aJ2rxE!o;4;4 zJ3`NUjWy*6P`@dYKENYpIm48H0jMXLH0`hrJsUVoEXI{H`@n!P@2fPsX%W79JJ8wR z?&hBf``-)FQ`UxX_XFOB0RR9@u(rt6>9#ysgmt%_>33a-omCv|o}xu9YT6Ia60i%d zo`maKspm7UzeejRH>!79jYh(9XB zcNubN;ygic3OxnALBv031Xr(23zGo=0000000000g8Kyy>(%28&8IB@0000&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.52.png b/test-integration/snapshots/signTransactionRemaddress/nanox.52.png index 07574cbb01e09810825a5cd6c0a52b6c772c8daa..335e8e7998be7220a04ef4b7666f9275e5f11e2a 100644 GIT binary patch delta 515 zcmV+e0{s2I1iS>0Bmo1FB_n_04^4nT976yA0001(&da;5ONPMZ*)3hzFfZ~YL$@BAhe;)_r*aamtc z+kK!smHm1&J(IN@u)Wah7z=N~1rA6@S-ApC7>1L>tj=XYxOvPrtVMr4l}EGCE@+RL zHODxvJidG1=OcRMG*q1GED|=>3c_E=LQBwS^d$}e;0tNVhT4-ep_1Mip(CE@O#kP0 zD4V(RRtb8JIv>?vis9SPau~LmrcKA<*YbRj7S4bOFl((XY zelAlKEaFBQ&jIPu+_Qhwdg(Y~G^N*If6hVdc>U7v$lBYRvQ9t4V}RF4Y1TOoz|AJ> zS5Ro20Y-CVr~mY2p|4IenWnK<<;zacs2S8gtHy0_$cA3bbAqr)e^~Yk>;M2DAZ{@F zkN6hx62^!VsEY8RA_GBM#J9>>I#r(UhrklrOx@T1$+5fgWf4Tbi#sHYW6i-Q)f z+n)m*?IKQ*Y__=%|Jyqt*pioaol{(9002ovPDHLk FV1k-i^LYRO delta 518 zcmV+h0{Q*C1iu83BmoAIB_n_8k4+$fIEDZK0000mou8SVZQHgV#29NW{ra6!E+TgR z=5#ZMeybe=Vj9;tVB5ABWBG5>mU5P)?MmZuoOU7J72bU|-})hh-}zlC#22Ar;_`Y$ zZTEq4SN7}C^-R`s!1hAF#@KiZE^t6P%E|~ZVHi$MvpSb0;pQ>h5Q~3$E*{N7tDrq+ z)*Ry)d3@Kt&qwsiX{tEYX;2u!T1of|SttaJrVMd}AOQGsTB@P;;!LQNcSh)ldpgtq zxgFVJuJ%(nTk1LLe02R%3}1$p!?4XXZ8{deiu;43v8IsSXsKekAwGBZeB$Xio$zj& z@>CR2rl7815jWDf4@iGQb5E%C(s9ISO0U8GoQ>G=`la8IwYN9rHT?|F0bV1eS?AaQ zH=C?qL7{O57|oIG{?nI*zBjl#kYvB!0M}@$7jD$tDtn0i3J~VJ0_Mq^~-7<>5n7|esp@eI%1)*q0t_TdU~<+ zI4E%4ejngy7jcSYv(0_@-`)YiR=l+9l(PGQV*x5<^(1^b*>?=$XAM0JoB{Siqb0v7 z1;|WOw9%>Il&?8%pM*hy5Ogs(000000000000000000K^50AqgMt3Wg(f|Me07*qo IM6N<$f*YIq2mk;8 diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.53.png b/test-integration/snapshots/signTransactionRemaddress/nanox.53.png index 5ebc4ffd655f7c2be2239ee2643ab2d894c49c1b..24d423188a0b5253bb1cd55d4e856aec2dd8f28d 100644 GIT binary patch delta 568 zcmV-80>}N+1knVLB!3u5L_t(|ob8)ia>XDBhHdBU#QiVHz4Rdy$B~O9BC$FD_mof$ z-a#=<2><{9004k+e!@yBr5q1AXGt<|f5wz=eT@8um9(0i^L+0g7V1a@@ChraQcB4= z(?+%ux=LEPBCOAC5mL9d0~R^!TQ*t&`6LNlO!XCO#~3KTdVi|NJ2o1Ca-!=Pg}3XF z-W>y^RbN}ay75XEN4oyX12G^?H1&orx~d%Pnw}W|$`LcAfpPRa(q6O5wt?F15qz(+B#>>gd85d{#g^Yi8V{iyeAB zkT#sQC$Bw-b$32nL`#n7RD{<|+;&D^#b*T=yQ9kowAY7@c4#=I*OQ%uD(FR9DhU7p z00019g?>Rlxkp_6-4W$&cf#AAcqOa{G4@#B3A+T2bbm5pk35on>6uzEstp^$YO)3| zz0RU%0hM&)FcYcRzag~yqM1@GB^n*qR4T$)##U!{$I7r1k@W!zv$-J42lc!8Wv_n% z=-Sn#q-ds##W@JqG}&&Q9tKT=>mz+(1q@@_utLKx`i=H225Y&>l|8MYE|e6agRqz8 z{I6cX+cC}o{|?V9NomOg00000000000000000000zLq~+KPz_P8g2Ff0000%B&1k(hNB!3!7L_t(|ob8)ia>F1DMQNuyVgE~FFa7YCVbBBF2!+ynzHCJi zZwW+_5&!@I0002te1(-%O1U0#&XQ!_{){Q#`WX2RD`_=3=lR~hEYy(*;3ur4N+~7h zOdHus=qhRDim*PnMM&M+4p`)@Z`o)Cwi-{-m%dDlp9^gD12Rq zbao7oR();x>c%Tw9O?QiABX{IqNy)@(NpDM*YueIpj0RRApY^Xh5lZ1qiubm|CHGPq?9no~#JL#h|+Wf7s zvlN$tqIW^;Y=3<*kDl5Y-bN@2iOZU7L}{QODX&ZIu=@0YzOp*Ha0Z_h(9W6}x9DPr zUJs-Vr|r$L2eIzXXNzdb5uJ+gnu*)a=%@Is0AqJ_`GEHN(9sSJr}TQVlTZb{XiFsl z00000z)|QI^pkr;$J>7+r`-u}d*YR_9>myVeJAV^IDgW~h&}R1_N8ZP!KgND2&>5& zeDpeto&{9Wjl)c&V*iEE?u%whv6N_ZTvMqCV;NhW-5o2#PDIuRD9q-9EI+8<%`bcX z37~6Nmy)8HE*9q?T+?K`b$S>y4X%&$gB380X~PN)f6;HWZ!xHp+u3CMXxMSeA3&A| zVK2@3Z!;ahY3G1Hhv$`KcMS^w00000000000000000000zfI{bcBlY9ivR!s07*qo IM6N<$f(}Rt{r~^~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.54.png b/test-integration/snapshots/signTransactionRemaddress/nanox.54.png index 9dd74af98c7614831157139e1b5366c9fb105fcc..997b97fb5a3d0a3f9e7fddfde20a30f3fca8759a 100644 GIT binary patch delta 549 zcmV+=0^0q;1il22B!2}-L_t(|ob8!Wa>O7AhSN@OlKUUYyY#_X>qG>CsHFM7C*rzj z6a>j}00000006L@uVo{pl(KN1XRl>kzgbn8jMsdW{45)3HiN5Hn?*`#*&b}zfc$#3 z#g+CVw_Z}WGmS;AhamrTthMwW-@7O9$NAytEOFbP(blu#(tp_gnr&ay>`R~xNFVq< z%0>gd?Vrl(4XBN)mW%1lw!ZZ?&a)>7n@!Ac7L9aXK$I*f$IRZwIG#Mc+;>+R8Xa<1 z#84sXS$WFy1Pa3MB+3yq8~%s`0DyNQR73Tpn1jvaX6qsA3btBBESS`-ePlwMmmZA< zB|!qRXBK2ILw_$lJ_HmLP@h?Sg1xCL0>n%Y< z_JG!=Y2ijXMVk2m3)Mk_NEJb*QwIJcKN4ZqH__6E(%H_D+_1gr|OV0@8 zr_dTQc#1P`KYs!Xde3w8QB*@WgCKm56zq#8002A~GJl;gT<8tTgAh6kdPA(6k_Gk3 ziaq(#v)03R6YG~`Pg3En$LR3oNqwXKEE*X_Gvd61>)H1J$8{lHge?90^6U*bbfrqY zo>pxZd`nU_p@Z;tF2y^smSL_t(|ob8)!lEWYfhTWasB=EOqX*H9pR+>eOaoZjo*nsr& zN{h?wS#G_gY$qDCTn^FwR@iIlBYsa$;GgSD7%XwypU^h4;(y%OK25gIYPQAE2E;FP zA7P_{(e^K8_Xd>4Rm$1)R$JeG8>cxFgw-adIE!XFZ@^0ylw#&+V+>E8QSN&x4fRfU zSJ+U&>QQJ|grgw*PP`mJt7(rooHGCbz*Ix!rIk7JBg)geqZS*K`iJg@m zi3TA~(ooARNPl65R(iTG8!A6z>pW~ZHlDi2MDb)wsTP|WVNNUt-ld>#DScNqw;c-O1RGauQ?*YQ)sP6i0f@q~@ zhVHA-l5X&1XWqX41RCU?XXvA-h8_k%_#V;O8%+QJcz-b6bV6~VS15Oa>n!LEv2IBg zG%72O<>hwjGKFS|Xv3U7V%4qcv3 zR4Lcfs!f7zNvgzk5I#;-ykl#53RZc5ysRjRZ$!DV(%D@jcHxMBb38r>0~#DbhrtE_ r0000003rYY000000000002cBGvSkw!8?CDM00000NkvXXu0mjfKSBF( diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.55.png b/test-integration/snapshots/signTransactionRemaddress/nanox.55.png index 85bc4b280f8593c480c83fb9838f709d74d142f7..8325832e317095ce39626c195a6adf9bfbcf3090 100644 GIT binary patch delta 542 zcmV+(0^$9+1hxc_BYy$?NklP!;=?c+urn; zHK~XZ5%Q)Ci2*W6Rv_L)wAE9TkA;=ZO-@h)0002Mj>sGIohyU+=Z>DXCw#lvx^^Mf zJh&N_ImrU2m_cl=hU8RbO@mTQa{{$iDGx+5%sHYW8i%Q4U zm5NZdu~o*#urtL6vFHN?dUHXwli#__K4|)^*ORLag=TIlU>t delta 545 zcmV++0^a?$1i1u|BYy$_NkloG%*j zg2qlD=(Yg>0000?=Vw|^-uqB+&edxA_4}o)bd-GNbTa`%E6(Hs19K^Tt-*UW;f z5@APmihB}yxqoQ*1+_OVpP#&9sj2eIe_1bTBpwKu=>HtV1nvtB2c4TWZIDqtLh_XOE$H+>q(rw_$1 zAz}{v1J0!qYdOdseT|^dZ@yoj_tLy^!UrJ3gRoW0{<9vy)7AmE!+t~NwcZ~900000 j0000002%-Q0CN5S>Z1Lj5wG4600000NkvXXu0mjfVTAy~ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.56.png b/test-integration/snapshots/signTransactionRemaddress/nanox.56.png index 19b3df1d41af447337411ff8813406fb24a43679..de6400e655ebf4c31ddd14a98f2c0a6cff102605 100644 GIT binary patch delta 569 zcmV-90>=H>1kwbMB!3x6L_t(|ob8)Sj>8}fK$%f*!u^lLU1kv#A;6ByKhyVCK*10k z+u*3q0RR9104(QcE@* z$8u>UX}i)G%jp!=QEvHmm;COXKEuCp!WNhP6=|0alu^}RLw^XRp5}3u0>T@;kFoJn zqV89+K>_JQrse2BX7560tRBm@Al&@UHu$2R&a*k_6m-Q*NihRGk9783>H42URVxjl zG8=NpcApi5zmS7m&}?)U2LSMeh}lqk2F9s*#7;R%y0jFM<{qTmmXx134&}sFR+Y#$ zLypv9ndr12Jb&gCH0njO3{fPf8PI3}S=E`XO0vsr0kJA&UK4&AC0`BBrQqSvZxx=kzaTOe$hjWUE^JfrplO zsqSB!W&y@+&93F`pr9qCjm^~^foK0^8V6MtH;oAM~5CmXt%2L$2MuzNEA z0MMwOB|g2)w+TOlqfbHK5a_0yf~1_HRL**)a`bMu$;)cbs=$w`r&G--HZAyz1la_TB!3`DL_t(|ob8)Qj>I4g0GZMJg#SN@zsw4YLK8#d zc)?Me0{{R309ek?%E>|qSHpWR_4Lbc78MsWYCRVI)=aa8A-lG0>o4{wAcWw(PoKEh zAKRssr2R@~Y^PIH?{dqxyX1H8^cntx6SlYS-QlDIk2%#~3@G z5_P|l4GKvAWZI4nWcDs}#_F+b3&PFMY=bZA89bYVvY;zwN{Siid8FKTrR#qaRjo9H z%IucK!B*m|ApC_KL$0^`&=Vy7IXTv`fAYY)38`nwm@H`2gJ!u!k(^dQqXlG_&TLhZU1kf2mr~`m(cnUYvdZ#u zo*a9R(E@at7WtNjj%ESrBhceF`{hVCu1V^RTiNE^UT_do)V3^~O7C;}7c-_5F)FfE zt^UBIB_68#*QQy3aa*$^e)>kRUru^^DcO#cl}aPC!GE`Zp?v)bE!a(Yl+jZS-OLMu z@M+k+82|uiRC9@^r};MFhj4Tj^bLV-N){y56s2}HGL@qbyDeT;M^*(sx;&j~O|hZV z?u&Y6vCKHnalQK-FmPXP%TSZ5QtwuPv(+i>a!RpRqo)j|b94~iPWBN)^_zxHW?6u} zrf7+8N;$1DlUd!P+l^B`<#>G%1|3|`W>5eC000000000000000OynOEVkbe+9Rbk* O0000eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.59.png b/test-integration/snapshots/signTransactionRemaddress/nanox.59.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.60.png b/test-integration/snapshots/signTransactionRemaddress/nanox.60.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemaddress/nanox.61.png b/test-integration/snapshots/signTransactionRemaddress/nanox.61.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=i4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.04.png b/test-integration/snapshots/signTransactionRemnft/nanosp.04.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.05.png b/test-integration/snapshots/signTransactionRemnft/nanosp.05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.12.png b/test-integration/snapshots/signTransactionRemnft/nanosp.12.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.16.png b/test-integration/snapshots/signTransactionRemnft/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be3ad6af216510007ee918b2e28a024ce5996 GIT binary patch literal 466 zcmV;@0WJQCP)4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.17.png b/test-integration/snapshots/signTransactionRemnft/nanosp.17.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.18.png b/test-integration/snapshots/signTransactionRemnft/nanosp.18.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.24.png b/test-integration/snapshots/signTransactionRemnft/nanosp.24.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.25.png b/test-integration/snapshots/signTransactionRemnft/nanosp.25.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.27.png b/test-integration/snapshots/signTransactionRemnft/nanosp.27.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.29.png b/test-integration/snapshots/signTransactionRemnft/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.33.png b/test-integration/snapshots/signTransactionRemnft/nanosp.33.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be3ad6af216510007ee918b2e28a024ce5996 GIT binary patch literal 466 zcmV;@0WJQCP)4iBk0?=F z*ydvr006+2)+OTxvusxO|JW+hGKM{=wQ^7k*ry^yhEgmPHLoe^i^P#=N8Hr)LQEwh zvAW@cP**_b#V7Bo^+#H0T{X|r6`>YxH7U|*r3nz zmY0k-;j_ntgY`c@ecW&p1^@uSYHQYU#xQ6;%`{ilc5w2H2XFpJnbjI)B)`tJA zP57+NKgqn^i1{~$hlU_OT!)|;M4%_;0000000000002|{0+hr|O5?~>mH+?%07*qo IM6N<$f&?npBLDyZ literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.34.png b/test-integration/snapshots/signTransactionRemnft/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd7f062713241ced4aa93d07412ddd29031c7f GIT binary patch literal 950 zcmV;n14;aeP)|b6gb*N1JEbH^k|arzB+2RgtTe8*_Fs?V zc$FN-Ayr^4yvm2RK4%=JYOQ@u+Ll@_pJR0UTuS+Mw`?45hVtfj`*oO)J21E;c}VBA zuema=KX=Qm^g|lf8oLG^*7Rz#ZQTUyfLiO~(xw)qeM9%VnQi)wNUim4*?nxXxVZy% z!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_31*D)0F~b_QJHyR3HcmiW!Y##ve)kRW z%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3);BzYEw8p`UOh}fyfqI#j}PkVM8>`0Ok z;s*UZ>)WCxs@auFke}GfdZF%&WC!e#EipAXge$e6aH!r{xOKf^Us|pDPwg`+%2Eqb zot`ZdK;O*Zut@+3S$Gnl;nOo!A<;+VEPDcCGj-vP3aM}rWha?!@s|yXWu&b=0a43J zQMHuAy#3lI_gPJ;H?>c+8JO(aAYrVBgqm?e3h85{8Wam1Oj;Yiz(xM!>Nu;4?+7YOlv{N4aFfJu|}l(3%%vF z3etU8@lbJ+4wkhqjTi9*x(VwF-{58C1h`qKs8Wf*M?Xvfww=9HR-%`)BgQVqSFoPZ=rk|eo^ Ye--~wqQ925^8f$<07*qoM6N<$f~-2px&QzG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.35.png b/test-integration/snapshots/signTransactionRemnft/nanosp.35.png new file mode 100644 index 0000000000000000000000000000000000000000..f9daa857a29cd5cbac1d90a6571900c4d7f78ecd GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w}ba4!+nDh2#;G|{+o`%F- zo6R5ob3YaP?Vx0vYC!UVtT+E{BeQ2XFl7630(Je^G2J@Ihs(^gXBN&#t=TI5((#3U_Rj?Ca03`)vI0 z&QDuZs=i>cY3`S)hIewySUXNUxpGan=UQ*vo87y8_X?C|zfbN}yZ-$Rm&Ib{W9M!> z-&b3*Yx~BpZZVy$SSve*C#RQoMd5WsGjUqyQ#Y8>#oPrRTr4; zIm=tMkG=iJeao~eS14oy(~Wp$mycU?HDtI7HkNVEsySM-t^F=Tl%x5zb{lpVpV+;tVd+3yMl9E~#k(s?g9 z;DKR@(0Pv|Km!|0w^Xx*zg6mqIg+jJT&lh3b%|A4THMMz$CqA{&8@qAwqiRM|38&K z->yY>{|0dbH$SQc^|fXWq)$Q^;u-5+*EdrS%qA?oZ~)!UYMK=_7se;xh%f6Omo!C6`Oz1eFBPD zD~5ifHwp?2Lmy&|i5LI?0Pq5qNkJ&T6A-EnWLSxVjeZ|6 zebn(ZL!W>cV?F@&TU=kNwj$DYv0I;WbYVx)0001Jr}0%pF>2hMqdDtHxXM}osdu&J zda7T>IkZ~+bJv0jt4>p85|DTCE9GFpE=bFQ3DEizmg#~T!+L7L6#xJL0002Mi~IrB Wo6Oo5%a;BC0000Fa|@Q3jqKC00000|KefYfO#pU<2uG@ z*pd}42cYcwlE-22HvmWPm))&qy707az$DSp?)u%Ulv4Ts(@(nKbq2sp>oxcI`Uk%= zK=if8uFw4Kf&$ynoA`}`7ytkO;8rSFx22~Q!}xwnc3SNB>9P|AZ#V$2Ew!iz(fT7v zeRj<``8UQ`7EuqnY6wXEGSey5$`lPgm9+Hn@s8{9Otq?00l0~q_A@UE|LvIpSD1Uk zjsGX=6cMv+{q?`^0EB9?Us|eFPhD-k5XotKz6ZG9NDQkNr^RRAFavTU#G)it)P4>1 zT3Y6d8?~cV1Q_-C8D7#h=w*B?B*awG<3y%gKP)iM{whVhBHDwZib#d!DRTAj440)DQpw00000@GoxO1NdG_>Ge9s z=s1!yBqyK@eMxZ|^d{gH{W9F$HznM?2k@mT&~kBCl~O9NKlY&n)fE6Yqcm4c|Dd}9 zs#q(AKGVAk3fzWn;u;$<0002M!Nh$)N~x+C=fi3n6=Q7QsoF6A+wnk!IhxOZV$(N?zsK&! zPAHJx)ltoJ1ZZMIy2gCTn6DxWE0up;j&HB8eI{<{_qjl4-HKI{kC&V_b+FubSN7wz zw0SYE^K2^aHFXrGOul)4ldF3Ay!a^Xl37cu5Byp5yqtS88;4>}kk^lez literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.41.png b/test-integration/snapshots/signTransactionRemnft/nanosp.41.png new file mode 100644 index 0000000000000000000000000000000000000000..0816ce82b42ed34e039d72d3e36d3a4ed03ec744 GIT binary patch literal 387 zcmV-}0et?6P)Nkl~X6d8`J16_BEzhr4;uh4<L2002ovPDHLkV1n;GsZjs` literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.42.png b/test-integration/snapshots/signTransactionRemnft/nanosp.42.png new file mode 100644 index 0000000000000000000000000000000000000000..e17bdfa94f5e8966590db18b3229d7fb5553080f GIT binary patch literal 425 zcmV;a0apHrP)hQYW=pk)x;1!y(_RtG<3LjkE)c?{{PHRLx?&8;AZrgM|}KK z+z}w!I%3mT@m4{JW#}RP#zqVP000Q9G`#CFGm2sSeob~Vw)=A4g^UMwz}J>i)QxEW zlBD0e)|C32b8fS!8(lR7q`sM%WLue z{aQ^N7mSM-1hq^j$8|u876dg;=B8*UK~VcrYJCI{1QplypOygt0000008D%X$zRhH T9vk9!%lo-GGZ!pwq=YD-mh$KlW}4S!V#;91Zh~!@uO6 z0V>uRL%+$l3Mwo^gLuY+7ytkO;9%l&fQYD!@wTfTqiU`F5mk z8~ycmX=iHuq=8lm%TgWxlgiy}qkGcuF~$;*bK{aph906a;c zuOb#?J@bCUyUyaQr@I8nxMyTN(=Zb8Dp_y8Y#5$3j(ABh1BUKoJtJhHcUe2&a@I3c z^h@5aqsyfPU$p3#_%q<^Sx;7?00000006*`dIJQ5{$Aj92P6Oh002ovPDHLkV1krH Bx>5iD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.44.png b/test-integration/snapshots/signTransactionRemnft/nanosp.44.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5570e4ad76e405b0ab284b7077def9e571c6fe GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|WK(M-^SI@yZbnAV^mPXZ=4>vJgy0F|P zta(4zh8N2p-t#GWXuFG{cay{J?%m<5W_`2&JzK9Lmr-I_+3e~)e~;#KpGbOZ_+{e$ z1oF%O}kFDOe-Lq#IfB@ zX=k}2k`FH3P2a%Li?JL1u@4ipJymCVC9!_dxKpxz13FFVnx|yCXa$6(12N0dnDu_Z z^ijuZOy7VQV>tlTTijSxr7ZGsb=sym`{6*=0002!xAa#L)nM^(YNjtARcUaIvh35I zD)WYwXMbM5jB7b<=IgEnB{#c~J3A1#)&+ImXEpnDK~C*c0V_9ig`58X-QhYb!%zSK e0000006$-8P~rC*O6s-%0000&HPeNk-3^!|I@(>odzDhE|9{3w7rf2@Y}32VJ>LGo z?+g%q?Xl}Ke@{Vy$IwH3#zqVP003|+Rd%;!q!+{Z|CX#|?Dy%i69o?(fZrvxs2kDt zB}uz?%{lou##k3oH@a#FNPROiDAmgp4ZfA!>Fwo}Pd`A$pFhxTNg4)f`0D_=x5&!@I0002Mx&8o4c+eE?#J;xx O0000?~^z(36zm)KvJ%E!;pylGODy5X4fBa1esu_T3TFYE<`3Kz$ zFtJt){YLL9C~z6Nh-ci00RR916Lh=}NGX|$@wRDhqhgHZH>MqDuhZj|F(2=AU1h1# zd?=6iTRYO@F9Y;i7*^`|bZU3At?o|C$9V{ocWMq>?f$v%1oUGaEknPr1H!-f;$3J*N{W#yz9zDZ?qmn_|8Hu%Ws)toI73Kn7Huu6pkIu}E5|PJmq1 yvqkmo=%7~hY*{@6?yY)q843UZ00000{I4&Qe*0c&hQ_x50000MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionRemnft/nanosp.50.png b/test-integration/snapshots/signTransactionRemnft/nanosp.50.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.06.png b/test-integration/snapshots/signTransactionRemnft/nanox.06.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcCeUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.12.png b/test-integration/snapshots/signTransactionRemnft/nanox.12.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.13.png b/test-integration/snapshots/signTransactionRemnft/nanox.13.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.14.png b/test-integration/snapshots/signTransactionRemnft/nanox.14.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.19.png b/test-integration/snapshots/signTransactionRemnft/nanox.19.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcC3Zu+K)$eTS%CGl0ex9trC@=CgV5`O3_U-ZvK;Y@>=d#Wzp$PzN4-e}A diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.25.png b/test-integration/snapshots/signTransactionRemnft/nanox.25.png index e17bdfa94f5e8966590db18b3229d7fb5553080f..9b9ae3db1fd74acb9240d806e4a07603045de545 100644 GIT binary patch delta 397 zcmV;80doGS1E&L!B!6y6L_t(|obB3C4uc>JfMK@mCfxr>++`0Wh7{SAllkv(`WuxL4jrHCVzfoBL)Bf0JxP3tLvia z#W22KlbMX|KAd+T%0BU-;CsrRlqCI7}4%Ph@}ZZibbd^4lu>LrQ_Upigs zC=M$SnT?)VrTvSiIDf~BQ1l(cl4k!MfG>3>7ZT821-wp`XV81n2ubjHrd>~GT z&3PZ-ej#yMJ%2eF?|s4u$dwS2l9*BT66(3MOcxg_%WOV?N-jO||pOygt0000004Uze)zcKM_6FAg0000i)QxEWlBD0e)|C32b8fS!8(lR7q`sM%1wv92bm>7zDLUC&zU_iWUSlPUfa)C_zyB tQfhq!5Cj$1^`Djj00000002yU1Ib_06doJ*h5!Hn00>D%PDHLkV1g!*vs?fG diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.28.png b/test-integration/snapshots/signTransactionRemnft/nanox.28.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.29.png b/test-integration/snapshots/signTransactionRemnft/nanox.29.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.30.png b/test-integration/snapshots/signTransactionRemnft/nanox.30.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.31.png b/test-integration/snapshots/signTransactionRemnft/nanox.31.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV&w1A?2sv=U>TuJOSd8<{_WgvF6ISe!?xcG7gEXHGgpp2CUiDX4{5I*a5xw z#ih+HX#0lmcQ@ON8m#wFsYZ5>+~BNNi-M?cT`NKUBv!TyZD%w)V2@Ly z0QsNQP_m`Sx?Zs_>gU=*CVN73k66&^5Oz%f|2TsqrUE-UJSi>0!^gkCkflJP4{BM^ z1mtGwCLI-8;UdOPGFstZ8Vs9YTWA8ZmX#rF8Hf4#*MBi<&&o=psT~IXd8Y*ABhd(#w?_No8%KK&8y*@?^1+Js#qlC;pf6!t=ObQr zNr0P$ODmlTeEc6%fNiIAr&(umw4hU^vFr3-O--y!cK3>aBen%o{0m!}O%#_N^g%{c zmSRg=vrkHR9utMUwo}7-&;*E#bHD{YL-IowDSsYQQEg7y1UWxX*Wx19oE=7ZAGpS+ zZWDK@+^giem}PD1I-k{x$WuPZd@WBu15UJDAA@9%^aJ(-Qd3bBg^M9BYSqYV6MT`1 zNz+!u#xC3^E?&)TD2~YRb_p#^M!D#mR$?^73z3lr;%+o_mky493$lM~gWn(A%Hop; zd4DSzrrP`S(5=R`5WMRy$&_hoD2^6KM6KhM#X{Z%DZ#Z^Vn3#6f@2Xuf0~GI0#U5i z)brRN-G#Q87Tl0B!7KLL_t(|ob8%RlEWYjM473%iSK_T?lOy1D1v^C5Vlj+TO|a9 z5FkuDr6fs`BuSDa$?5#8G_JMwUytK>l^n+*RbVZ=%7?Z-XB?(#t$j_}mRc^KV|4pm zO8IrSY#eWf^5%E@b(oJkFt{XnNawY$xiYRlcgwBxLmJi^yMG29*7Rz#ZQTUyfLiO~ z(xw)qeM9%VnQi)wNUim4*?nxXxVZy%!1}syZ)$w)`vSzy?&4WBaK{uRrP>vu;uU_3 z1*D)0F~b_QJHyR3HcmiW!Y##ve)kRW%D5X~TUy>Hv?00eIG-QEjwgs@j`azM@+3); zBzYEw8p`UOh=16r$fA0o=}&uh9PCJv5#k2@JnP${CaT$$N|2w}%6g&hjARGwku5Pb zID{*;pm3<(S-5q*VqaRV`cLgME6P#}Qk|YH6F}e0;IK&m30Zg&pyAUqRUy$wR0x!@T|4Cx7=@O{q7vPqZ1HPzn~hTd1LW zaz8rCXF}))OvjHHkHyiK{|um=4Y4S$-J_guA%Mo$eURRsrfxbi`!pQb-P55;@;TAT zIbdMl*lg|YoQ@KPjQ*8m^si(~^v&$4%XU4q{*=ekiOTjOjRGHt>Dw8L9qfaRsS=AR z<9)-aj(Cv-K%`&hvWF>2@(QXCP%j#g$1X%|BYF2@e`qyE5y+d<`Md=s#GwIrbX25By| z#k62Xtqpu}p2|5FF;)dSq0{mW7a~-O&?Po^^D_Y*Q11#kD)g<) z!((`$e4Pqx!`Rmq59RVrSyBzXoSc9pNg0wPxrl!i|4^d8mbUW%0000<{9 zc)Krmq=?i%bI#kIob%{_ZVTJ~Cf1jXqbU*52{*C2@$|o&?zB@%-|ong$EMj|k}m%? z^|*sNrS4fSbZK?0&yPFuJavDXfz};>j@Go%U&e5^*%=@rlYc{7w=kMFda}Pt^*aY4wWqS?2E`RyFdumK0z~CIA53o>a=7 zW&U;UG~8lh9yvAz-sLOJy~m*Kmcn^2><{9 z__&ulQbg*HIp^(6&Uth}w}tI|6YERH(Ugejgqv91c>3Q>ciJhXA9rNQW7C{3NtbV% zdfY*sQg@UKU0NOM^Xra0Pu-tpqID;rqcv^xl`-6Hb_IyY(EGjE$9_Xza?K<hN7eht)Spo2YIh z3vUKz6`)Mvvc(&dt^@5C+tV1u)(6|MZdPBDR_{pPW&Rh$sz$!ok^(Hr1OR}0lS+NE zdyMtE;~RR=14BOvcZDm)?fwheHF|9lRImcrUjsz(v@Iwc3UIM@3z~eze71+(09rve z)`vU?L`+@(6&$e_DaFmZ(tYa^N#N8UgOhFn78MVJeH&)Y7d^lL0000#SG+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.36.png b/test-integration/snapshots/signTransactionRemnft/nanox.36.png index 3a4a327034c93567878fc2fd75f9b10454c3f66f..272e4d1bf88a2c720f70a4dca59485f17ccb432c 100644 GIT binary patch delta 270 zcmX@fbew5|3M1b{Ri%2-oK~JDK2sJ3Fj({G>D|W9XLRcO46VMUv^-&$vQS@>ulXLs zlNZw;z6 zGhHPKXygH@Tei)s%LLv09&MexaF^)CQY%?wD`9UXLRcO46U}Mw4|_4S*WjB)*Q$F z5 zW!IVynk$yX&-<|DEBliZuFoPf<)*T0%qryC7O>b11Y7dI;FRA0bOseb0^y*fz%000;u8fuAX z=nA5t%?7(Uh!G84ao=DZ(NKFSL_ delta 209 zcmV;?051QC1BU~UBpyylL_t(|obB0B4#FS|fMGP=g!>J$;PZTx0APSyFMl^KAeS>jCL+ueL4ISlvBQcC3Zu+K)$eTS%CGl0ex9trC@=CgV5`O3_U-ZvK;Y@>=d#Wzp$PzN4-e}A diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.42.png b/test-integration/snapshots/signTransactionRemnft/nanox.42.png index e17bdfa94f5e8966590db18b3229d7fb5553080f..9b9ae3db1fd74acb9240d806e4a07603045de545 100644 GIT binary patch delta 397 zcmV;80doGS1E&L!B!6y6L_t(|obB3C4uc>JfMK@mCfxr>++`0Wh7{SAllkv(`WuxL4jrHCVzfoBL)Bf0JxP3tLvia z#W22KlbMX|KAd+T%0BU-;CsrRlqCI7}4%Ph@}ZZibbd^4lu>LrQ_Upigs zC=M$SnT?)VrTvSiIDf~BQ1l(cl4k!MfG>3>7ZT821-wp`XV81n2ubjHrd>~GT z&3PZ-ej#yMJ%2eF?|s4u$dwS2l9*BT66(3MOcxg_%WOV?N-jO||pOygt0000004Uze)zcKM_6FAg0000i)QxEWlBD0e)|C32b8fS!8(lR7q`sM%1wv92bm>7zDLUC&zU_iWUSlPUfa)C_zyB tQfhq!5Cj$1^`Djj00000002yU1Ib_06doJ*h5!Hn00>D%PDHLkV1g!*vs?fG diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.44.png b/test-integration/snapshots/signTransactionRemnft/nanox.44.png index ca5570e4ad76e405b0ab284b7077def9e571c6fe..b1caf4f00d36bebf3aa43fb71cecba362688d320 100644 GIT binary patch delta 41 wcmcb>bdG6)3Zv*m)lV$-lO!u9%QDJ~e5_u-Fn9h(e+D4%boFyt=akR{05)k3nE(I) delta 43 ycmX@dbb)Dt3ZwW$)lY22lPd2msGKa#C@(T^=d#Wzp$Pz9(GM5^ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.46.png b/test-integration/snapshots/signTransactionRemnft/nanox.46.png index 10d3f52bf300bb58324235f4618fe32f08bc1679..266dd53018469db96068569adf9f1eaff40ff7ff 100644 GIT binary patch delta 392 zcmV;30eAkS1EK?vB!6j1L_t(|obB2{4uc>NKvCNCCfxr>+@%W=LSR5;urT$%MI$62 zf>aoF4gdfE0000_@mk%0aUq0s?7d&u5)G3BkavB~;xO17fYkeWcZ-=OyjM41P|?xm z`rWD!LjM2LPnuwL24I=iZEo@QcXnq$(bpEcKC-t8ax6nP@qZs1F#rGnz^ss2-IktK z4CD7LnMv92!(|5wZa4s+DYb|j(fTDxy?2c{@z;Bw7ZEqQVhBilGt(*6$}AduDY??& z<)!2EnPOF!0&oK-?PuN;{+lxc?l5+R6aP=dDN@Wf{q4W+0Jv(h-&(3wPhD+1D3ZhG zybmzHkT|V=IDaXxeZmZgjVK;U#S^t(L;Wnx^NSPZb&5A&r&K@l@LZiF0000kQGFF* z<-3H|YE|Fnm5Wh=pi^p7ZNvzIu0#+tZo2_+&j^Ahs%R)dP`&XP mKoGP}0ssI20002k*B4Fh&=jwbuW|qY002ovPDHLkU;%<9s;?6O delta 394 zcmV;50d@YO1Ed3xB!6p3L_t(|obB3Cj)Nc&fML4Xn{fXlahH7{A!Hb+GPp49|2;H9 z0wPF}(GUOt00000@GV}u8!#`WRE}ee8(U)GascYCuX!8>e*;i@zwT}|(}kbi4VWZ4 z+FieUl~Stzf5u4{yv_h@)4R<*-u}Vw3=nFwo};g00000NkvXXt^-0~g5Q>`l>h($ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.49.png b/test-integration/snapshots/signTransactionRemnft/nanox.49.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.50.png b/test-integration/snapshots/signTransactionRemnft/nanox.50.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.51.png b/test-integration/snapshots/signTransactionRemnft/nanox.51.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionRemnft/nanox.52.png b/test-integration/snapshots/signTransactionRemnft/nanox.52.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.06.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.06.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.07.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.07.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.09.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.09.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.13.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.13.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3de69c7c33c4c27501a71d3319db2743fce8fd GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jmba4!+nDh2#U{Q+#PebCZ zm%e-cPu$@xKf@^VP@7JY@7({@QIahj+8H{mAibJPuSI3={WV3!?j4`Qv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.16.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.17.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.17.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.19.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.19.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|00xcJJRqh_=pY^E()e(SgX5Cz|`yaX^ zpoz6&=nK77(7`e^iDzuY000001Rm6qlQ;fnz20G%*m-1Re|A@3YPh-WU%d4DVRx?w z>!)FAmhW6#(9cxs>yyYk0!~UB*^^Y$(UFB%Vw=!)}IcaK#KH(**Ax?*D|w| z=iv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.26.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.26.png new file mode 100644 index 0000000000000000000000000000000000000000..ee12bc00e82b670bcb8150b894596e47d7463ef0 GIT binary patch literal 379 zcmV->0fhdEP)bKpOg#$29m$K#YDG?qa74PwN3(lm*&d+`S4Rr1MYxqYGZ&0GQc&%soE-;`a^6 zV(l^XD}PmxP=#%W@`vEW!W) z0ET|{uZT)jr!O_@sg$aEs96b{6~y|gzEd-mGnUFRPJ_mgVd(Fiy04qMI18E?2{2}V z6w$zuvyJ%8*lsh+kDq|!(HD!Qb?_kaG7CnS{RZyx{v002ovPDHLkV1fmksB!=R literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.27.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.27.png new file mode 100644 index 0000000000000000000000000000000000000000..34e5ceab69c61f6e41008ccfe72708b5eb164f9c GIT binary patch literal 462 zcmV;<0WtoGP)MA8182V$!>S+bn8RH*DN|y1K;*qIF7s2nZxZ@wqXcxqnhMU`VGp+~ zB>6rdmj0A5X&c=E9n*o%lN2v}y9EFM0PnluR}rn%Q|DK-wk^{-!olf#krybpOc0VDr&=cP*j2;(CMXOg^mS3Q`3x%x0ti_VVRxl&zC zfGz9Qhqj^JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.29.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.29.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vfm^N~K0Vh?NInn>U0Kz0@juTrLGXMYp0002Y)mm$<*WS(P zGr9v;OsgzcdM6e@DaD_34OEB)V6zN#t8Zo>(H*#Gyx}NT-xRL^*Ogne`lcJe zZKwvYnuO&@2GGvBt96kIy#U5Fk8}oN0jyS>x*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp z_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb{mX|xgpB={rlYmH0-m&)9xdC~{0^X$ zk}ZR_UOrmK?oHc_gwfBkNv2;HzbW6{$8B$d-JgWpBiqlVW@(0+o>b%a?OV k00000000000KhGM0bh{T$_#fJQUCw|07*qoM6N<$f@(~#N&o-= literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.32.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.32.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a8740548d2608032872a36bbf128b89b69847d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2V^rmJ7o`#28 zF3;WZUv=knJBzJ8LYg9+J^$_p_fO~OY+x4zYJ!0aM;B**DUEeaiJbO#`>*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|0fhdEP)I)5Xw;AaM!=>7000000D!mnTU~+k%&e4i z&I@aDg=7Qx(0hu_pw|E;`aax;CnbDVSKy>wpylGO%FKNJ=^si^9RXOT)y);Vf6^TR zyI3oRexo-FN=!q8c*a5u0001hV@^3Uc;lV*dWXY}okvFYe{}_#4i~rehnIRiY-Xj< ze;S%v`<P*$YK8Uy@U{Kh|4pQBY_Hxd;876K6sCVr_K~qr9*-wP}9sDIt1pokm z$?C1Q{=clAH1CYN5bKz-?hVq4K^J1)ult>?O;EqA+sfOo?l#6WJ{C z@7zsn1VnhwT!9*(WQIB?)CuR@^RL`~6UmqGlLQ(89oMr*8D6P+UB?_5000000000c Z`vN3o(Yq7+-K_us002ovPDHLkV1k!bsk;CG literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.34.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.34.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3de69c7c33c4c27501a71d3319db2743fce8fd GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jmba4!+nDh2#U{Q+#PebCZ zm%e-cPu$@xKf@^VP@7JY@7({@QIahj+8H{mAibJPuSI3={WV3!?j4`Qv&gfos{{^?mgcFann5UFI^SG( zsx1gS{Oj7IJZ<&+(nflYC);z@yOcM?EVz10HvdSN-;OsPooWjvzTU01#y;fahSuXY zYK#mFHkYJNT6{gQ{Uc}o!-*H!lB>w!hFTAFsY)6S+wsD|@OEKOfWYxaLAll=LKqH)0fUG8x3$=FSje~W z#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a<`}RG;C7zUoNH#f>*$UipqFR)l8ho) zf?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcOEcU(_WB@OAOeq_+XqRt2-c~tL@h-j2 zjVAPV7!J?J!f04ug8myU*}1v>Eqt8Ai9{l?77iP#iOKdNXwa564`U3v{s=As+7d4; z*A4x1fU4TkZ|w`O`zM}?V49)mna0)IRqmP|ZO-9l9%Mte0&*34U(e__SWku!Z9UO+ zkUnt6;n=bOkTfO%ivW|dRZS4K0he{G99>C(_inuoZd6fSj-pd#$zel#e*3ql*Pj-OG!76DuF9-xhhT$Ir1 zG5XsQkjm$MfPrj1f}e`f+wekj-wsX2U6Y+$1Az05%gkM4C;^b!zZ04LJFzAEZuPWj zyB1o0$m3o|g;sh|@PW9#U9s6o8!)FvE{2r16Ne1B9+LWJFw6xpFO&d%1eNsOFZz{N z1$ysc!$ZSK9W2z}iomRx$u2QrXZif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kk zd`=aq1>pF|>&_+S|PVoyvwILSvTESfec)|zl%xxAP=5k_QqJB41FjB)5(Z^W3$4>FMl z@@`CYw+;{Li&^j~H2Oqxh2g7*c`g~M%I_DVE2ilX-t>u>$~A205PErJ2sj;hg}u2Z&9^XCcW1M@z;N1FyiR=mnL0 zbDbO13*56db&rjJwOV=aC`_&$paVK2Yp!*PsB9JvGe<7k)IHV$7WJGV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wa znv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl>#So@;T!~9g|Im&u_tesu?aovcnlZH;D zOL`}Cx<muI+B8ILn)FO@|rMPhy2L8kIT>^)` v4013ZIRF3v00000000000000001(qZbP8$m8yv`W00000NkvXXu0mjftrOC) literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.37.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.37.png new file mode 100644 index 0000000000000000000000000000000000000000..8c676529425490e3241aca9c4efc3212d14c84e7 GIT binary patch literal 502 zcmVK2>L`mHar1rm~f?ay4^M zJ(S+08^hGD8%pAa-f0FeVk0j~-(loqc5*>-2Fa;c)X!gQtIeyQ@bwYwUVw|)6olS z(e~coW!I6l0T}!iuoXx39?&{b>)B2gDlxR~I`WwM#~ifWaHlQlTynyT=zRbH)@j+$ z0~L4d_}tn0ImJsdPPdxMl0M@3>WH7Eycq*v?3AA-j?=#pdz|MDz!!9SjwQ(0^JYLx s{+}1A#3~p70000000000003a_4~m@*WE5SSR8-1FrUOt5&wQC#N$004m7eQkX25JEig-nUAY zG<&k2-5ppgM*k6^kB(RY&N=UW@n>DZ{h!^+0#eHL!ux&idSeU!$F-++UXqT}S^0^1 zJ7VD$M{hx5T;kj}ZZ)ZeyeYA8m;D1!Y$io?R?X0SsE+!SK4lBChj?gU#1Nkl_vDlT zsHG5#yN6Puv{TIeq7VQ80JqU{L3*;KxSQ6$-GmV8uR^Vwc{_RPuaT!!(7KFth4u|GCH?a$6OZechEBKKbk?Vf4R)`^ zc+2~8OLDm+geMVw008Fgd@^oA@rfPpAiGb-VVSu!=gH1}EagKm0GsW9G;x&jtK1Vk zZvfsP=sC8a&7QXcT8e-1aBsI(00000000000002MkYALpqC0W5>gfOg002ovPDHLk FV1h}p^uhoD literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.39.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.39.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fe29c4975e059be61436e574db47d3eceb9f9 GIT binary patch literal 937 zcmV;a16KTrP)JSB=536Qf)cBMaZL<@5fZPt%w39kW6buQ4~c{6h(14e*$Io-pA+T zIL@!faRg2Q<|2iw^Y-57UvdArWh`oR0K+%=i4ugDk+k(#_>!e(FTr1d{2{sbKJR;= z4Z;k7A^m7@u4)8I(|i!`$o!!pGmv6Q4TZ*3A3FIPD~@xhld&Gvl}NLZo<7S|;}1vx zLyT}Ps09@ux@mmx{ z@x3V50DN|XniTjI3?zF#?E+w2(W;P`%AI^`to|hQc_5qG3Q2=NVl`BNEA4{%Xrp4z z;%KCt#ss43p=4NG6w|&4XiT;OI*@;bxya5AIb5R}0TwyjR}MV_9Ht&V_SK(B33v9+bz)@K>_Oz!9_Nil~%|l4x{Zsh!-QYVDF;F0yla#rUe8mj+ zROK60vKOE%>XD1GXflh+&4kBf#*&Ni^~H{A&MHwEreje?IUFVf*zF0F0Mo}77&ad{ zg%pnV%TR0AfPF&Blk!8Gi`iUDZZ*_WvTD1f>H8%yi#UteJ|NdSj`Mxc?5kE_xz98EnE}6mZv~PQ4~edT5JCRUKKe?1*9-T00000 LNkvXXu0mjfXPCqh literal 0 HcmV?d00001 diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.40.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanosp.40.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac15c6dfde2daf91eba76419f3b864eedef7eb3 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl|%Q*hnUzb{nibAy)7Hb-orzhyi?=#?pG}#tk!6aD&O0+e}^n zz(VrQoY&*@e8{$(g*RQdmk(~JkMBs~-AsHMdcw#f%rwW%1Jw4-)s@dUZ>g5Q#r4Nr zSWNTAd7mD8*lPw9jl74_w+s16{kYY*tLOX^Hp5*jv)khHoB)Ke80^L_LEWuvp7!g> zk182?*SMqI`}b^&{z{Dgdc;VZ_d6#OGkTlpRRE{x-v{0XQw zg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6|5;rzICd|94b(trS@w_S)&&?G^&td_ z>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdMI0<(YL!K!J08Y_f1IArAtc~n|_qBXe z_`v|C-piCHz;90S4rS|jRqbN>D_aAzlOz8vf*2PbN6rj z6B4>ws(H@Rd`6X%;kVwdQrVWiCw@!W`is0j_VrJCa&(%n?9KLxT5Gvpw220@S*u+- z5xe^98}VC3)thQO%*ub8o|?Au%;rm*^GwR;l}KMc9HX4jwtTrL?~IkZ`WqITd+Q!u zUS7Iw=Rc1ZA|fj{toSzT!7Nu1h07;vWm41@P0C*Lb@7HuL*=wLHPVi%d$;8u9w_iRJ7#^29pT9ce$dB`%xz{n)zh9eY&eq?|Ew&)A vfOpYyg{?WaLbt>|i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVCkzWF7IP%x`-`gvGg*D^_39g z4X{Bol~NLkL?V$$Boc|s@fAw!`(FRLZQE(ibX$B$8UZ*s>`AT1YpzEQw+{g`9pazp z$_079-J*fn2j5wE2^LXLl@ODv8 zfWh`gLAmxLMi>qb0|pQGZ*8&Vu#vCh9dnFFr=9@uJho=RQ^}PKtctI>CIyo#ZETh3 z%qdV8AnZJ)I@ikd(9tt`fM1^FOVW$M5)}IJ3Kb^tyzW|ShMfsw_|~)}x{(DqVpG<< z7B+j|3@U&ZJAb8=^;+cR+mF{(&Q!chuXDW#y&c5i`B)SU>r2qD!IGVu+n?d%98M$> ziM1GEL+iUBVJ#8lf)OC_(VD2VGPTEtb z2wvQ`3gu^6sKfSIP?WF2n3bs>;7yubl%dl@y4(_k%IB@OLOA!r`k^5A(NoPOny-or z>|SH&V}G!}aizt}Y$Yr*`*$LUg&qj^?V`;tnt?eb zx#&_}PwX-jdMN52#t0Xryi*3~BdEmFTeW`p#%aBWiHF2VA1u@l<5k?~{$||Xpek#z z9T9N7@YKrg2tNNq7sR<;yi>0;Yq+3;rQtIBn}1V-!sc|(5IAtISmIyc)a*iX=|LaJ zKxS!dYq#{95nsn3kyp;-a2~V(5cL{(f{##s$|luw3fbl*hhV`1ki0<2-Y|yGL8!dz zHgOlrJ&Uz2uF}?ZonK`I;wc}<{8>D`2OMbC`Z1X5vAn^4Kxs-O5{VFmTx^M%*QWR) zg?~kpGh(%g@QJI7g%e>!#M>#f(nQ9gbFC3FQ6E$yAILkI7;YUM@hymd*+#!Vgu?L2 zqr8=fs`B%B7>ao=L^r)7nsON%s-u-hg{||#aL}7DBRUsr^p7!`Vk{8qR}=L^0LkhW zdp;IqxX~udLYTE9@X2*5*F3}^1$2SY@>dBDqKsVDGOq66f-o`H@NpsWGm zhgSibAYGxJ6*doZp?q}(IC1S~6@L`BAIg$!=aTw^Ui4x42Oh(7<4Tj$I;t{T7M68sY)6S+wsD|@OEKO zfWYxaLAll=LKqH)0fUG8x3$=FSje~W#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a z<`}RG;C7zUoNH#f>*$UipqFR)l8ho)f?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcO zEcU(_WB@OAOn)gGwP=@bJ>FJ1QSmOl&W$GYb{G!N$HHh>UxNM{EZMoa{VjZ)!-+&9 zu@(*+s)@<=B52T-HVIY(0XXiqYHfLUZ2^O~zf5 zom>Ne^M8%Y%w1zB0g&0h6Pf)xu_gO%^|Wcb7FvGD<6cLFR(etJfw;b1vDrx*FsDW? zhLpDxhYYzMlKN*b%mpzolmLAMmGs^(`juA&dhcPwL&HfOEY#nNm+^#p3EK>x@bW|i z+$c1uaw>vP|1bn{?hx-3aApA)R9PBZ=6rK%P=8pQ?im6H&LvCy3pO>omRx$u2QrXZ zif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kkd`=aq1>pF|>&_+S|PVoyvwILSvTESfec z)_Wf+MDKz>-a)sfmhj}g; zs><&dqARB95Z?5On94P5=n#5&WC%Mg3N( zjW$^p+^p5WC)cT5^ALk9&;>@zCp?G-{!(2H42I;SoJaPn`25}74oW$qeu4T*So5|F*X3ZVeu5+q80eNhmgqM}Y z+82c$=B>_ilz;X1SUbD&rQm-J5Pbd7*-8H=Zpn~$Jn+_h|3{#D@u1_1os zCe3T&ytw|2#vMGOrLLh7GcocxdOGI^r4ZsJ!2HA?*HTANL?mD`c?6kX96!oRF90d% zsk+GD0TH7YAJifa;U#eBDW#!*?|hut(XW9V%tsCY03`qb000000000000000#Pkbj Wlxgx0kK6A60000GV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC z*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wanv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl># zSo@;T!~9g|Ie*G}d#s&Z`ElKdu9JpNq)U1ybh<{sw~WQp$jwL4GVWToEdQ!-0RzCV z+Y4o(`7`ck&Tr^RU+rUPxMYl6N6+QFO^PB|0?hmU&{jKw!XW{Z$s@?Tar_>Oy#S=3 z2kRo=10sg5FVrHABBi)-7Y6>r^IZamz6^3OA2|R303-ka00000000000000G(?4_y VY4RH!$aMe!002ovPDHLkV1nLc(9Hk< diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.08.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.08.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.09.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.09.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.10.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.10.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.11.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.11.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVCkzWF7IP%x`-`gvGg*D^_39g z4X{Bol~NLkL?V$$Boc|s@fAw!`(FRLZQE(ibX$B$8UZ*s>`AT1YpzEQw+{g`9pazp z$_079-J*fn2j5wE2^LXLl@ODv8 zfWh`gLAmxLMi>qb0|pQGZ*8&Vu#vCh9dnFFr=9@uJho=RQ^}PKtctI>CIyo#ZETh3 z%qdV8AnZJ)I@ikd(9tt`fM1^FOVW$M5)}IJ3Kb^tyzW|ShMfsw_|~)}x{(DqVpG<< z7B+j|3@U&ZJAb8=^;+cR+mF{(&Q!chuXDW#y&c5i`B)SU>r2qD!IGVu+n?d%98M$> ziM1GEL+iUBVJ#8lf)OC_(VD2VGPTEtb z2wvQ`3gu^6sKfSIP?WF2n3bs>;7yubl%dl@y4(_k%IB@OLOA!r`k^5A(NoPOny-or z>|SH&V}G!}aizt}Y$Yr*`*$LUg&qj^?V`;tnt?eb zx#&_}PwX-jdMN52#t0Xryi*3~BdEmFTeW`p#%aBWiHF2VA1u@l<5k?~{$||Xpek#z z9T9N7@YKrg2tNNq7sR<;yi>0;Yq+3;rQtIBn}1V-!sc|(5IAtISmIyc)a*iX=|LaJ zKxS!dYq#{95nsn3kyp;-a2~V(5cL{(f{##s$|luw3fbl*hhV`1ki0<2-Y|yGL8!dz zHgOlrJ&Uz2uF}?ZonK`I;wc}<{8>D`2OMbC`Z1X5vAn^4Kxs-O5{VFmTx^M%*QWR) zg?~kpGh(%g@QJI7g%e>!#M>#f(nQ9gbFC3FQ6E$yAILkI7;YUM@hymd*+#!Vgu?L2 zqr8=fs`B%B7>ao=L^r)7nsON%s-u-hg{||#aL}7DBRUsr^p7!`Vk{8qR}=L^0LkhW zdp;IqxX~udLYTE9@X2*5*F3}^1$2SY@>dBDqKsVDGOq66f-o`H@NpsWGm zhgSibAYGxJ6*doZp?q}(IC1S~6@L`BAIg$!=aTw^Ui4x42Oh(7<4Tj$I;t{T7M68sY)6S+wsD|@OEKO zfWYxaLAll=LKqH)0fUG8x3$=FSje~W#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a z<`}RG;C7zUoNH#f>*$UipqFR)l8ho)f?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcO zEcU(_WB@OAOn)gGwP=@bJ>FJ1QSmOl&W$GYb{G!N$HHh>UxNM{EZMoa{VjZ)!-+&9 zu@(*+s)@<=B52T-HVIY(0XXiqYHfLUZ2^O~zf5 zom>Ne^M8%Y%w1zB0g&0h6Pf)xu_gO%^|Wcb7FvGD<6cLFR(etJfw;b1vDrx*FsDW? zhLpDxhYYzMlKN*b%mpzolmLAMmGs^(`juA&dhcPwL&HfOEY#nNm+^#p3EK>x@bW|i z+$c1uaw>vP|1bn{?hx-3aApA)R9PBZ=6rK%P=8pQ?im6H&LvCy3pO>omRx$u2QrXZ zif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kkd`=aq1>pF|>&_+S|PVoyvwILSvTESfec z)_Wf+MDKz>-a)sfmhj}g; zs><&dqARB95Z?5On94P5=n#5&WC%Mg3N( zjW$^p+^p5WC)cT5^ALk9&;>@zCp?G-{!(2H42I;SoJaPn`25}74oW$qeu4T*So5|F*X3ZVeu5+q80eNhmgqM}Y z+82c$=B>_ilz;X1SUbD&rQm-J5Pbd7*-8H=Zpn~$Jn+_h|3{#D@u1_1os zCe3T&ytw|2#vMGOrLLh7GcocxdOGI^r4ZsJ!2HA?*HTANL?mD`c?6kX96!oRF90d% zsk+GD0TH7YAJifa;U#eBDW#!*?|hut(XW9V%tsCY03`qb000000000000000#Pkbj Wlxgx0kK6A60000GV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC z*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wanv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl># zSo@;T!~9g|Ie*G}d#s&Z`ElKdu9JpNq)U1ybh<{sw~WQp$jwL4GVWToEdQ!-0RzCV z+Y4o(`7`ck&Tr^RU+rUPxMYl6N6+QFO^PB|0?hmU&{jKw!XW{Z$s@?Tar_>Oy#S=3 z2kRo=10sg5FVrHABBi)-7Y6>r^IZamz6^3OA2|R303-ka00000000000000G(?4_y VY4RH!$aMe!002ovPDHLkV1nLc(9Hk< diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.18.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.18.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.19.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.19.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.20.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.20.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.21.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.21.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVCkzWF7IP%x`-`gvGg*D^_39g z4X{Bol~NLkL?V$$Boc|s@fAw!`(FRLZQE(ibX$B$8UZ*s>`AT1YpzEQw+{g`9pazp z$_079-J*fn2j5wE2^LXLl@ODv8 zfWh`gLAmxLMi>qb0|pQGZ*8&Vu#vCh9dnFFr=9@uJho=RQ^}PKtctI>CIyo#ZETh3 z%qdV8AnZJ)I@ikd(9tt`fM1^FOVW$M5)}IJ3Kb^tyzW|ShMfsw_|~)}x{(DqVpG<< z7B+j|3@U&ZJAb8=^;+cR+mF{(&Q!chuXDW#y&c5i`B)SU>r2qD!IGVu+n?d%98M$> ziM1GEL+iUBVJ#8lf)OC_(VD2VGPTEtb z2wvQ`3gu^6sKfSIP?WF2n3bs>;7yubl%dl@y4(_k%IB@OLOA!r`k^5A(NoPOny-or z>|SH&V}G!}aizt}Y$Yr*`*$LUg&qj^?V`;tnt?eb zx#&_}PwX-jdMN52#t0Xryi*3~BdEmFTeW`p#%aBWiHF2VA1u@l<5k?~{$||Xpek#z z9T9N7@YKrg2tNNq7sR<;yi>0;Yq+3;rQtIBn}1V-!sc|(5IAtISmIyc)a*iX=|LaJ zKxS!dYq#{95nsn3kyp;-a2~V(5cL{(f{##s$|luw3fbl*hhV`1ki0<2-Y|yGL8!dz zHgOlrJ&Uz2uF}?ZonK`I;wc}<{8>D`2OMbC`Z1X5vAn^4Kxs-O5{VFmTx^M%*QWR) zg?~kpGh(%g@QJI7g%e>!#M>#f(nQ9gbFC3FQ6E$yAILkI7;YUM@hymd*+#!Vgu?L2 zqr8=fs`B%B7>ao=L^r)7nsON%s-u-hg{||#aL}7DBRUsr^p7!`Vk{8qR}=L^0LkhW zdp;IqxX~udLYTE9@X2*5*F3}^1$2SY@>dBDqKsVDGOq66f-o`H@NpsWGm zhgSibAYGxJ6*doZp?q}(IC1S~6@L`BAIg$!=aTw^Ui4x42Oh(7<4Tj$I;t{T7M68sY)6S+wsD|@OEKO zfWYxaLAll=LKqH)0fUG8x3$=FSje~W#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a z<`}RG;C7zUoNH#f>*$UipqFR)l8ho)f?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcO zEcU(_WB@OAOn)gGwP=@bJ>FJ1QSmOl&W$GYb{G!N$HHh>UxNM{EZMoa{VjZ)!-+&9 zu@(*+s)@<=B52T-HVIY(0XXiqYHfLUZ2^O~zf5 zom>Ne^M8%Y%w1zB0g&0h6Pf)xu_gO%^|Wcb7FvGD<6cLFR(etJfw;b1vDrx*FsDW? zhLpDxhYYzMlKN*b%mpzolmLAMmGs^(`juA&dhcPwL&HfOEY#nNm+^#p3EK>x@bW|i z+$c1uaw>vP|1bn{?hx-3aApA)R9PBZ=6rK%P=8pQ?im6H&LvCy3pO>omRx$u2QrXZ zif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kkd`=aq1>pF|>&_+S|PVoyvwILSvTESfec z)_Wf+MDKz>-a)sfmhj}g; zs><&dqARB95Z?5On94P5=n#5&WC%Mg3N( zjW$^p+^p5WC)cT5^ALk9&;>@zCp?G-{!(2H42I;SoJaPn`25}74oW$qeu4T*So5|F*X3ZVeu5+q80eNhmgqM}Y z+82c$=B>_ilz;X1SUbD&rQm-J5Pbd7*-8H=Zpn~$Jn+_h|3{#D@u1_1os zCe3T&ytw|2#vMGOrLLh7GcocxdOGI^r4ZsJ!2HA?*HTANL?mD`c?6kX96!oRF90d% zsk+GD0TH7YAJifa;U#eBDW#!*?|hut(XW9V%tsCY03`qb000000000000000#Pkbj Wlxgx0kK6A60000GV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC z*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wanv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl># zSo@;T!~9g|Ie*G}d#s&Z`ElKdu9JpNq)U1ybh<{sw~WQp$jwL4GVWToEdQ!-0RzCV z+Y4o(`7`ck&Tr^RU+rUPxMYl6N6+QFO^PB|0?hmU&{jKw!XW{Z$s@?Tar_>Oy#S=3 z2kRo=10sg5FVrHABBi)-7Y6>r^IZamz6^3OA2|R303-ka00000000000000G(?4_y VY4RH!$aMe!002ovPDHLkV1nLc(9Hk< diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.28.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.28.png index 6f7fe29c4975e059be61436e574db47d3eceb9f9..4b4b7f83679f26b887eb99e72db4b48bcb2c3ac6 100644 GIT binary patch delta 919 zcmV;I18DrI2dxK?B!6^CL_t(|ob8-jlH4E+MM-LQ;{7j)z2w8y6r(pn@}r~kG1X0j z5C~y&?WDD$D2k#eilVrjKY_M-@8k1v9Ou{LI0Cx>eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.29.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.29.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.30.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.30.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.31.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.31.png index cbdc0a716eee4c7c2031ff28ccd9dba647040582..348d43dc7cf374983af69c3cc7cc261f8ab8ca03 100644 GIT binary patch delta 362 zcmV-w0hRuS1BC;SB!5gvL_t(|obB0J4#F@DMNxy;N%p@a?}ZPes$}SdAb#kcA3zkE z`lU(Km;nF)0001>&)wbq+P68~XE)%AZk6RqAH)JErNo=6+{?%102N{ZST6(J>YLeZ zb^|VI2OP!fo8lc1s&b1~-*f}`8>#_}CSf^}0jy`;(Yi>5UVi}XnnyYVu>eLZPTdT| z0tnqTkM2SU003klw~SNw_B7Ppr!3~ysqZ!*4!+#ZQ|J1riG6?BO8nBEV)t*8>|Z|O zWmezc)ppqG4(RsijXle3m-z~yl#(!mb;)*X8a+BL#NG=%$}Ge6K9+aWGZ>X=G*EO8 zI6kUmsJ^WOuw&U7#M#>h?6#-v?8lFvu6`Jor*Wt1e*9OKX8H{&Hs#x~eq)Y3I|)}) zNOzLJ390(;=Op(7{z-}<=%7@~M*si-0000000000000w z!X##n6I&QF00000007L@T5GM>-p%PVx&v2Ct1MS~Cl){{#h-NLK3*OTREPy&vkY{r zZ)P9S9k^(`;V4$$6t4i+m0Ps>rW?R*s0Of_gyl#E(9XK6b$^ixy#U5Fk8}oN0jyS> zx*3QC;HGOH-GvYU0LVaY8K>^ouc5Wp_b=w!$al`}?JxK9?CIVoYV05Ti2t{tI6ZQb z{mX|xgpB={rlYmH0-m&)9xdC~{0^X$k}ZR_UOrmK?oHc_gi$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgVCkzWF7IP%x`-`gvGg*D^_39g z4X{Bol~NLkL?V$$Boc|s@fAw!`(FRLZQE(ibX$B$8UZ*s>`AT1YpzEQw+{g`9pazp z$_079-J*fn2j5wE2^LXLl@ODv8 zfWh`gLAmxLMi>qb0|pQGZ*8&Vu#vCh9dnFFr=9@uJho=RQ^}PKtctI>CIyo#ZETh3 z%qdV8AnZJ)I@ikd(9tt`fM1^FOVW$M5)}IJ3Kb^tyzW|ShMfsw_|~)}x{(DqVpG<< z7B+j|3@U&ZJAb8=^;+cR+mF{(&Q!chuXDW#y&c5i`B)SU>r2qD!IGVu+n?d%98M$> ziM1GEL+iUBVJ#8lf)OC_(VD2VGPTEtb z2wvQ`3gu^6sKfSIP?WF2n3bs>;7yubl%dl@y4(_k%IB@OLOA!r`k^5A(NoPOny-or z>|SH&V}G!}aizt}Y$Yr*`*$LUg&qj^?V`;tnt?eb zx#&_}PwX-jdMN52#t0Xryi*3~BdEmFTeW`p#%aBWiHF2VA1u@l<5k?~{$||Xpek#z z9T9N7@YKrg2tNNq7sR<;yi>0;Yq+3;rQtIBn}1V-!sc|(5IAtISmIyc)a*iX=|LaJ zKxS!dYq#{95nsn3kyp;-a2~V(5cL{(f{##s$|luw3fbl*hhV`1ki0<2-Y|yGL8!dz zHgOlrJ&Uz2uF}?ZonK`I;wc}<{8>D`2OMbC`Z1X5vAn^4Kxs-O5{VFmTx^M%*QWR) zg?~kpGh(%g@QJI7g%e>!#M>#f(nQ9gbFC3FQ6E$yAILkI7;YUM@hymd*+#!Vgu?L2 zqr8=fs`B%B7>ao=L^r)7nsON%s-u-hg{||#aL}7DBRUsr^p7!`Vk{8qR}=L^0LkhW zdp;IqxX~udLYTE9@X2*5*F3}^1$2SY@>dBDqKsVDGOq66f-o`H@NpsWGm zhgSibAYGxJ6*doZp?q}(IC1S~6@L`BAIg$!=aTw^Ui4x42Oh(7<4Tj$I;t{T7M68sY)6S+wsD|@OEKO zfWYxaLAll=LKqH)0fUG8x3$=FSje~W#vHSwV^08i9(%LkskD^@Rz=rbk%GyU7Pg9a z<`}RG;C7zUoNH#f>*$UipqFR)l8ho)f?Pjdp~58Y>#nV4*qI>0x27f0MHZmO#;kcO zEcU(_WB@OAOn)gGwP=@bJ>FJ1QSmOl&W$GYb{G!N$HHh>UxNM{EZMoa{VjZ)!-+&9 zu@(*+s)@<=B52T-HVIY(0XXiqYHfLUZ2^O~zf5 zom>Ne^M8%Y%w1zB0g&0h6Pf)xu_gO%^|Wcb7FvGD<6cLFR(etJfw;b1vDrx*FsDW? zhLpDxhYYzMlKN*b%mpzolmLAMmGs^(`juA&dhcPwL&HfOEY#nNm+^#p3EK>x@bW|i z+$c1uaw>vP|1bn{?hx-3aApA)R9PBZ=6rK%P=8pQ?im6H&LvCy3pO>omRx$u2QrXZ zif!$leleo!7$ow_W&-Ca3joosfhPD2%8%Kkd`=aq1>pF|>&_+S|PVoyvwILSvTESfec z)_Wf+MDKz>-a)sfmhj}g; zs><&dqARB95Z?5On94P5=n#5&WC%Mg3N( zjW$^p+^p5WC)cT5^ALk9&;>@zCp?G-{!(2H42I;SoJaPn`25}74oW$qeu4T*So5|F*X3ZVeu5+q80eNhmgqM}Y z+82c$=B>_ilz;X1SUbD&rQm-J5Pbd7*-8H=Zpn~$Jn+_h|3{#D@u1_1os zCe3T&ytw|2#vMGOrLLh7GcocxdOGI^r4ZsJ!2HA?*HTANL?mD`c?6kX96!oRF90d% zsk+GD0TH7YAJifa;U#eBDW#!*?|hut(XW9V%tsCY03`qb000000000000000#Pkbj Wlxgx0kK6A60000GV9Te98AKvwjDE5?5@)1FN;kU3WZYOBNC z*Ph2uqkQ5Wpwr_|iKpgRf=7;^(;$wanv?k4+qG=jd^4H4)~vb1+I3EKCm@f_lkl># zSo@;T!~9g|Ie*G}d#s&Z`ElKdu9JpNq)U1ybh<{sw~WQp$jwL4GVWToEdQ!-0RzCV z+Y4o(`7`ck&Tr^RU+rUPxMYl6N6+QFO^PB|0?hmU&{jKw!XW{Z$s@?Tar_>Oy#S=3 z2kRo=10sg5FVrHABBi)-7Y6>r^IZamz6^3OA2|R303-ka00000000000000G(?4_y VY4RH!$aMe!002ovPDHLkV1nLc(9Hk< diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.38.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.38.png index 4bded1cddfb1fa61a9cce314143a3e24d7d11f4b..879dc8a91463edb860344b79f5fab82a523dd75a 100644 GIT binary patch delta 490 zcmVF1DKvCN1O}PJ&xJwsI845xOObkx`Te$=i zEHEL8>l^?80C2mnjqe>ohzH*LR>_iPPxiCB1B=DzKO*$e5qE%d&U;_{SyyoXXSZ?# zDdl?M{l0g-v4#KR+EY6(Nyq7|{KUK+v2cr{mmo1Naqb(Jnt#+n-jrCl%l-i<7Ly`6 zt7d3ER7ZVEpRxqmLp(GvVu(+OdveME)KZAW)nl%mV(u4(0002Ejg|}2lP$$=TK{$v zLa4tAwQA<==xLm8AHqTz~jXE~ph#@dg}?erwS%CUY#eyd@WOu^V>%0k8)#Esj?@WJ&TUb;Ldt ze|F!Z^#en<&O}zDGXQlo?eQ&E!0CaxIHIf8z-~L1VXJ8auw*VTX=>W}pFsUPARe?X zBVD0=K}<>ie9FY*`lX@MEt}5zbg{wiwHUX&FSjI@OJhQK643_$VBXFr<0cfJ*l`Eh zeKHQq%%wR`cJ5;-AA$kcZ2zN)qm*Cep6Gc4@CHH8u>@`QygQ(!_!kfNcJ~SZ00000 g00000000>B3&BsHq~#qTM*si-07*qoM6N<$f|}aqg#Z8m delta 489 zcmVF1DKvCN1PT2pF*h@c{G8BXmm>8Vg^W_pu zuz18#T;~7)0D#+lZG7(#LOk%^w@Q{Yd$OP19at~w>Ax9GRLyyExDkJ-LUHqfIWz5bG*_aOOi*aBle;A zv-=jU9~ioICbAlx0jQ&Ck8iO9P7ln*5nZ(hcH6NGTTL5)C3AU6Q`64>1nRGVc+k3x zbcOZ}F(v);DHD(DmxfNa+;rBbiw$i9q%B! zPsU-Hxisg=&V4N9LofiF?SC|Jl=7?G6FqML-XQ2XwxG?Pw*p#eUZl1etYlpueknPG6pp&faaV0 zL>a=vNSb-JU7682TLI4Xq8#2bJ7qiF=P-Bof zk|eSNAG`(0ETufTQCtu_VN1*)ECAC>J`Md#gSNj(LrY0i> zZf9<>Fmve^^nV0GR&L<(k30zrfF<*${4I*2_+FH20N%TSCIx;44au5My8swRv}zr8rvoOw- zV?rwik+}Dwa8C*=HT!o`vwtU^+3yp+Zsdk``~5eZaqcIzT!nMhZLk^70S;x=Skr!7 zuy-A6ZGUb;8t)(B&v%3GJct2-Xg;LOh2$${xTb2~=#pK4vbaYM%HqjvD)%HjIx|Wx z#@81+(wtSIPMD5C8SQYG0$`6PZ~}B6D==(6ataZS_GPHGYrsAs@}&IG=3+L-lBAO?0G~u5 delta 915 zcmV;E18n@Q2dM{;B!6&8L_t(|ob8)ylH?!=fZeURN$!6n@3KEqZ8^L}$fK9<$5gki zhyo^%Olw6^6h%=KMR7TQ0%i5y$LHfX&acOD1Wp0wB898-_TJ}TasRnxENXNB!#DYf z5`>qLwDnl{lBH)a!C!&=A-VTH?|YyP!VG{R{b+EmY6MEte18z{$o!!pGmv6Q4TZ*3 zA3FIPD~@xhld&Gvl}NLZo<7S|;}1vxLyT}Px_@LQEC5{QP4Qb4Me)5T*8qHWgPIih6$~VMKJ5ZvT+ynKn97}e zYpnhx^m!ng+6qa7Kw>pifGh2S`e>tK&f;jKoW=yA>Y-#a?g}KPi z4mn(-8UYqL+*b}g0vx6uKIJ?9qK>KXx@?B0>jsFLb$@9AQ8oA2+I6 z#g1yuDp47xV^Kyq93}(U?Fp0s)5jJVHXk{K6pr@GP;1wKeL~8U@GM+4=aeI{QibBT2AGTyC82>gI5k<$pM)CiloL7OM)v?%qJm;_LIq|L)z; zr%?tdilQji0YyQwQpk0X3zJ-d(^B1(8$kzBVLS^tL{=#syiVa}pKKx9)jgH>TD1f> zH8%y6EmsIbb;aAz%utk>J0SY=$S$kR!#&v2#Ls5kp8 z!(W*Rb0+k~L54%vPi)iM(ZXHLrq>GvOVxP=flG0a!Rr1j%Y84|OIXbeUU>w46Zia& p*ezTWzLuvzMNt$*(OPT&0A3Y2N(H1aLks`_002ovPDHLkV1g1^!{Yz| diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.40.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.40.png index 8ac15c6dfde2daf91eba76419f3b864eedef7eb3..5d0997efdc581e4203b9f6724ef76c7034a4f53d 100644 GIT binary patch delta 436 zcmV;l0Zaba1I`1GB!87jL_t(|obB0Lj>8}fKv8BiJ7NDzVlVR%$)YxoG&Qg4p06|^ zgkmr>4FLcE0GRH_v96So9LE^1k1ex1`GGWW9-162oadKl8 zR&tq|f_C6FY=6D#@%$y+pvKEFlNSImUwWm^%W-}_n3ZPXUh8k<(?jxin|V~mbXn6`?QciR;a{Z{*I%BPj&WzrgUAtGr27B=1P zN&2lG=a;n0IR4mQms*O7Nu-V`q7x;&=U{%VIW`9&OZ-}Dn}0qudfvU<#gA`w?Yz(* z)1Ax3uoc&qw9fRabF0&!T2`Il7JxkUT$lu(p*VFKTY@jo8PJWv)NT2kk+@FX+k65r z*hRBSbPMNKO$uIZS?iwso=*Ud&9J-g$v>Ay)7Hb-orzhyi?=#?pG}#tZ^{U77pKyc8m)lHU0Kh`>&Yaid^nA#+oP{@Cx0erYsE_YR;oVGp z8hXOWBg{0%%>&f-&DE99IB%(zzs2>(Tv$x=#(AF}d)R9R6pg%x(zgrwN&UFhxU1*< z6E?$LE3@0;^PB*Lu^8;eEfU&jQ)DWU_D~69x(s_ o000000000000000003}Le+%t-E#OZxKmY&$07*qoM6N<$g7u)|MgRZ+ diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.41.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.41.png index 525864b4c841ad2ac2bb4fd41fe4249a381c9af8..2f8f58e661bff482095c09ab829d2f9841d57dcc 100644 GIT binary patch delta 445 zcmV;u0Yd)V1J?tPB!8YsL_t(|obB3Cj>8}fMNv;RJ7NDzVlVwbMF=NW5{1Bv?)jT4 zojNuUaBBtt00000000-{oO8~zqd4I+JAgZBrM`Gi0c!SBN^>JQMXUgOD~xFNO|Ae% zR|DPbn_K~EifhuPvu|d9vje!ouR@~PH@O*5bm`X3zBainKYsuK05FH&Hw&DE+n`fQ zJ zR@V)V)eB$;Y9RDj_ES^u8Q@8zzVM;0UVv^78ebz+i8ttWsG=KIfoH(G37muj-H>Mq z0)SJrp8>~RIDf1i*#WO>`lj&40EXVnkQv}NCvAtaZB?4F1DMp32Hov{BUv6nu0$}k8B_5{P{-1F9q z)5sF$M~N8#00000003MNV~jDbj^c!$)d75xR_YJWDL~482w`m`r-&7xHN%Kz-{cB# zC~BaaeUmFdN^wfMboR~cwK{++{46AzeUp0v4n?|kv#(8V%YP35006Av_ss$);XLRN z!ttl>;VZ_d6#OGkTlpRRE{x-v{0XQwg^nS%bCWIwX)3*-{zH&bocBsM%zKiDw|fD6 z|5;rzICd|94b(trS@w_S)&&?G^&td_>|1S=Y`qBQYpJ!z_|EI?lNCEu(GBa?Q_wdM zI0<(YL!K!J0Dn%=UIWHmIINBAfcLe0Q~1FErryhxC%|t`@(yL|cvbCU`YT%lvy&tL zErLJ0b$X~%TOG5epw}j00000003;^57&}7I%=B|%>V!Z07*qoM6N<$f*!Zp9{>OV diff --git a/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.42.png b/test-integration/snapshots/signTransactionTrnsfiopubky/nanox.42.png index a7a8740548d2608032872a36bbf128b89b69847d..c843773c2ed183cf3d5c88991b1c616a122c8a16 100644 GIT binary patch delta 376 zcmV-;0f+vT1Cs-gB!5~-L_t(|obA|K5`!QNK+&|*ow)xcxtD%8wM-Hy772{r^VRx5 zNaP_R00000000000001>i$~Ye*L4+hJcud}IBoL$zuwTF|uPUsL6sWPedn&6y8B%sj9 zy&n_?qMB>0^`o+SF+FDNcpE_leZmH-DqVI6npV1QmVghjcI& z{zydMF*Ycyf^h~LuosluytI3hV)n6*o^_Adr??fnCe>{Bqp5uG=PgICFBB4B{BG#E z8iN?WJip)^@b}*8c4KfqxL^Vr1?M1o2vXCgokiPK?ttEO5(WSO0000000000;5OcH W+X&*Q(%oeM0000$ow)xcxtBgTwM-Hz6bX#}-&2p5 z2#J6P5dZ)H0000000000(8Z%`^mScDWLcK|xB7GYoxidCR8^}QgPf&r0VK&++U=?& zwr9Lww05u24fwu~lH|pfO&!^Xkt(eU=!O+j20JFw$X%=T?0*;9a(l9TNH%x-HOiK$ z%(K$7ZZvnEbQ{ydTq9tHr>7MSn5nvtfTK4{EybsIb+)d zeH>&aqLOQ@^`o$PF(YQ|d>cU}y|!!tRC_Kv1x+jcZkB+5#Nw$}Y|eG~=<68~W}6l7 zh3t<+_8nuB!gE*9U<3Aojy5mt-lUj)?Ao*L5&IOkVb`R(?e0G25B|KR_WDea0ONN< z&()a3_|NkTt^t4Vt!_64kAn*qpiyuQqNgCWY}!?{UEvPsO&4JR0000000000003^| Y4Sw|tc}rgV Date: Thu, 7 Sep 2023 09:34:41 +0200 Subject: [PATCH 82/83] Remove stax from guidelines enforcer, add stax icon --- .github/workflows/guidelines_enforcer.yml | 2 ++ Makefile | 16 +++++++++++++--- MakefileLocal.mk | 8 ++++++-- MakefileSpeculos.mk | 2 +- icon_fio_stax.png | Bin 0 -> 1259 bytes icon_fio_stax_large.png | Bin 0 -> 1527 bytes .../speculos-buttons-and-snapshots.js | 4 ++-- 7 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 icon_fio_stax.png create mode 100644 icon_fio_stax_large.png diff --git a/.github/workflows/guidelines_enforcer.yml b/.github/workflows/guidelines_enforcer.yml index 32cfd201..3aa0962e 100644 --- a/.github/workflows/guidelines_enforcer.yml +++ b/.github/workflows/guidelines_enforcer.yml @@ -17,3 +17,5 @@ jobs: guidelines_enforcer: name: Call Ledger guidelines_enforcer uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1 + with: + run_for_devices: '["nanos", "nanox", "nanosp"]' diff --git a/Makefile b/Makefile index dbb733d3..92a2af77 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ WORDS = "abandon abandon abandon abandon abandon abandon abandon abandon abandon PIN = 5555 SPECULOS_MODEL_SWITCH=nanos -NANO_ICON_GIF=nanos_icon.gif +NANO_ICON_GIF=icon_fio_nanos.gif BOLOS_SDK_DIRECTORY=/opt/nanos-secure-sdk TARGET_NAME=TARGET_NANOS TEST_DEVICE=nanos @@ -37,7 +37,7 @@ SPECULOS_SDK_STRING= --sdk 2.1 ifeq ($(TARGET_DEVICE), NANO_X) $(info Targeting NanoX) SPECULOS_MODEL_SWITCH=nanox - NANO_ICON_GIF=nanox_icon.gif + NANO_ICON_GIF=icon_fio_nanox.gif BOLOS_SDK_DIRECTORY=/opt/nanox-secure-sdk TARGET_NAME=TARGET_NANOX TEST_DEVICE=nanox @@ -46,13 +46,23 @@ endif ifeq ($(TARGET_DEVICE), NANO_SP) $(info Targeting NanoSPlus) SPECULOS_MODEL_SWITCH=nanosp - NANO_ICON_GIF=nanox_icon.gif + NANO_ICON_GIF=icon_fio_nanox.gif BOLOS_SDK_DIRECTORY=/opt/nanosplus-secure-sdk TARGET_NAME=TARGET_NANOS2 TEST_DEVICE=nanosp SPECULOS_SDK_STRING= endif +ifeq ($(TARGET_DEVICE), STAX) + $(info Targeting STAX) + SPECULOS_MODEL_SWITCH=stax + NANO_ICON_GIF=icon_fio_stax.png + BOLOS_SDK_DIRECTORY=/opt/stax-secure-sdk + TARGET_NAME=TARGET_STAX + TEST_DEVICE=stax + SPECULOS_SDK_STRING= +endif + ifeq ($(BOLOS_SDK),) include $(CURDIR)/MakefileContainer.mk diff --git a/MakefileLocal.mk b/MakefileLocal.mk index f3ee1c63..0e8cf43a 100644 --- a/MakefileLocal.mk +++ b/MakefileLocal.mk @@ -37,7 +37,11 @@ APP_LOAD_PARAMS += $(COMMON_LOAD_PARAMS) ifeq ($(TARGET_NAME),TARGET_NANOS) ICONNAME=icon_fio_nanos.gif else - ICONNAME=icon_fio_nanox.gif + ifeq ($(TARGET_NAME),TARGET_STAX) + ICONNAME=icon_fio_stax.png + else + ICONNAME=icon_fio_nanox.gif + endif endif ############ @@ -179,7 +183,7 @@ include $(BOLOS_SDK)/Makefile.rules dep/%.d: %.c Makefile listvariants: - @echo VARIANTS COIN fio + @echo VARIANTS COIN FIO ############## # Style # diff --git a/MakefileSpeculos.mk b/MakefileSpeculos.mk index 060b4f83..885f4551 100644 --- a/MakefileSpeculos.mk +++ b/MakefileSpeculos.mk @@ -15,7 +15,7 @@ # limitations under the License. #******************************************************************************* -SPECULOS_IMAGE = speculos:sha-d6dee99 +SPECULOS_IMAGE = speculos:sha-6a34680 define run_announce @perl -e 'use Time::HiRes; use POSIX; $$ts = sprintf qq[%f], Time::HiRes::time(); ($$f) = $$ts =~ m~(\....)~; printf qq[%s%s %s make: %s\n], POSIX::strftime("%H:%M:%S", gmtime), $$f, q[-] x 126, $$ARGV[0];' "$(1)" diff --git a/icon_fio_stax.png b/icon_fio_stax.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cdc734ae4c99ad075517f4da81f4237eb718d1 GIT binary patch literal 1259 zcmbVLTWB0r7#>|~%Qi9AmnPz6m^`SobD!*7$To>PyLL-And~kY2@5%M=4^II=Hkqx zyUFf8v~3Kky}C7wxkqeAF|2WHMW z|M|cF|Nh%c#`rV6$%m5!LGqWei@wX#^|N6?Y&+#@8Wv8N&SB>f*K*X5knTX6g zU=|e-uoj=ch=vIwamX%DMN@@?8uT0n#5zpF@iCephDRDcfO9A!O*Ct}Y3lZ;=P1&) z($up<1+L&{P|e=I6rj@5co{CuLDiy0_L0L44I6M!1jvRn?}l0bz&@}gw0w?e+C$YRlbDSosnk12(MPYY=Rn>}m zuHy{f(o`*qe2r!6^*U1*884V+c~w-RaKS-tl-JV~eqk)z(qu_gB_NnImjWU!DS}0VAw{7@ zRS{7N0u=$FYiBEbR^f9wK9`l0Oor#PSyk1C6n;#U^h{1va+}z^8%Dr|sO#ItzB^d` zu2?M-AP{*$+4JVRZD7>A$O~(pPYMDfkxv!?wB1-rbDB#QH zFd-LDP=H6}$7_FF!eho62g}*X$;no$Wf+EOn(cNQLfC9JOQq8E^mG`82%#VdY}=lg zn5a}L7__|mEg5eQM#b^c+J6^ueXufs-#*IgW97!Rm#C2uo$v4!;@B1_P z-pcQv^_G9F9N7MoQ#jc&nlrC_xa(H(yJHW*(v7|!J~+{{+;`yJ!#9sU_NwfRp4@3Q zSKnM+ezAT0ozoZpdgR2+j``PD`-uy8=5BqTNHJ%UiP1sh)ScGI@xI>kH^1H{|9thA eeeb_bB#0y5FgG5Zyz(5TPvo=X`l+X9j{FU-XQ^EP literal 0 HcmV?d00001 diff --git a/icon_fio_stax_large.png b/icon_fio_stax_large.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc3a5d7d916ae4a5a6dc607665a8dcbc0ae79dc GIT binary patch literal 1527 zcmbVLeQXnD7{6|OOg6&U#>YsM%hmBAT<_XmyWX*~jQYi+M7%Ks!$S-mL zb%fX&;0COJ%jQ8)fFP++!Q)lD&QgXKLmD=rqlt$i5RD)Oh4Bc>ZvqO+ff^xf#(p~9 zhoOSsj8z$&q%%?sfiu0}X_L!lLm|ZCGaFW^CLp1J4OD zfuZ9n$|f^5LCWiNp~a#EP@{&#d6G1u`LxE*axBkrD^VS((-I^_Xepc|89mKV6gs&u z=uYwn7`N3v=?vb?SWrIj_{0bs-Q|99A<1Uo?Kf&(HxKm7h=Q za4NtVad_0?CL?FU^#-GXGV*`~6q&R$72amj+U;6<5oIba)@p4wnzkBD+9Ew=Ew<}T zc3l$d2+Il^=0Vc80DVtl>APZ?VhON{D0xJ&HrWQQps0v)P>i5DorXe}Iayu^CnU=g zRhkIe3M3&4{B}tUq2p<0gefQlj0Q-TCUJ_@8*qxFNSrltH10Rj6va{j)}W`cNxc96 zrjLN6h(xdat9Ozj*pP|iol$_7JHrIRaDpT_D!PN}D{#z6SEF$L?SI(E_oPYJfLr-3B zPj^2vJ<^1aayjjvo?7?Na8*h0>*mANThIKmV46?$l3_zn+f}wcn>Kg1W~%dcoZ7bU zVe0h@X(P*`slIP(FQug{ow0Rnzcth!UD9KFZ_)0>C%FR8!L2Rdc#mdwt}7B-&gxNn zw&mtqxA6WwFBHCix;0qt?ojQb=WbrT9h}_G&qdpPuJ+e%VTB(pPPcTgxGK!7IS^m< zmGj8VrnEui^CPl>cqQws)IF`ENXsrnZ2hM@8}FSl^w{&6bC{J&#!@}?!JOE^c;7(l6C;j{qw{}%p!eMH;H>YLzG-A{T&&9*?F73lqtipV-qOc=QkV^EH_p3w zvTU*IbkF>2s*yn69Lw;RZF|psm@_o}*v>EP8`FcDJ;U3cT5#ZvO3U%wPnI{|u#Mca z|GD{Nf3`$zzp8#Vzx!x&Hd@sbOCNYzxDr!0)0XwuZ Date: Wed, 17 Jan 2024 15:56:54 +0100 Subject: [PATCH 83/83] ledger_app.toml: Initial version --- ledger_app.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ledger_app.toml diff --git a/ledger_app.toml b/ledger_app.toml new file mode 100644 index 00000000..adc922d3 --- /dev/null +++ b/ledger_app.toml @@ -0,0 +1,5 @@ +[app] +build_directory = "./" +sdk = "C" +devices = ["nanos", "nanox", "nanos+"] +